簡體   English   中英

AWS CDK - 使用 NoEcho 參數設置 Secret 值

[英]AWS CDK - setting Secret value using NoEcho Parameters

我知道 AWS 建議避免在 CDK 中創建秘密設置秘密值,例如:

const secret = this.createSecret('MySecret', {
  username: new cdk.CfnParameter(this, 'username', { noEcho: true }).valueAsString,
  password: new cdk.CfnParameter(this, 'password', { noEcho: true }).valueAsString
})

但是,只要在部署管道中安全地提供參數,例如在 bitbucket 管道中(使用安全存儲庫變量):

cdk --parameters username=$USERNAME --parameters password=$PASSWORD

我看不出這怎么會不安全? 實際的用戶名和密碼值從未出現在 CDK 合成器 output(cdk.out 目錄)或任何 CloudFormation 模板中,因此不會意外提交到 Git 或通過 CloudFormation 控制台/cli 可見; 並且指定的參數是“NoEcho”,因此也無法通過 CloudFormation 控制台/cli 看到。

我聽到的關於 CDK 的一個常見抱怨是,無法在 CDK 中完全設置和配置 Secret,通常的過程是在 CDK 中創建 Secret,然后手動 go 並配置密鑰值,然而,這違背了基礎設施的精神,因為代碼,當您在許多區域/帳戶中部署堆棧時可能會很痛苦。

有人可以幫我理解為什么不推薦這樣做以及它可能不安全嗎?

使用您提供的方法,其中秘密值在更改集級別作為參數提供,沒有任何公開的內容,通常沒問題。

但是,通常不贊成使用 CfnParameters,因為這意味着所有信息(輸入)在合成時都不知道,這意味着它是不完整的。 如果您要將這些秘密值直接移動到 CDK 代碼中,那么它們將以純文本形式存儲在 CloudFormation 模板中,這也很糟糕。

對於非敏感配置值的值(很多秘密就像 api 端點,它們是應用程序配置但不是真正敏感的),您可以使用“不安全”幫助程序( https://docs.aws.amazon.com /cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager-readme.html#creating-json-secrets )。

如果你有真正敏感的值,那么值的管理通常是在 IaC 之外的首選,因為執行更改集(部署)來更新值通常很麻煩而且很麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM