在公共存储库中将gitlab CI / CD变量保密

Pay*_*ian 4 gitlab gitlab-ci kubernetes

我在Gitlab上有一个私人项目,设置了CI / CD,用于从Google Container Registry推送/拉取docker映像,并将我的软件部署到GCP中的Kubernetes Engine。

有没有一种方法可以使我的项目公开,而不必担心用于连接到GCP的秘密泄露?特别是,我担心当我的存储库公开时,任何人都可以echo $GCP_REPOSITORY_SECRET.gitlab-ci.yml文件中的某处添加一行,然后推其分支并查看CI的输出,以“发现”我的秘密。Gitlab有防止这种情况发生的机制吗?从根本上讲,是否存在最佳实践,可以为公共存储库保密部署秘密?

小智 9

隐藏的变量非常容易揭开......

echo ${MASKED_VARIABLE::1} ${MASKED_VARIABLE:1} // mind the gap \!
Run Code Online (Sandbox Code Playgroud)

您可能想保护他们;并且,确保只有真正值得信赖的开发人员才能推送到您受保护的分支。


Von*_*onC 5

从根本上讲,是否存在最佳实践,可以为公共存储库保密部署秘密?

是的,其中没有任何敏感数据。曾经

在GCP级别,此处列出机密管理选项

将GitLab-CI连接到GCP时,您可以在此处看到安全含义,该含义kubectl get secret <secret name> -o jsonpath="{['data']['ca\.crt']}" | base64 -D与正确的帐户和RBAC一起使用

整个集群的安全性基于可信任开发人员的模型,因此应仅允许受信任的用户控制您的集群。


请注意,GitLab 11.7(2019年1月)允许:

将Kubernetes应用秘密配置为Auto DevOps管道的变量

操作员和管理员要求在应用程序存储库之外进行机密配置,以降低风险和敏感数据的暴露。
为了满足此需求,GitLab现在提供了将机密配置为环境变量的功能,这些变量可用于在Kubernetes集群中运行的Auto DevOps应用程序。

https://about.gitlab.com/images/11_7/autodevops-secrets.png

只需在变量之前加上K8S_SECRET_,相关的Auto DevOps CI管道就会使用您的应用程序秘密变量来填充Kubernetes秘密。