限制对具有特定暂存标签的密钥的访问 (ABAC) - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

限制对具有特定暂存标签的密钥的访问 (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