我想使用基于资源的策略来控制对 AWS Secrets Manager 密钥的访问权限。
简短描述
使用基于资源的策略来指定用户对密钥的访问权限以及 AWS Identity and Access Management(IAM)用户可以执行的操作。
**注意:**密钥被定义为 Secrets Manager 中的资源。
您可以在以下常见场景中使用 Secrets Manager 基于资源的策略:
- 在 AWS 账户之间共享密钥。
- 在密钥中添加显式拒绝以强制执行权限。
以下基于资源的策略示例使用了权限、操作、资源和主体元素:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:*",
"Principal": {"AWS": "arn:aws:iam::123456789999:user/Mary"},
"Resource": "*"
}
]
}
解决方法
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新版本的 AWS CLI。
要在 Secrets Manager 中应用基于资源的策略,请完成以下步骤:
-
创建一个密钥,然后记下该密钥的 ARN。
-
将此策略复制并粘贴到文本编辑器中,然后将其另存为 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": "*"
}
]
}
-
运行 AWS CLI 命令 put-resource-policy 为密钥附加一个资源策略,以明确拒绝密钥值检索:
aws secretsmanager put-resource-policy --secret-id My_Resource_Secret --resource-policy file:// My_explicit_deny_Policy.json
您会收到类似于以下内容的输出:
{"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 主体无法检索该密钥。
有关更多信息,请参阅 Attach a permissions policy to an AWS Secrets Manager secret。