本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在IAM权限策略中使用标签
Amazon Identity and Access Management (IAM) 是您 Amazon Web Services 服务 用来创建和管理权限策略,用于确定谁可以访问您的 Amazon 资源。每次访问 Amazon 服务或读取或写入 Amazon 资源的尝试都受到IAM策略的控制。
这些策略允许您对资源进行精细访问。您可以使用其中的特征微调此访问权限,即策略的 Condition
元素。可通过该元素指定必须与请求匹配的条件,以确定请求是否可以继续。您可以使用 Condition
元素检查以下内容:
-
附加到发出请求的用户或角色的标签。
-
附加到作为请求对象的资源上的标签。
标签和基于属性的访问控制
标签可能是您的 Amazon 访问控制策略的重要组成部分。有关在基于属性的访问控制 (ABAC) 策略中使用标签作为属性的信息,请参阅《用户指南》中的 “使用标签控制对 Amazon 资源的访问” 和 “使用标签控制IAM用户和角色的访问权限” IAM。
如果您使用SAML基于身份提供商 (IdP) 进行单点登录,则可以将标签附加到为用户提供访问权限的代入角色。有关更多信息,请参阅《Amazon Identity and Access Management 用户指南》ABAC中的IAM教程:使用SAML会话标签。
与标签相关的条件密钥
下表描述了可以在IAM权限策略中使用的条件密钥,根据标签控制访问权限。通过这些密钥,您可执行以下操作:
-
比较调用操作的主体上的标签。
-
比较作为参数提供给操作的标签。
-
比较操作将访问的资源所附的标签。
有关条件键及其使用方法的详细信息,请参阅条件密钥名称列中链接的页面。
条件密钥名称 | 描述 |
---|---|
将附加到发出请求的委托人(IAM角色或用户)的标签与您在策略中指定的标签进行比较。 |
|
aws:RequestTag | 将请求中作为参数传递的标签密钥/值对与您在策略中指定的标签密钥/值对进行比较。 |
将附加到资源的密钥/值对与您在策略中指定的标签密钥/值对进行比较。 |
|
aws:TagKeys | 只将请求中的标签密钥与您在策略中指定的密钥进行比较。 |
使用标签的IAM策略示例
例 示例 1:强制用户在创建资源时附加特定标签
以下示例IAM权限策略展示了如何强制创建或修改IAM策略标签的用户在密钥Owner
中加入标签。此外,该策略要求将标签的值设置为与调用主体所附加的 Owner
标签相同的值。要使此策略发挥作用,所有主体必须附加 Owner
标签,并且必须阻止用户修改该标签。如果尝试创建或修改策略时未包含 Owner
标签,则策略将不匹配,不允许进行操作。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagCustomerManagedPolicies", "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:TagPolicy" ], "Resource": "arn:aws:iam::123456789012:policy/*", "Condition": { "StringEquals": {"aws:RequestTag/Owner": "${aws:PrincipalTag/Owner}"} } } ] }
例 示例 2:使用标签限制“所有者”对资源的访问权限
以下示例IAM权限策略允许用户停止正在运行的 Amazon EC2 实例,前提是调用委托人使用与该实例相同的project
标签值进行标记。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:StopInstances" ], "Resource": [ "arn:aws:iam::123456789012:instance/*" ], "Condition": { "StringEquals": {"aws:ResourceTag/project": "${aws:PrincipalTag/project}"} } } ] }
此示例是基于属性的访问控制 () ABAC 的示例。有关使用IAM策略实现基于标签的访问控制策略的更多信息和其他示例,请参阅《Amazon Identity and Access Management 用户指南》中的以下主题: