如何对 AWS Secrets Manager 密钥应用基于资源的策略?

上次更新日期:2021 年 2 月 26 日

如何使用基于资源的策略控制对 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 命令行界面 (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"
}

注意:仅当您使用自定义客户主密钥 (CMK) 加密您的密钥时,才需要 AWS Key Management Service (AWS KMS) decrypt 权限。如果密钥由默认 AWS KMS 密钥加密,则第三方账户中的 IAM 委托人无法检索到密钥。

有关更多信息,请参阅使用 Secrets Manager 的基于资源的策略


这篇文章对您有帮助吗?


您是否需要账单或技术支持?