首页 > 解决方案 > 通过 CloudFormation 将默认 KMS 密钥的使用权授予 IAM 角色

问题描述

我们有许多通过 bash 脚本自动化创建的 SecureString SSM 参数存储值。这些使用特定于环境的 KMS 密钥 + 通过 CloudFormation 创建的别名进行加密。

模板中还有我们 EC2 实例的 IAM 角色,它们需要允许检索和解密 SSM 参数。为此,我们在创建 KMS 密钥时通过将其角色 ARN 引用为原则来授予对这些 IAM 角色的访问权限。

但是,我们的 AWS 账户上有一些非特定于环境的 SSM 变量,这些变量在我们的环境 CloudFormation 堆栈之外持续存在,并被所有环境使用。

我们最近调整了这些参数以使用默认 KMS 密钥进行加密- alias/aws/ssm

这种方法会导致自动化方面的问题,因为我们需要将默认KMS 密钥的使用权限授予 CloudFormation 中的 IAM 角色。我已阅读 AWS 文档,但无法找到这样做的方法。

有没有人设法自动化这个?

标签: amazon-web-servicesamazon-cloudformationaws-kms

解决方案


默认 KMS 密钥alias/aws/ssm是 AWS 托管 CMK。我们无法为 AWS 托管 CMK 建立 IAM 策略或 KMS 密钥策略。

摘自AWS KMS 常见问题

AWS 将代表您管理与 AWS 托管 CMK 关联的策略。您可以在您的账户中跟踪 AWS 托管密钥,并且所有使用情况都记录在 AWS CloudTrail 中,但您无法直接控制密钥本身。

您不必担心定义 IAM 角色来访问alias/aws/ssm密钥,访问所需的 SSM 参数就足够了。


推荐阅读