Kes*_*uri 4 amazon-web-services aws-secrets-manager aws-cdk
我想使用 AWS 机密管理器来管理我的 CDK 堆栈的所有机密。由于我将管理数百个秘密,我想创建一个 CDK 堆栈,允许我在不同的环境中创建这些秘密(并管理它们)。
一些秘密值需要是一组无法自动生成的特定值。
据我所知,我无法使用 CDK 创建具有预定值的此类机密。所以我的问题是:如何以编程方式而不是手动创建这些秘密?在不同环境中手动创建相同的一组秘密而不搞乱的负担太大了。
编辑:明确地说,我理解 CDK 不允许指定的原因SecretString,AWS::SecretsManager::Secret因为它可能有泄露机密的风险。我绝对想过用随机生成的值创建秘密,然后手动替换这些值,但对于像我这样有多个环境和数百个秘密需要管理的人来说,即使这样也很费力。必须有更好的方法来做到这一点。
如何以编程方式而不是手动创建这些机密?
正如您正确指出的那样,您不能在 CDK 中执行此操作。这是设计使然,其基本原理如下:
Secret 构造不允许指定 AWS::SecretsManager::Secret 资源的 SecretString 属性(因为这几乎总是导致秘密以纯文本形式出现并可能提交给您的源代码控制)。
同一文档还提供了一种解决方法:
如果您需要使用预先存在的 secret,推荐的方法是在 AWS SecretsManager 中手动预置该 secret 并使用 Secret.fromSecretArn 或 Secret.fromSecretAttributes 方法使其在您的 CDK 应用程序中可用:
当然手动进入控制台不是很愉快,因此您可以在 AWS CLI 或 SDK 中预先创建这些秘密。您可以在 CDK 旁边有一个配套脚本,它可以使用 AWS CLI 或 AWS 开发工具包中的某些脚本创建密钥。这些预先创建的机密可以在 CDK 中使用,如文档中所示。
显然,这带来了 CDK 试图消除的相同问题,即您可以在源代码中以纯文本机密形式提交或公开脚本。
但是,如果您的秘密不是那个秘密,那么使用SSM Parameter Store可能是更好的选择。可以从 CDK 轻松控制存储的值。
作为替代方案,如果可能,您也可以直接使用普通CloudFormation的AWS::SecretsManager::Secret。CFN 中的 Secret 不限制您,您可以为该密钥设置纯文本值。
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |