使用标签控制对 IAM 用户和角色的访问以及他们进行的访问 - AWS Identity and Access Management

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

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

注意

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

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

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

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

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

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

  • 授权过程的任何部分 – 使用 aws:TagKeys 条件键来控制是否可以在请求中或通过主体使用特定的标签键。在这种情况下,键值无关紧要。对于 IAM 和其他 AWS 服务,该键的行为是类似的。不过,在 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"]}} }] }