查找屏蔽的 CI/CD 变量的值
Find the value of a masked CI/CD variable
我目前正在尝试在 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 变量部分的复选框的情况下获取查找值?
您可以通过单击“显示值”按钮在项目(或组,如果它是组变量)的设置页面中显示 CI/CD 变量的值。
您必须 maintainer permission 或更高才能执行此操作。
或者,您可以可以 公开作业日志中的秘密,前提是您转换值以使其不会在作业日志中被屏蔽。这是一个坏主意,因为您会以明文形式公开敏感值,但仍然可以做到。
与其他 CI 平台不同,GitLab 仅屏蔽 exact 值。例如,您可以打印 base64 编码的值,以相反的顺序打印字符,以任何方式破坏它们等,它们不会在作业日志中被屏蔽。
也很高兴知道这可能会意外发生,例如,如果您使用 curl
中的秘密作为启用详细信息的基本身份验证请求,因为详细日志将显示 base64 编码的参数。例如,curl -vvv --user "${USERNAME}" --password "${SECRET_PASSWORD}"
将在作业日志中公开您的 CI/CD 变量。
当然,您也可以有意地这样做...
expose_secrets:
script:
- echo $SUPER_SECRET | base64
GitLab 的安全模型围绕受信任的开发人员工作。除非您有正当理由这样做,否则您显然不应这样做。这样做可能会给你带来很多麻烦,除非你的工作是渗透测试系统。当秘密像这样暴露在作业日志中时,即使是 base64 形式,也应将其视为 妥协 并立即轮换。
我目前正在尝试在 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 变量部分的复选框的情况下获取查找值?
您可以通过单击“显示值”按钮在项目(或组,如果它是组变量)的设置页面中显示 CI/CD 变量的值。
您必须 maintainer permission 或更高才能执行此操作。
或者,您可以可以 公开作业日志中的秘密,前提是您转换值以使其不会在作业日志中被屏蔽。这是一个坏主意,因为您会以明文形式公开敏感值,但仍然可以做到。
与其他 CI 平台不同,GitLab 仅屏蔽 exact 值。例如,您可以打印 base64 编码的值,以相反的顺序打印字符,以任何方式破坏它们等,它们不会在作业日志中被屏蔽。
也很高兴知道这可能会意外发生,例如,如果您使用 curl
中的秘密作为启用详细信息的基本身份验证请求,因为详细日志将显示 base64 编码的参数。例如,curl -vvv --user "${USERNAME}" --password "${SECRET_PASSWORD}"
将在作业日志中公开您的 CI/CD 变量。
当然,您也可以有意地这样做...
expose_secrets:
script:
- echo $SUPER_SECRET | base64
GitLab 的安全模型围绕受信任的开发人员工作。除非您有正当理由这样做,否则您显然不应这样做。这样做可能会给你带来很多麻烦,除非你的工作是渗透测试系统。当秘密像这样暴露在作业日志中时,即使是 base64 形式,也应将其视为 妥协 并立即轮换。