【发布时间】:2020-10-01 13:50:45
【问题描述】:
我正在尝试制作通过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 服务帐户凭据文件的最佳做法是什么?
【问题讨论】:
-
Gitlab 在哪里运行?如果在 GCP 中,您可以使用分配给实例的默认服务帐号,并且您的管道中没有机密。
-
您可以在 GCP VM 或 GKE 中运行 Gitlab 运行程序。将具有所需权限的服务帐户分配给您的 VM。在 GCP 中安装 Gitlab runner 可以在这里找到:about.gitlab.com/solutions/google-cloud-platform
-
除上述解决方案外,您还必须将 SA 密钥文件保存在安全的地方,您的管道可以使用安全保存在您的 CI 上的凭据访问该位置。然后获取 SA 密钥文件,然后使用它执行所需的操作。
标签: google-cloud-platform gitlab terraform gitlab-ci