使用标签控制对 IAM 用户和角色的访问以及他们进行的访问 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

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

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

  • 资源 – 根据用户或角色资源的标签控制对它们的访问。为此,请使用 aws:ResourceTag/key-name 条件键指定必须将哪个标签键值对附加到资源。有关更多信息,请参阅控制对 Amazon 资源的访问

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

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

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

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

控制 IAM 委托人进行的访问

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

此示例显示您可能创建 IAM 策略的方式。 允许此账户中的任何用户查看任何用户(包括他们自己)的组成员资格,只要他们处理的是同一个项目。只有在用户的资源标签和委托人的标签具有相同的标签键project 值时,才允许执行该操作。要使用此策略,请将示例策略中的斜体占位符文本替换为您自己的信息。然后,按照创建策略编辑策略中的说明操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "iam:ListGroupsForUser", "Resource": "arn:aws:iam::111222333444:user/*", "Condition": { "StringEquals": {"aws:ResourceTag/project": "${aws:PrincipalTag/project}"} } }] }

根据标签键控制访问

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

此示例显示您可能创建 IAM 策略的方式。以仅允许从用户中删除具有 temporary 键的标签。要使用此策略,请将示例策略中的斜体占位符文本替换为您自己的信息。然后,按照创建策略编辑策略中的说明操作。

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