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



我正在尝试制作通过GCP terraform提供程序部署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 服务帐户凭据文件的正确最佳做法是什么?

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

你不需要屏蔽它,因为它永远不会写入日志(除非你猫它(,但我确实建议你选中"保护"复选框,这意味着它只会在受保护的分支上使用。

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

第三种是使用类似年龄的东西来签入加密文件,写出SSH作为花哨的解密密钥,然后打包SSH。

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

安全性方面的最佳实践:

  1. 您需要生成一个 JSON 密钥文件,其中包含以下凭据: GitLab 将用于验证 Google Cloud。
  2. 在 Gitlab ->Settings->CI/CD中扩展Secret variables区域
  3. 这是您的GOOGLE_APPLICATION_CREDENTIALS作为键,此外还有步骤 1 内容的值
  4. 在管道的配置文件中引用键值对

例如,在管道配置文件(步骤 4(中如下所示:

variables:
GOOGLE_APPLICATION_CREDENTIALS: $GOOGLE_APPLICATION_CREDENTIALS

相关内容

最新更新