使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

MSK SCRAM KMS Key 最小权限策略

0

【以下的问题经过翻译处理】 我们正在使用注册 Secrets Manager Secrets 进行身份验证的 MSK SCRAM。这确实需要一个单独的对称 KMS key与密钥一起使用。这些密钥需要具有“AmazonMSK_ *”的形式。我们的安全性要求通过关联的 KMS 密钥策略将对该 KMS 密钥的访问权限降至最低权限。

看起来推荐使用Condition变量。链接:https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-services.html

我试图以这种方式使用:

Effect: Allow
Action: 
- kms:CreateGrant
- kms:Encrypt
Resource: "*"
Principal: "*"
Condition: 
     StringLike:
         kms:EncryptionContext:aws:secretsmanager:arn: 
          - "arn.aws.secretsmanager:us-west-2:*:secret:AmazonMSK_*" 

但我得到的是:“Access to KMS is not allowed”。

例如:

 Condition: 
     StringEquals:
         kms:ViaService: "secretsmanager.us-west-2.amazonaws.com"

虽然可以工作,但不够具体。是否有人知道可以用于 secretsmanager 条件的 EncryptionContext 是什么?

1 回答
0

【以下的回答经过翻译处理】 我认为上述密钥策略中的主要问题是您指定的密钥上下文。 AWS Secrets Manager用于指定特定机密的密钥上下文为kms:EncryptionContext:SecretARN,如此处所述-> https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-encryption-context。更新密钥策略时要非常谨慎,以确保它们不会变得难以管理-> https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html。除了您自定义的密钥用户策略外,确保具有密钥管理声明。 Amazon MSK的策略声明应该看起来像这样:

{
    "Sid": "AllowUseOfTheKeyForSecretsManager",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::<YourAccount>:role/<MSKRoleName>"
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:<YourRegion>:<YourAccount>:secret:AmazonMSK_*"
        }
    }
}
profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则