CloudFormation 的秘密

Tim*_*Tim 5 aws-cloudformation aws-ssm aws-secrets-manager

我想坚持“所有基础设施都是代码”的政策。但是,对于 CloudFormation 的机密,我看不出有什么方法可以做到这一点。

SecretsManager 要求您以纯文本形式指定 SecretString。即使您从某处注入解密的值,纯文本字符串也会显示在模板视图的 CF 控制台中:/

在 SSM 中也不可能使用加密字符串。文档说,“AWS CloudFormation 不支持创建 SecureString 参数类型。”

真的没有办法使用 CloudFormation 将机密作为代码安全地管理吗?

小智 6

您可以使用CloudFormation 中的Secret资源来创建 SecretsManager 密钥。有一种方法可以在 SecretString 中生成值(使用GenerateRandomPassword API)。查看GenerateSecretString属性。

这应该可以帮助您生成密码,而无需将其硬编码在模板中。

还有一个RotationSchedule资源可帮助您为您的密钥设置自动轮换。

要使用存储在 SecretsManager 密钥或 Parameter Store 参数中的密钥值,请使用动态引用。动态引用保证秘密值不会记录在 CFN 中或显示在控制台中。

目前无法在 Parameter Store/Systems Manager 中创建/生成SecureString参数。

  • @Tim,这对您来说可能已经晚了,但我们也有类似的情况,我们所做的就是在 CloudFormation 中使用占位符值创建秘密字符串。然后我们从 console/cli 更新秘密。这样,秘密名称/arn 本身仍然是堆栈的一部分 (3认同)