在 gitlab CI/CD 中使用 GOOGLE_APPLICATION_CREDENTIALS 的最佳实践

Ale*_*hen 7 gitlab google-cloud-platform gitlab-ci terraform

我正在尝试制作通过GCP terraform provider部署 GCP 实例的 GitLab 管道。像AWS其他平台有这样的环境变量$AWS_ACCESS_KEY_ID,并$AWS_SECRET_ACCESS_KEY可以用于验证请求,但GCP似乎使用服务帐户凭据文件,而不是。

我可以创建一个 CI gitlab 文件变量来包含我的 GCP 服务帐户凭据文件,但我只能以不安全的方式添加它。如果我尝试在 GitLab ci-cd 设置下屏蔽我的文件变量,则会产生错误消息This variable can not be masked.

在 GitLab CI/CD 环境变量中存储 GCP 服务帐户凭据文件的最佳实践是什么?

小智 0

一种方法是获取环境变量并将其作为文件写出。当您在较新版本的 Gitlab 中添加变量时,有一个下拉菜单可让您在“变量”和“文件”之间进行选择。如果将内容放入值字段中,则可以使用cp $VARIABLE_NAME name-of-file.bob.

您不需要屏蔽它,因为它永远不会写入日志(除非您捕获它),但我建议您选中“保护”复选框,这意味着它只会在受保护的分支上使用。

第二种方法是使用受保护变量中的密码对其进行加密和解密。这需要在构建中获取另一个程序,但这可能对您有用。

第三种是使用诸如age之类的东西签入加密文件,写出SSH作为奇特的解密密钥,然后打包SSH。

但是,第一种方法可能是您最好的选择。