使用 Jenkins 管道的 Terraform 代码中的 AWS 访问和密钥
AWS Access and Secret Keys in Terraform code with Jenkins Pipeline
不是在 Terraform 代码的 variables.tf 中传递访问密钥和秘密密钥,而是在部署 Jenkins Pipeline 时是否有任何安全可靠的方法将密钥传递给代码?
管道会经常重新部署,每次都应该传递密钥。
首先,您需要在主机中存储默认凭据以执行一些 awscli。你可以这样做:
sh "mkdir -p ~/.aws"
sh "cd ~/.aws; rm -rf credentials"
sh "cd ~/.aws; cp credentials-default credentials
在您的 AWS IAM 部分,您需要通过命令授予默认凭证权限以承担您需要的角色
aws sts assume-role ... > test.txt
在 test.txt 文件中是具有该会话的临时访问和密钥的凭据。
以上选项可以参考文档:https://docs.aws.amazon.com/es_es/cli/latest/reference/sts/assume-role.html
如果您不想在 Jenkins 上存储任何 aws 凭证,最好的方法是在 EC2 实例上创建一个 Jenkins 从站并将所需的 IAM 角色附加到该实例。这样您就不必在 Jenkins 凭证管理器或 Jenkins 节点中存储或预定义任何秘密 ID 和访问密钥
不是在 Terraform 代码的 variables.tf 中传递访问密钥和秘密密钥,而是在部署 Jenkins Pipeline 时是否有任何安全可靠的方法将密钥传递给代码? 管道会经常重新部署,每次都应该传递密钥。
首先,您需要在主机中存储默认凭据以执行一些 awscli。你可以这样做:
sh "mkdir -p ~/.aws"
sh "cd ~/.aws; rm -rf credentials"
sh "cd ~/.aws; cp credentials-default credentials
在您的 AWS IAM 部分,您需要通过命令授予默认凭证权限以承担您需要的角色
aws sts assume-role ... > test.txt
在 test.txt 文件中是具有该会话的临时访问和密钥的凭据。
以上选项可以参考文档:https://docs.aws.amazon.com/es_es/cli/latest/reference/sts/assume-role.html
如果您不想在 Jenkins 上存储任何 aws 凭证,最好的方法是在 EC2 实例上创建一个 Jenkins 从站并将所需的 IAM 角色附加到该实例。这样您就不必在 Jenkins 凭证管理器或 Jenkins 节点中存储或预定义任何秘密 ID 和访问密钥