基于属性的ABAC权限管理
在华为云统一身份认证服务(IAM)中,授权是确保正确主体拥有正确访问权限的关键。两种主要的授权策略是基于属性的访问控制(ABAC)和基于角色的访问控制(RBAC)。了解这两种模型的区别可以帮助您设计更安全、更高效的访问控制方案。
概念定义
- 基于属性的访问控制(ABAC): ABAC是一种附加到IAM身份(如IAM用户)和基于属性(Attributes)来定义权限的授权策略。ABAC 基于主体、资源、操作、环境等属性,通过策略实时评估多个属性组合来决策是否授权。例如,您可以规定只有当用户拥有“Project=Alpha”标签时,才能访问同样拥有标签为“Project=Alpha”的资源。
- 基于角色的访问控制(RBAC): RBAC是一种基于用户在组织中担任的职能或角色来定义权限的策略。在IAM中,这意味着为不同的工作职能创建不同的策略或利用华为云预制角色,并将这些策略附加到IAM身份(如IAM用户)并约束其授权范围(如某个项目)。例如,你可以为某容器管理员用户授予华为云预制的CCE Administrator角色, 并约束其授权仅在项目Alpha下生效。
例如, 您的员工分别需要在三个项目Alpha、Beta、Gamma上工作,且需要访问ECS资源,您可以选择ECS Administrator角色进行授权,并限制授权范围分别为项目Alpha,项目Beta及项目Gamma。这样您的员工将只能在授权范围内的项目中,根据您授权的角色权限来访问云服务资源。如果员工的工作发生变化,需要额外访问CCI提供的容器能力,或用户C需要访问归属于项目Beta的资源时,您必须创建新的角色授权关系,并更新授权范围,否则将无法满足调整后的资源访问诉求。

核心差异
特性 |
基于角色的访问控制 (RBAC) |
基于属性的访问控制 (ABAC) |
---|---|---|
授权关系 |
身份-角色-授权范围 |
身份-策略 |
授权基础 |
基于预定义的角色和职能 |
基于身份、资源、环境等的动态属性 |
策略数量 |
随着职能和资源增加,通常需要更多的策略 |
通常需要更少的策略,因为策略是基于属性而非具体主体 |
扩展性 |
新增资源或职能时,可能需要手动更新现有策略 |
权限可随新资源自动扩展,无需修改现有策略 |
权限粒度 |
通常授予对特定资源的访问权限 |
允许基于属性授权,支持更为丰富的条件控制属性 |
管理复杂度 |
在大型或快速变化的环境可能变得复杂 |
简化了新项目或人员变动时的权限管理 |
ABAC相对于RBAC的优势
- 动态响应变化与增长:对于新资源的权限,只要属性匹配,便会自动授予,无需手动将策略分配给身份。这极大地简化了新项目启动或团队成员调动时的权限管理。
- 更细粒度的权限控制:ABAC允许使用基于主体、资源、操作、环境上下文的属性,从而实现更细粒度的控制。
- 策略数量更少,管理更简单:ABAC通常需要更少的策略。您无需为每个工作职能创建单独的策略,从而使策略更容易管理和维护。
- 与企业身份供应商集成:ABAC允许您在使用外部身份供应商(IdP)时, 将员工在IdP上的属性映射至IAM的身份标签(通过IAM身份中心), 并在策略中基于这些标签进行访问控制。详情参考IAM身份中心的ABAC概述和配置流程。