使用标签控制对 IAM 用户和角色的访问以及他们进行的访问
可以使用以下部分中的信息控制谁可以访问您的 IAM 用户和角色以及您的用户和角色可以访问哪些资源。有关控制对其他 Amazon 资源(包括其他 IAM 资源)的访问的更多一般信息和示例,请参阅 Amazon Identity and Access Management 资源的标签。
注意
有关标签键和标签键值区分大小写的详细信息,请参阅 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 权限。
注意
您也可以在代入 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
"]}} }] }