python - 查找掩码 CI/CD 变量的值
问题描述
我目前正在尝试在 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 变量的值。
您必须拥有维护者权限或更高权限才能执行此操作。
或者,如果您转换值以使其不会在作业日志中被屏蔽,您可以在作业日志中公开机密。这是一个坏主意,因为您将以明文形式公开敏感值,但仍然可以这样做。
与其他 CI 平台不同,GitLab 只掩盖了确切的值。例如,您可以打印 base64 编码的值,以相反的顺序打印字符,以任何方式破坏它们等,它们不会在作业日志中被屏蔽。
知道这可能会意外发生也很好,例如,如果您使用机密curl
作为启用详细程度的基本身份验证请求,因为详细日志将显示参数 base64 编码。curl -vvv --user "${USERNAME}" --password "${SECRET_PASSWORD}"
例如,将在作业日志中公开您的 CI/CD 变量。
当然,您也可以故意这样做...
expose_secrets:
script:
- echo $SUPER_SECRET | base64
GitLab 的安全模型围绕受信任的开发人员工作。除非您有正当理由这样做,否则您显然不应该这样做。这样做可能会让你在很多地方遇到麻烦,除非你的工作是对系统进行渗透测试。当秘密像这样在作业日志中暴露时,即使是 base64 格式,也应该被视为已泄露并立即轮换。
推荐阅读
- xsl-fo - 条形码扩展问题 - XSLT XSLFO
- node.js - 如何在 bm_sv cookie 上设置 samesite 属性
- javacard - 在 Java Card 中创建 Cipher 实例时出现异常
- c# - 选择一行文本并将其发送到相邻的文本框VB C#
- sql - 根据上次更新日期列创建 ID 列
- ethereum - 如何计算用于 RSK 交易的 gas 价格?
- beautifulsoup - 无法访问我 BeautifulSoup 中的第一个 Div
- sql-server - 如何将powershell错误放入单列
- reactjs - 如何正确使用 CryptoJs 加密到 AES256
- bash - 在 MAC 中使用 sed 命令时遇到问题