更新时间:2025-12-03 gmt 08:00

基于属性的abac权限管理-j9九游会登录

在华为云统一身份认证服务(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身份中心的。

相关文档

网站地图