有奖捉虫:云通信与企业服务文档专题,速来> HOT

ABAC 简介

什么是 ABAC

ABAC(Attribute-Based Access Control)是基于属性的访问控制授权策略,该策略使用属性来定义权限。在腾讯云中,使用标签来代表该属性。 在腾讯云中创建资源时,您可以将标签附加到资源中,来标记资源(查看 支持标签的产品)。在为角色授权时,您可以创建单个 ABAC 策略,将策略设计为角色请求的标签与资源标签匹配时允许操作。ABAC 在资源变化频繁的环境中非常有用,在策略管理变得繁琐的情况下帮助您提升管理效率。

假设有三个项目 GroupA、GroupB 和 GroupC,分别有开发员工 a、b、c,您可以通过以下步骤管理员工资源访问权限:
1. 为三个员工分别创建标签键为 GroupA、GroupB、GroupC 的三个CAM子用户,标签值为 dev,并为三个子用户授予 assumeRole 的权限。
2. 创建开发角色,角色对应的标签的值为 dev。
3. 使用单个策略,允许访问三个项目下的资源,将策略附加给创建好的角色。
4. 员工通过 CAM 子用户代入角色来访问,当员工的标签键和资源的标签值相同时,允许访问。




ABAC 与传统授权方式对比

在 CAM 中,您通过为不同工作岗位的员工创建不同策略来管控权限,然后,您可将策略附加到 CAM 角色。按照 最佳实践,您在为员工授予所需的最小权限时,通常通过在策略中指定可以访问的具体资源来实现。这种方式的缺点在于,当员工需要添加访问新的资源时,就必须更新策略来允许访问这些资源。
假设有三个项目 GroupA、GroupB 和 GroupC,每个项目的资源不同,两种授权方式的对比如下:
授权方式
ABAC 授权
传统授权
三个项目相同岗位的授权
1. 三个子用户
2. 一个角色
3. 两个策略(三个子用户共用一个角色切换策略,一个角色一个权限管理策略)
1. 三个子用户
2. 三个角色
3. 六个策略(每个子用户一个角色切换策略,每个角色一个权限管理策略)
单个项目添加/减少资源
无需调整授权策略
调整角色对应的权限管理策略
增加新的项目
只需要创建新的子用户
需要创建新的子用户、角色以及关联的两个策略

ABAC 授权的优势

使用 ABAC 管理资源访问权限具备以下优势:

自动扩展资源权限

支持权限随着资源的变更自动扩展,不再需要管理员更新现有策略来允许访问新的资源。
例如:假设您使用 access-project 标签附加到 ABAC 策略。开发人员使用access-project = GroupA 的标签来访问资源。当GroupA项目中的员工需要额外的 CVM 云服务器资源时,开发人员可以使用 access-project = GroupA 标签创建新 CVM 实例。创建后,GroupA 项目中的任何授权员工可以启动和停止这些实例,因为 GroupA 项目的员工对应角色的标签与资源的标签匹配。

减少策略数量

可以减少策略的数量,不再需要为不同项目的相同岗位员工创建不同策略,因此创建的策略数量减少,更易于管理。

方便后续扩展策略

如果有新的项目,可以快速基于已有策略进行扩展。
例如:您已经使用管理资源访问权限的支持项目 GroupA 和 GroupB,这时可以快速支持新增项目 GroupD。CAM 管理员可以创建 GroupD 对应的新的子用户,并赋予 GroupD 对应的标签,然后为子用户授予切换角色的策略,这时有权限代入该角色的员工都可以访问具有 access-project = GroupD 标签资源。

实现精细权限控制

在您创建策略时,最佳实践是授予最小权限。使用传统授权方式,您必须编写一个策略,仅允许访问特定资源。但是,如果使用 ABAC,您可以允许在所有资源上的操作,但仅在资源标签与委托人标签匹配时可以访问该权限。