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

使用 IAM 资源标签控制对 IAM 用户和角色的访问以及他们进行的访问

可以使用以下部分中的信息控制谁可以访问您的 IAM 用户和角色以及您的用户和角色可以访问哪些资源。有关控制对其他 AWS 资源的访问的更多一般信息和示例,请参阅使用资源标签控制对 AWS 资源的访问

可以将标签附加到 IAM 资源,在请求 中传递标签,或者将标签附加到发出请求的委托人。IAM 用户或角色可以同时是资源和委托人。例如,您可以编写一个策略以允许用户列出用户的组。只有在发出请求的用户(委托人)具有与他们尝试查看的用户相同的 project=blue 标签时,才允许执行该操作。在该示例中,用户可以查看任何用户(包括他们自己)的组成员资格,只要他们处理的是同一个项目。

要基于标签控制访问,您需要在策略的条件元素中提供标签信息。在创建 IAM 策略时,您可以使用 IAM 标签和关联的标签条件键控制对任何以下内容的访问:

  • 资源 – 根据标签控制对用户或角色资源的访问。为此,请使用 iam:ResourceTag/key-name 条件键指定必须将哪个标签键值对附加到资源。对于其他 AWS 资源,将使用类似的服务特定键,例如 ec2:ResourceTag。有关更多信息,请参阅 控制对 AWS 资源的访问

  • 请求 – 控制哪些标签可以传入 IAM 请求。为此,请使用 aws:RequestTag/key-name 条件键来指定可在 IAM 用户或角色中添加、更改或删除的标签。对于 IAM 资源和其他 AWS 资源,将按相同的方式使用该键。有关更多信息,请参阅 在 AWS 请求期间控制访问

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

  • 授权过程的任何部分 – 使用 aws:TagKeys 条件键来控制是否可以对资源、请求或委托人使用特定的标签键。在这种情况下,键值无关紧要。对于 IAM 资源和其他 AWS 资源,该键的行为是类似的。不过,在 IAM 中标记用户时,这还会控制委托人是否可以向任何服务发出请求。有关更多信息,请参阅 根据标签键控制访问

您可以使用可视化编辑器或 JSON 创建 IAM 策略,也可以导入现有的托管策略以创建该策略。有关详细信息,请参阅 创建 IAM 策略

控制对 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 策略中使用标签以控制可以在 IAM 请求中传递哪些标签。您可以指定可以在 IAM 用户或角色中添加、更改或删除哪些标签键值对。

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

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

控制 IAM 委托人进行的访问

通过使用 IAM 标签,您可以根据附加到委托人身份的标签来控制允许该人员执行哪些操作。

此示例显示您可以如何创建策略以允许委托人启动或停止 Amazon EC2 实例。只有在实例的资源标签和委托人的标签具有相同的标签键 cost-center 值时,才允许执行该操作。要使用此策略,请将示例策略中的红色斜体文本替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "ec2:startInstances", "ec2:stopInstances" ], "Resource": "*", "Condition": {"StringEquals": {"ec2:ResourceTag/costcenter": "${aws:PrincipalTag/cost-center}"}} } }

根据标签键控制访问

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

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

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