本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
限制对具有特定暂存标签的密钥的访问 (ABAC)
在所有上述示例中,您只通过名称或 ARN 显式标注操作、资源和委托人。您还可以优化访问以仅包含元数据包含特定标签键和值的密钥,或者包含具有特定标签的密钥。
您可以将标签附加到 IAM 委托人(用户或角色)和 AWS 资源。然后,您可以定义策略,这些策略使用标签条件键来根据委托人的标签向其授予权限。当您使用标签控制对 AWS 资源的访问时,您可以允许团队和资源通过对 AWS 策略进行较少的更改来扩展。ABAC 策略比传统 AWS 策略更灵活,这需要您列出每个单独的资源。
例如,您可以创建具有 access-project
标签键的三个角色。将第一个角色的标签值设置为 Heart
,第二个设置为 Sun
,第三个设置为 Lightning
。 然后,您可以使用一个策略,该策略允许您在为角色和资源添加 access-project
的相同值时访问。
要为您的密钥实施 ABAC,请遵循本教程: IAM 教程: 定义权限以基于标签访问 AWS 资源。
示例:向包含具有特定标签键和值的元数据的密钥授予权限
在附加到用户、组或角色时,以下策略允许用户对当前账户中的任何密钥使用 DescribeSecret
,该密钥具有包含带有键“ServerName”和值“ServerABC”的标签的元数据。
通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/
选择创建策略并添加以下代码:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/ServerName": "ServerABC" } } } ] }
示例:向具有特定暂存标签的密钥版本授予权限
在附加到用户、组或角色时,以下策略允许用户对名称以 Prod
开头的任何密钥(仅附加了 AWSCURRENT
暂存标签的版本)使用 GetSecretValue
。
通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/
选择创建策略并添加以下代码:
{ "Policy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecret", "Resource": "arn:aws:secretsmanager:*:*:secret:Prod*", "Condition": { "ForAnyValue:StringEquals": { "secretsmanager:VersionStage": "AWSCURRENT" } } } ] } }
由于一个密钥版本可以附加多个暂存标签,因此,您需要使用 IAM 策略语言的集合运算符比较这些标签。在前面的示例中,ForAnyValue:StringLike
声明如果附加到正在评估的版本的任一暂存标签与字符串 AWSCURRENT
匹配,则该语句匹配并应用 Effect
。