查找屏蔽 CI/CD 变量的值

Nas*_*dhi 3 python gitlab gitlab-ci

我目前正在尝试查找虚拟机中 CI/CD 变量的值。我尝试输出它,但发现变量\xe2\x80\x99s 值在作业日志中被屏蔽。这是我在 .gitlab-ci.yml 中使用的代码。

\n
image: python:3\n\nstages:\n  - deploy\n\ndeploy:\n  stage: deploy\n  script:\n    - echo "List all CI/CD variables"\n    - export\n
Run Code Online (Sandbox Code Playgroud)\n

有问题的行是

\n
...     \ndeclare -x Secret_variable ="[MASKED]"\n...\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法让我在不修改 Gitlab 变量部分中的复选框的情况下获取查找值?

\n

syt*_*ech 7

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

显示值按钮

您必须拥有维护者或更高级别的权限才能执行此操作。

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

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

最好知道这种情况可能会意外发生,例如,如果您在curl启用了详细程度的基本身份验证请求中使用机密,因为详细日志将显示经过 Base64 编码的参数。curl -vvv --user "${USERNAME}" --password "${SECRET_PASSWORD}"例如,将在作业日志中公开您的 CI/CD 变量。

当然,你也可以故意这样做......

expose_secrets:
  script:
    - echo $SUPER_SECRET | base64
Run Code Online (Sandbox Code Playgroud)

GitLab 的安全模型围绕值得信赖的开发人员工作。显然,除非您有正当理由这样做,否则您不应该这样做。这样做可能会给你带来很多麻烦,除非你的工作是测试系统,例如。当机密信息像这样在作业日志中暴露时,即使是采用 Base64 形式,也应将其视为已泄露并立即轮换。