微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从AWS SSM参数存储中提取加密数据到terraform var文件中,并将其加密传递,直到在terraform代码内部被调用

如何解决从AWS SSM参数存储中提取加密数据到terraform var文件中,并将其加密传递,直到在terraform代码内部被调用

如何将加密数据从SSMParameter存储中提取terraform var文件中,并使其端到端始终保持加密状态?

我的要求是: 我想将密码和其他一些环境变量保留在AWS SSM / AWS Secrets Manager中,现在将该值以加密形式本身拉入环境变量中,最后在terraform代码中对其进行解密。有什么最好的方法吗?

解决方法

您可以有一个非常简单的脚本,该脚本使用AWS cli从Secrets Manager中提取机密并将其设置为env var(该脚本本地),然后调用terraform plan,然后进行terraform apply。该代码段将从aws secrets-manager抓取一个名为secret-name的秘密,然后将其放入环境变量TF_VAR_secret(以TF_VAR_开头,该变量将var作为terraform变量的值传递secret

#!/bin/bash -e
set -o pipefail
set +x
export TF_VAR_secret=$(aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-2:<AWS ACCT #>:secret:secret-name | jq -r .SecretString)
set -x
terraform plan

请记住,使用此模式不会加密处于地形状态的值。您需要确保将提供者标记为sensitive的任何内容以及提供给远程状态文件的静态位置进行加密,并且可以适当地读取状态那里的数据。 参见https://www.terraform.io/docs/state/sensitive-data.html

如果您使用的是AWS Codebuild,则可以通过使用类型为SECRET_MANAGER的{​​{3}}来简化此操作

总结:您的状态应加密,但不能将状态设置为。您可以通过加密整个静止状态并控制对状态的访问来解决此问题。如果提供者确实对状态中的值进行加密,则environment_variable

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。