基于资源的策略 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

基于资源的策略

每个 Secrets Manager 密钥可以附加一个基于资源的权限策略(密钥策略)。作为将基于身份的策略用于 IAM 角色的替代方案,您可以使用密钥策略授予跨账户权限。例如,您可以通过以下方法为账户 B 中的用户授予权限以访问账户 A 中的密钥:在密钥策略中添加权限并将账户 B 中的用户指定为 Principal,而不是创建 IAM 角色。

以下示例介绍了具有一个语句的 Secrets Manager 密钥策略。该语句允许账户 123456789012 的管理员向该账户中的用户和角色委派权限。该策略限制管理员可以向名为“prod/ServerA-a1b2c3”的单个密钥的 secretsmanager:GetSecretValue 操作委派的权限。该条件确保用户只能检索密钥的当前版本。

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root" }, "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<account_id>:secret:prod/ServerA-a1b2c3", "Condition": { "ForAnyValue:StringEquals": { "secretsmanager:VersionStage" : "AWSCURRENT" } } } ] }
重要

在一个账户中的 IAM 委托人访问另一个账户中的密钥时,必须使用自定义 AWS KMS CMK 对密钥进行加密。使用账户的默认 Secrets Manager CMK 加密的密钥只能由该账户中的委托人进行解密。来自其他账户的委托人必须被授予对密钥和自定义 AWS KMS CMK 的权限。

作为替代方案,您可以向用户授予跨账户访问权限,以在密钥所在的同一账户中担任 IAM 角色。由于角色在与密钥相同的账户中存在,因此,角色可以访问使用账户的默认 AWS KMS 密钥加密的密钥。

因为密钥版本可以附加多个暂存标签,所以您需要使用 IAM 策略语言的集合运算符在策略中比较它们。在上一个示例中,ForAnyValue:StringLike 声明如果附加到正在评估的版本的任一标签与“AWSCURRENT”匹配,则该语句匹配并应用 Effect

有关更多使用 Secrets Manager 的基于资源的策略示例,请参阅使用 Secrets Manager 的基于资源的策略。有关使用基于资源的策略而非 IAM 角色 (基于身份的策略) 的其他信息,请参阅 IAM 用户指南 中的 IAM 角色与基于资源的策略有何不同