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

1 分钟阅读
0

我想使用基于资源的策略来控制对 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 中应用基于资源的策略,请完成以下步骤:

  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 为密钥附加一个资源策略,以明确拒绝密钥值检索:

    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

AWS 官方
AWS 官方已更新 1 年前