如何使用基于资源的策略控制对 AWS Secrets Manager 密钥的访问?
简短描述
使用基于资源的策略,您可以指定用户对密钥的访问权限以及 AWS Identity and Access Management (IAM) 用户可以执行的操作。
**注意:**密钥被定义为 Secrets Manager 中的资源。
基于 Secrets Manager 资源的策略的常见用例是:
在这一基于资源的示例策略中,IAM 元素 Effect 用于指定该语句会导致允许还是显式拒绝。IAM Action 元素用于定义使用密钥执行的操作。IAM Resource 元素是策略附加到的密钥。IAM Principal 元素用于指定有权使用密钥执行操作的用户。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:*",
"Principal": {"AWS": "arn:aws:iam::123456789999:user/Mary"},
"Resource": "*"
}
]
}
解决方法
按照以下说明在 Secrets Manager 中应用基于资源的策略:
注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
1. 按照创建密钥的相关说明执行操作。记下密钥 ARN。
2. 将此策略复制并粘贴到您常用的文本编辑器中,然后将其另存为 JSON 文件,如 my_explicit_deny_policy.json。
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "secretsmanager:GetSecretValue",
"Principal": {"AWS": "arn:aws:iam::123456789999:user/Mary"},
"Resource": "*"
}
]
}
3. 使用 AWS CLI 命令put-resource-policy 对密钥应用资源策略,以显式拒绝 IAM 用户 Mary 检索密钥值。
aws secretsmanager put-resource-policy --secret-id My_Resource_Secret --resource-policy file:// My_explicit_deny_Policy.json
4. 您会收到类似如下内容的输出:
{
"ARN": "arn:aws:secretsmanager:<your region>:123456789999:secret:My_Resource_Secret",
"Name": "My_Resource_Secret"
}
注意:仅当您使用 AWS KMS 密钥加密您的密钥时,才需要 AWS Key Management Service (AWS KMS) 解密权限。如果密钥由原定设置 AWS KMS 密钥加密,则第三方账户中的 IAM 委托人无法检索到密钥。
有关更多信息,请参阅使用 Secrets Manager 的基于资源的策略。