Rab*_*820 2 amazon-web-services aws-cloudformation aws-kms
标题说明了一切.每当我尝试通过AWS CloudFormation模板创建KMS密钥时,我都会收到此错误.我将模板创建为具有管理权限的IAM用户,并且我希望该密钥可由具有KMS权限的同一AWS账户中的任何IAM用户管理.我正在使用以下YAML资源定义作为密钥:
LambdaKmsKey:
Type: AWS::KMS::Key
Properties:
Enabled: true
KeyPolicy:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: kms:*
Principal:
AWS: <Principle>
Run Code Online (Sandbox Code Playgroud)
然而,<Principal>即使我尝试以root用户身份创建堆栈,以下任何值都无效!
!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问题中描述了我的原因.
您缺少该Resource: "*"属性.这对我有用:
LambdaKmsKey:
Type: AWS::KMS::Key
Properties:
Enabled: true
KeyPolicy:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: kms:*
Resource: "*"
Principal:
AWS: !Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ]
Run Code Online (Sandbox Code Playgroud)
这Resource: "*" 是必需的,也是唯一可能的值:
资源 - (必需)在密钥策略中,您对资源使用"*",这意味着"此CMK".关键策略仅适用于它所附加的CMK.
有关示例,请参阅https://aws.amazon.com/premiumsupport/knowledge-center/update-key-policy-future/.
小智 9
如果这对某人有帮助,请注意https://aws.amazon.com/premiumsupport/knowledge-center/update-key-policy-future/中的评论
重要提示:请确保您创建的密钥策略允许当前用户管理 CMK。
我在从管道部署模板时遇到了这个问题,并且建议的解决方案对我不起作用。用于部署模板的角色具有相应的 kms 权限,但它也需要位于密钥策略的主体中!
- Effect: Allow
Action: kms:*
Resource: "*"
Principal:
AWS:
- !Sub arn:aws:iam::${AWS::AccountId}:role/PipelineRole
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3200 次 |
| 最近记录: |