目前广泛采用的两种权限模型:基于角色的访问控制(role-based access control RBAC)和基于属性的访问控制(attribute-based access control ABAC)。
什么是RBAC?
比如当用户登录某财务管理系统的时候,允许哪些用户访问编辑哪些菜单,允许访问编辑哪些商品资源等,决定这些权限都取决于用户是哪个角色。
在RBAC,角色通常是指具有某些共同特征的一组人,例如:部门、地点、资历、级别、工作职责等。
在系统初始时Admin根据业务需要创建多个拥有不同权限组合的不同角色,如角色A拥有全部菜单的访问跟编辑权限,角色B只有菜单A的访问编辑权限无其他菜单的编辑权限。当需要赋予某个用户权限的时候,把用户归到相应角色里即可赋予符合需要的权限。
什么是ABAC?
ABAC访问控制利用了一组称为 “属性 “的特征。这包括用户属性、环境属性和资源属性。
用户属性:包括如用户的姓名、角色、组织、ID 和安全许可等内容。
环境属性:包括如访问时间、数据的位置和当前组织的威胁等级。
资源属性:包括如创建日期、资源所有者、文件名和数据敏感性。
可以根据业务需求制定不同的访问控制策略。如可以指定财务部门的人员可以在工作日上班时间并且在办公网络访问系统,若属于财务部门的人员使用办公网络但不在办公时间访问则增加进一步的鉴权验证,若属于财务部门的人员不在办公时间访问且非使用办公网络则拒绝访问。
RBAC和ABAC的区别
RBAC与ABAC之间的主要区别在于方法授予访问权限的方式。 RBAC按照角色授予访问权限,ABAC可以根据用户特征,对象特征,操作类型等属性确定访问权限。
RBAC优缺点:
优点:
RBAC 模型构建起来更加简单,对于中小型组织,维护角色和授权关系的工作量不大,反而定制各种策略相对麻烦,更容易接受RBAC授权模型。
缺点:
对于大型组织,基于RBCA的控制模型需要维护大量的角色和授权关系,且无法做到对资源细粒度地授权。
ABAC优缺点:
优点:
对于大型组织,基于RBCA的控制模型需要维护大量的角色和授权关系,相比而言,ABAC更加灵活。
新增资源时,ABAC仅需要维护较少的资源,而RBAC需要维护所有相关的角色,ABAC可扩展性更强、更方便。
ABAC 有更加细粒度控制和根据上下文动态执行,RBAC只能基于静态的参数进行判断。
缺点
模型构建相对比较复杂。