查找掩码 CI/CD 变量的值

Posted

技术标签:

【中文标题】查找掩码 CI/CD 变量的值【英文标题】:Find the value of a masked CI/CD variable 【发布时间】:2021-12-15 18:29:09 【问题描述】:

我目前正在尝试在 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 变量部分中的复选框的情况下获取查找值?

【问题讨论】:

如果你能够在 Gitlab CI 日志中显示一个被掩码的变量,那将超出该变量被 被掩码 的全部目的。屏蔽变量正是为了这个目的,它的值不会意外泄漏到日志中。 有权限的可以查看CI/CD设置页面的值。只需点击“显示值”按钮。 【参考方案1】:

您可以通过单击“显示值”按钮在项目(或组,如果它是组变量)的设置页面中显示 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 格式,也应该被视为泄露并立即轮换。

【讨论】:

以上是关于查找掩码 CI/CD 变量的值的主要内容,如果未能解决你的问题,请参考以下文章

按模式查找布尔掩码

SIMD,SSE,AVX - 掩码 8 浮动无符号字符? [复制]

Php从IP /掩码中查找主机数[关闭]

查找并替换识别号输入掩码的正则表达式

路由器根据IP报文中的目的IP地址还是源IP地址进行路由的查找,掩码最长匹配还掩码最短匹配

在 Java 代码中获取错误以查找有关子网和掩码的信息 [重复]