amazon-web-services - 新的 key 策略将不允许您将来更新 key 策略

标签 amazon-web-services aws-cloudformation amazon-kms

标题说明了一切。每当我尝试通过 AWS CloudFormation 模板创建 KMS key 时,都会收到此错误。我以具有管理权限的 IAM 用户身份创建模板,并且希望同一 AWS 账户中具有 KMS 权限的任何 IAM 用户都可以管理该 key 。我使用以下 YAML 资源定义作为 key :

LambdaKmsKey:
    Type: AWS::KMS::Key
    Properties:
      Enabled: true
      KeyPolicy:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Action: kms:*
          Principal:
            AWS: <Principle>

然而,<Principal> 没有以下值正在工作,即使我尝试以 root 用户身份创建堆栈!

  • !Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ]
  • !Join [ "", [ "arn:aws:sts::", !Ref "AWS::AccountId", ":root" ] ]
  • !Ref "AWS::AccountId"

我不能只对主体的用户名进行硬编码,因为我希望具有堆栈创建权限的任何人都可以实例化此模板。有谁知道如何解决这种非常令人沮丧的情况?提前致谢。

编辑:

我应该提到,我不再在 CloudFormation 模板中定义 KMS key 策略。事实上,我现在完全避免在 CF 模板中定义任何安全资源,例如 IAM 实体、策略和 ACM 证书。我这样做的原因在GitHub issue中有描述。 .

最佳答案

您缺少资源:“*” 属性。这对我有用:

  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" ] ]

资源:“*” is required and is the only possible value :

Resource – (Required) In a key policy, you use "*" for the resource, which means "this CMK." A key policy applies only to the CMK it is attached to.

参见https://aws.amazon.com/premiumsupport/knowledge-center/update-key-policy-future/举个例子。

关于amazon-web-services - 新的 key 策略将不允许您将来更新 key 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41991480/

相关文章:

amazon-web-services - 使用 CloudFormation 为现有 EFS 创建 EFS 访问点

.net - 使用 KMS 加密为 S3 对象生成预签名 URL - 我做错了什么?

javascript - AWS IoT Core 连接被经过身份验证的 Cognito 用户拒绝并附有策略 [MQTT over WSS]

amazon-web-services - 无法识别AWS Cloudwatch日志流名称

amazon-web-services - 如何强制不删除流

python - 相当于 aws cdk 中的 !Ref

java - 如何使用 Java 或 AWSKmsClient 使用 AWS 加密开发工具包解密 AWS KMS 密码

amazon-web-services - 哪种方法适合加密大小大于 4KB 的消息?

amazon-web-services - Spring Boot @Async 不工作

amazon-web-services - 如果 SQS FIFO 队列中的消息可见性超时到期,会发生什么情况?