更新时间:2025-09-25 GMT+08:00
分享

基于属性的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的资源时,您必须创建新的角色授权关系,并更新授权范围,否则将无法满足调整后的资源访问诉求。

而基于ABAC授权时,您可以编写身份策略,允许特定身份访问带有特定标签的云服务资源(如标签Project=Beta或Gamma),可以通过对身份或者资源的标签进行灵活的访问控制管理,而不需要反复的调整策略或授权关系。
图1 示例

核心差异

表1 核心差异

特性

基于角色的访问控制 (RBAC)

基于属性的访问控制 (ABAC)

授权关系

身份-角色-授权范围

身份-策略

授权基础

基于预定义的角色和职能

基于身份、资源、环境等的动态属性

策略数量

随着职能和资源增加,通常需要更多的策略

通常需要更少的策略,因为策略是基于属性而非具体主体

扩展性

新增资源或职能时,可能需要手动更新现有策略

权限可随新资源自动扩展,无需修改现有策略

权限粒度

通常授予对特定资源的访问权限

允许基于属性授权,支持更为丰富的条件控制属性

管理复杂度

在大型或快速变化的环境可能变得复杂

简化了新项目或人员变动时的权限管理

  1. IAM的策略是一种基于策略的角色(Policy-based role),其授权也遵循身份-角色-授权范围的授权关系,而身份策略遵循身份-策略的授权关系。
  2. IAM的身份策略支持完整的ABAC访问控制条件,包括基于身份,资源,环境等动态属性。相比策略而言,身份策略支持的访问控制条件键更多,详情请参见全局条件键,同时也支持更丰富的策略语法,详情请参见JSON元素参考

ABAC相对于RBAC的优势

  • 动态响应变化与增长:对于新资源的权限,只要属性匹配,便会自动授予,无需手动将策略分配给身份。这极大地简化了新项目启动或团队成员调动时的权限管理。
  • 更细粒度的权限控制:ABAC允许使用基于主体、资源、操作、环境上下文的属性,从而实现更细粒度的控制。
  • 策略数量更少,管理更简单:ABAC通常需要更少的策略。您无需为每个工作职能创建单独的策略,从而使策略更容易管理和维护。
  • 与企业身份供应商集成:ABAC允许您在使用外部身份供应商(IdP)时, 将员工在IdP上的属性映射至IAM的身份标签(通过IAM身份中心), 并在策略中基于这些标签进行访问控制。详情参考IAM身份中心的ABAC概述和配置流程

相关文档