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

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

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

注意

有关标签键和标签键值区分大小写的详细信息,请参阅 Case sensitivity

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

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

  • Resource(资源)- 根据标签控制对用户或角色资源的访问。为此,请使用 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 policy,也可以导入现有的托管策略以创建该策略。有关详细信息,请参阅创建 IAM policy

注意

您也可以在代入 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 policy 中使用标签来控制是否可以在请求中或通过主体使用特定的标签键。

此示例说明如何创建基于身份的策略,以允许仅从用户删除带有 temporary 密钥的标签。要使用此策略,请将示例策略中的斜体占位符文本替换为您自己的信息。然后,按照创建策略编辑策略中的说明操作。

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