【问题标题】:AWS CloudFormation - Correct Usage of Default Key Policy in AWS::KMS::KeyAWS CloudFormation - 在 AWS::KMS::Key 中正确使用默认密钥策略
【发布时间】:2022-01-26 22:19:23
【问题描述】:

我正在尝试使用默认密钥策略部署 KMS CMK。根据文档,如果您在创建密钥时未指定策略,AWS 将使用 默认密钥策略。但是,在使用 CloudFormation 时,需要 Property KeyPolicy。任何人都知道如何在 KeyPolicy 语句中指定默认策略,还是我遗漏了什么?

我正在尝试创建一个 AWS::KMS::Key 资源,根据 documentation,应该能够使用 默认密钥策略 作为 KeyPolicy 属性,但是,正如文档所述:

如果您不确定要使用哪个策略,请考虑使用默认密钥策略。这是 AWS KMS 应用于使用未指定密钥策略的 CreateKey API 创建的 KMS 密钥的密钥策略。它授予拥有密钥的 AWS 账户对密钥执行所有操作的权限。它还允许您编写 IAM 策略来授权对密钥的访问。有关详细信息,请参阅 AWS Key Management Service Developer Guide 中的默认密钥策略。

不幸的是,KeyPolicy 资源被标记为具有必需值,而使用默认密钥策略明确要求不传递任何值。 当需要传递一个值时,如何使用 KeyPolicy 属性中的默认密钥策略?

【问题讨论】:

    标签: amazon-cloudformation


    【解决方案1】:

    在对此进行更多研究后,处理此问题的正确方法似乎是将默认密钥策略强加的等效项传递给实际的 CloudFormation 属性。

    在默认密钥策略中考虑以下documentation

    以下默认密钥策略声明很关键。

    它为拥有 KMS 密钥的 AWS 账户提供对 KMS 的完全访问权限 键。

    与其他 AWS 资源策略不同,AWS KMS 密钥策略不 自动授予帐户或其任何用户的权限。至 授予帐户管理员权限,密钥策略必须包括 提供此权限的显式语句,例如这个。

    它允许账户使用 IAM 策略来允许访问 KMS 密钥,以及密钥策略。

    如果没有此权限,允许访问密钥的 IAM 策略将 无效,尽管拒绝访问密钥的 IAM 策略是 仍然有效。

    它通过授予访问权限来降低密钥变得无法管理的风险 控制帐户管理员的权限,包括 帐号root用户,不可删除。

    以下密钥策略语句是整个默认密钥策略 对于以编程方式创建的 KMS 密钥。这是第一个政策声明 在 AWS KMS 控制台中创建的 KMS 密钥的默认密钥策略中。

    最后一行尤其揭示了答案:

    以下密钥策略语句是以编程方式创建的 KMS 密钥的完整默认密钥策略。这是在 AWS KMS 控制台中创建的 KMS 密钥的默认密钥策略中的第一个策略语句。

    {
      "Sid": "Enable IAM policies",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
       },
      "Action": "kms:*",
      "Resource": "*"
    }
    

    因此,因为 CloudFormation AWS::KMS::Key 中的 KeyPolicy 字段是必需的,所以要传入默认密钥策略,您需要提交上面通常会为您创建的代码块(如果您调用了 KMS API没有明确的 KeyPolicy)。

    【讨论】:

    • 另外,我还提交了 AWS 文档以供澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 2019-11-18
    • 1970-01-01
    • 2022-10-07
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多