什么是适用于 Amazon 的 ABAC? - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

什么是适用于 Amazon 的 ABAC?

基于属性的访问权限控制 (ABAC) 是一种授权策略,该策略基于属性来定义权限。在 Amazon 中,这些属性被称为“标签”。您可以将标签附加到 IAM 资源(包括 IAM 实体(用户和角色))以及 Amazon 资源。您可以为 IAM 委托人创建单个 ABAC 策略或者一小组策略。这些 ABAC 策略可设计为在主体的标签与资源标签匹配时允许操作。ABAC 在快速增长的环境中非常有用,并在策略管理变得繁琐的情况下可以提供帮助。

例如,您可以创建具有 access-project 标签键的三个角色。将第一个角色的标签值设置为 Heart,第二个为 Star,第三个为 Lightning。然后,您可以使用单个策略,在角色和资源标记了 access-project 的相同值时允许访问。有关演示如何在 Amazon 中使用 ABAC 的详细教程,请参阅IAM 教程:根据标签定义访问 Amazon 资源的权限。要了解支持 ABAC 的服务,请参阅 使用 IAM 的Amazon服务


         ABAC 模型

ABAC 与传统 RBAC 模型的对比

IAM 中使用的传统授权模型称为基于角色的访问控制 (RBAC)。RBAC 根据用户的工作职能定义权限,在 Amazon 之外称为角色。在 Amazon 中,角色通常是指 IAM 角色,它是您可以代入 IAM 中的身份。IAM 确实包含任务函数的管式策略,能够将权限分配给 RBAC 模型中的任务函数。

在 IAM 中,您通过为不同工作职能创建不同策略来实施 RBAC。然后,您可将策略附加到身份(IAM 用户、用户组或 IAM 角色)。作为最佳实践,您向工作职能授予所需的最小权限。这称为授予最小权限。通过列出工作职能可以访问的特定资源来完成此操作。使用传统 RBAC 模型的缺点在于,当员工添加新资源时,您必须更新策略以允许访问这些资源。

例如,假设您的员工在处理三个项目,名为 HeartStarLightning。您可以为每个项目创建一个 IAM 角色。然后,您将策略附加到各个 IAM 角色,定义允许代入该角色的任何用户可以访问的资源。如果员工更换了公司中的工作,您可向其分配不同的 IAM 角色。用户或计划可以分配到多个角色。但是,Star 项目可能需要额外的资源,例如新的 Amazon EC2 容器。在这种情况下,您必须更新附加到 Star 角色的策略,来指定新的容器资源。否则,系统将不允许 Star 项目成员访问新的容器。


            RBAC 模型
相比传统 RBAC 模型,ABAC 具备以下优势:
  • ABAC 权限随着创新扩展。它不再需要管理员更新现有策略以允许对新资源的访问。例如,假设您使用 access-project 标签指定了 ABAC 策略。开发人员使用 access-project = Heart 标签的角色。当 Heart 项目中的员工需要额外的 Amazon EC2 资源时,开发人员可以使用 access-project = Heart 标签创建新 Amazon EC2 实例。这样,Heart 项目中的任何员工可以启动和停止这些实例,因为其标签值匹配。

  • ABAC 需要较少的策略。由于您无需为不同工作职能创建不同策略,需要创建的策略数量减少。这些策略更易于管理。

  • 使用 ABAC,团队可以进行更改和扩展。这是因为新资源的权限根据属性自动授予。例如,如果您的公司已经使用 ABAC 支持 HeartStar 项目,则可以轻松地添加新 Lightning 项目。IAM 管理员创建具有 access-project = Lightning 标签的新角色。无需更改策略以支持新项目。有权代入该角色的任何用户可以创建和查看使用 access-project = Lightning 标记的实例。此外,团队成员可以从 Heart 项目转向 Lightning 项目。IAM 管理员将用户分配到不同 IAM 角色。无需更改权限策略。

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

  • 通过 ABAC 使用来自您公司目录的员工属性。您可以配置 SAML 或 OIDC 提供者,以将会话标签传递给 Amazon。当您的员工希望联合身份到 Amazon 中时,其属性将应用到 Amazon 中所得到的主体。然后,您可以使用 ABAC 来允许或拒绝基于这些属性的权限。

有关演示如何在 Amazon 中使用 ABAC 的详细教程,请参阅IAM 教程:根据标签定义访问 Amazon 资源的权限