The title says it all. 我尝试通过AWS CloudFormation模板创建KMS密钥时,会收到此错误。我是以拥有管理员权限的IAM用户身份创建模板的,并且想要让任何在同一AWS帐户中具备KMS权限的IAM用户都能够管理该密钥。以下是我用于定义密钥的YAML资源定义:
LambdaKmsKey:
Type: AWS::KMS::Key
Properties:
Enabled: true
KeyPolicy:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: kms:*
Principal:
AWS: <Principle>
然而,即使我尝试以root用户身份创建堆栈,以下<Principal>
的值都不起作用!
!Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ]
!Join [ "", [ "arn:aws:sts::", !Ref "AWS::AccountId", ":root" ] ]
!Ref "AWS::AccountId"
我不能只是硬编码我的用户名作为Principal,因为我希望任何具有堆栈创建权限的人都可以实例化此模板。 有人知道如何解决这种非常令人沮丧的情况吗? 预先感谢。
编辑:
我应该提到,我不再在CloudFormation模板中定义KMS密钥策略。 实际上,我现在避免在CF模板中定义任何安全资源,例如IAM实体、策略和ACM证书。 我的原因在这个GitHub问题中描述。
kms
权限吗?(即为什么使用Action: kms:*
?) - prime