查找屏蔽的CI/CD变量的值

2022-03-14 00:00:00 python gitlab gitlab-ci

问题描述

我当前正在尝试在VM中查找CI/CD变量的值。我试图输出它,但是我发现变量的值在作业日志中被屏蔽了。这是我在.gitlab-ci.yml中使用的代码。

image: python:3

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - echo "List all CI/CD variables"
    - export

有问题的行是

...     
declare -x Secret_variable ="[MASKED]"
...

是否可以在不修改GitLab的Variables部分中的复选框的情况下获取查找值?


解决方案

您可以通过单击"显示值&q;"按钮,在项目(或组,如果是组变量)的设置页中显示CI/CD变量的值。

您必须拥有maintainer permission或更高版本才能执行此操作。

或者,如果您转换该值,使其不会在作业日志中被屏蔽,则可以公开作业日志中的秘密。这不是一个好主意,因为您将以明文形式公开敏感的值,但是仍然可以这样做。

与其他CI平台不同,GitLab仅屏蔽精确的值。例如,您可以打印base64编码的值、以相反的顺序打印字符、以任何方式损坏字符等,它们不会在作业日志中被屏蔽。

知道这可能会意外发生也很好,例如,如果您在启用详细信息的情况下使用curl中的秘密作为基本身份验证请求,因为详细日志将显示参数base64编码。例如,curl -vvv --user "${USERNAME}" --password "${SECRET_PASSWORD}"将在作业日志中显示您的CI/CD变量。

当然,您也可以有意这样做.

expose_secrets:
  script:
    - echo $SUPER_SECRET | base64

GitLab的安全模型适用于受信任的开发人员。你显然不应该这样做,除非你有合法的理由这样做。这样做可能会给您带来很多麻烦,例如,除非您的工作是对系统进行安全性测试。当作业日志中的机密像这样暴露时,即使是Base64形式,也应将其视为泄露并立即轮换。

相关文章