AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 IAM 标签控制访问

利用 IAM 标签,您能够以密钥–值对的形式向用户或角色添加自定义属性。有关 IAM 标签的更多信息,请参阅标记 IAM 实体。您可以在 AWS 中使用标签控制权限。也就是说,您可以控制用户或角色可以执行的操作或可以对用户或角色资源执行的操作。

要使用标签控制访问,您必须了解 AWS 如何授予访问权限。AWS 由资源 集合组成。IAM 用户是一种资源。Amazon S3 存储桶是一种资源。在使用 AWS API、AWS CLI 或 AWS 管理控制台 执行操作(如创建用户)时,您将为该操作发送一个请求。您的请求指定操作、资源、委托人实体(用户或角色)、委托人账户 以及所需的任何请求信息。所有这些信息提供了上下文

然后,AWS 检查是否对您(委托人实体)进行身份验证(登录)和授权(具有权限),以便对指定的资源执行指定的操作。在授权期间,AWS 检查应用于请求上下文的所有策略。大多数策略作为 JSON 文档存储在 AWS 中,并指定委托人实体的权限。有关策略类型和用法的更多信息,请参阅策略和权限

只有在策略允许请求的每个部分时,AWS 才会授权该请求。要查看示意图和详细了解 IAM 基础设施,请参阅了解 IAM 的工作方式。有关 IAM 如何确定是否允许请求的详细信息,请参阅策略评估逻辑

标签可能会使此过程变得复杂,因为标签可以附加到资源、传入请求 或附加到发出请求的委托人。要基于标签控制访问,您需要在策略的条件元素中提供标签信息。

当您创建 IAM 策略时,可以使用 IAM 标签和关联的标签条件键来控制对以下任一操作的访问:

  • 资源 – 基于这些资源上的标签控制对用户或角色的访问。为此,请使用 iam:ResourceTag/key-name 条件键根据附加到 IAM 资源的标签确定是否允许访问该资源。

  • 请求 – 控制哪些标签可以传入 IAM 请求。为此,请使用 aws:RequestTag/key-name 条件键来指定可在 IAM 用户或角色中添加、更改或删除的标签。

  • 委托人 – 根据附加到发出请求的人员(委托人)的身份控制该人员可执行的操作。为此,请使用 aws:PrincipalTag/key-name 条件键指定在允许请求之前必须将哪些标签附加到委托人。

  • 授权过程的任何部分 – 使用 aws:TagKeys 条件键来控制是否可以对资源、请求或委托人使用特定的标签键。在此情况下,值无关紧要。

您可以通过可视化方式创建 IAM 策略,也可以使用 JSON,或通过导入现有托管策略来创建。有关详细信息,请参阅 创建 IAM 策略

控制对资源的访问

您可以在 IAM 策略中使用标签来控制对 IAM 用户和角色的访问。但是,由于 IAM 不支持组的标签,因此您不能使用标签来控制对组的访问。

此示例显示您可以如何创建策略 允许删除具有 status=terminated 标签的用户。要使用此策略,请将示例策略中的红色斜体文本替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringLike": {"iam:ResourceTag/status": "terminated"}} }] }

此示例显示您可以如何创建策略 允许编辑所有具有 jobFunction = employee 标签的用户的标签。要使用此策略,请将示例策略中的红色斜体文本替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:ListUserTags", "iam:TagUser", "iam:UntagUser" ], "Resource": "*", "Condition": {"StringLike": {"iam:ResourceTag/jobFunction": "employee"}} }] }

控制对请求的访问

您可以在 IAM 策略中使用标签来控制可在 IAM 用户或角色中添加、更改或删除哪些标签。

此示例显示您可以如何创建策略 仅允许为具有 department = HRdepartment = CS 标签的用户添加标签。要使用此策略,请将示例策略中的红色斜体文本替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:TagUser", "Resource": "*", "Condition": {"StringLike": {"aws:RequestTag/department": [ "HR", "CS" ]}} }] }

控制对委托人的访问

您可以在 IAM 策略中使用标签来根据附加到发出请求的人员(委托人)的身份控制该人员可执行的操作。

此示例显示您可以如何创建策略 允许具有 tagManager=true 标签的用户管理 IAM 用户、组或角色。要使用此策略,请将示例策略中的红色斜体文本替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": {"StringEquals": {"aws:PrincipalTag/tagManager": "true"}} } ] }

使用标签键控制访问

您可以在 IAM 策略中使用标签来控制特定的标签键是否可用于资源、请求中或由委托人使用。

此示例显示您可以如何创建策略 仅允许从用户中删除具有 project 键的标签。要使用此策略,请将示例策略中的红色斜体文本替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:UntagUser", "Resource": "*", "Condition": {"ForAllValues:StringEquals": {"aws:TagKeys": ["project"]}} }] }