RBAC(Role-Based Access Control),基于角色的权限访问控制。
RBAC支持公认的安全原则:最小特权原则、责任分离原则和数据抽象原则。
最小特权原则得到支持,是因为在RBAC模型中可以通过限制分配给角色权限的多少和大小来实现,分配给与某用户对应的角色的权限只要不超过该用户完成其任务的需要就可以了。
责任分离原则的实现,是因为在RBAC模型中可以通过在完成敏感任务过程中分配两个责任上互相约束的两个角色来实现,例如在清查账目时,只需要设置财务管理员和会计两个角色参加就可以了。
数据抽象原则是借助于抽象许可权这样的概念实现的,如在账目管理活动中,可以使用信用、借方等抽象许可权,而不是使用操作系统提供的读、写、执行等具体的许可权。但RBAC并不强迫实现这些原则,安全管理员可以允许配置RBAC模型使它不支持这些原则。因此,RBAC支持数据抽象的程度与RBAC模型的实现细节有关。
RBAC模型分为4种:
RBAC0:最基本的用户-角色-权限模型
一般情况下,用户与角色,角色与权限都是多对多关系,即一个用户可以对应多个角色,一个角色可以分配给多个用户,一个角色具有多个权限。
RBAC1:在RBAC0的基础上加入了子角色,引入了继承,子角色可以继承父角色的所有权限。
RBAC2:增加了对角色的一些限制:
角色互斥:不能为同一用户分配两个互斥的角色;
基数约束:某一角色对应的用户数量受限,分配得到该角色的用户数不能超过某个特定值,比如公司的副总不能超过多少人;
先决条件角色:要想获得高级别权限,首先得拥有低级别的权限;
运行时互斥:一个用户具有多个角色时,某些角色不可在运行过程中同时激活。
RBAC3:包含了RBAC1和RBAC2,综合了RBAC0、RBAC1、RBAC2的特点。
一个系统的权限大概可分为这几种:
功能权限:指系统的模块、页面、按钮、文本、元素等根据用户所具有的权限决定是否进行显示。
数据权限:指在页面中要显示的数据,针对不同用户显示的数据不同,比如公司的不同部门所能查看的文件列表不同。
操作权限:用户在系统中进行的所有动作、交互。
关于用户组:用户组是在用户量增多,权限维护较为繁琐时加入的概念。在系统中,可以为角色分配权限,再对具体的用户划分角色。也可以将具有同样权限的用户分配到同一用户组中,再对用户组所具有的权限进行统一维护,这样大大减少了权限维护人员的操作,比如按组织机构对应的部门来划分用户组,一个员工从A部门转到B部门,此时只需要将该员工的用户组从A变成B就完成了。
权限限制:下级角色的权限只能从上级角色的权限中进行配置,不能超过上级权限。
在建立角色的时候为角色分配权限,在建立用户的同时为用户分配角色;
在建立用户组的时候为用户组配置权限,再为用户组添加用户。