如何管理 Secrets Manager 密钥访问的 IAM 权限?

2 分钟阅读
0

我想使用基于身份的 AWS Identity and Access Management (IAM) 策略来控制对 AWS Secrets Manager 密钥的访问权限。

解决方案

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

在以下基于身份的策略或 AWS CLI 命令中,必要时将这些值替换为您的值:

  • YOUR-REGION 替换为您的 AWS 区域
  • YOUR-ACCOUNT-ID 替换为您的 AWS 账户 ID
  • YOUR-SECRET_NAME 替换为您的 Secrets Manager 密钥的名称
  • your-secrets-policy.json 替换为您的 Secrets Manager JSON 文件
  • YOUR-IAM-USER-NAME 替换为您的 IAM 用户名
  • YOUR_IAM_ROLE_NAME 替换为您的 IAM 角色名称
  • YOUR-TAG-VALUE 替换为您的标签值

使用 IAM 控制台

使用 JSON 编辑器创建 IAM 策略。以下是您可以创建的用于授予或限制对密钥的访问权限的 IAM 策略的示例。

授予创建密钥的访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:CreateSecret"
            ],
            "Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:ListSecrets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

授予修改现有密钥的访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:RestoreSecret",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage",
                "secretsmanager:DeleteSecret",
                "secretsmanager:RotateSecret",
                "secretsmanager:CancelRotateSecret",
                "secretsmanager:UpdateSecret"
            ],
            "Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:ListSecrets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]

对于使用 AWS Key Management Service (AWS KMS) 托管密钥加密的密钥,授予读取密钥的访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
        },
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:YOUR-REGION:YOUR-ACCOUNT-ID:key/key_id"
        }
    ]
}

使用标签控制对密钥的访问权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
    "Effect": "Allow",
    "Action": "secretsmanager:DescribeSecret",
    "Resource": "*",
    "Condition": {
      "StringEquals": {
        "secretsmanager:ResourceTag/tag-key": "YOUR-TAG-VALUE"
      }
    }
   }
  ]
 }

显式拒绝 GetSecretValueDescribeSecret 操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
        }
    ]
}

将上述任何策略附加为托管策略或内联策略

使用 AWS CLI

将上述任何 IAM 策略另存为 your-secrets-policy.json

运行 create-policy 命令以创建策略:

aws iam create-policy —policy-name CreateSecret —policy document fileb://create_secret.json

运行 attach-user-policy 命令以将策略附加到 IAM 用户:

aws iam attach-user-policy —policy-arn arn:aws:iam::YOUR-ACCOUNT-ID:policy/CreateSecret —user-name YOUR-IAM-USER-NAME

-或-

运行 attach-role-policy 命令以将策略附加到 IAM 角色:

aws iam attach-role-policy —policy-arn arn:aws:iam::YOUR-ACCOUNT-ID:policy/CreateSecret —role-name YOUR-IAM-ROLE-NAME

相关信息

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

AWS 官方
AWS 官方已更新 7 个月前