在 GitHub Actions 工作流程日志中隐藏秘密

问题描述 投票:0回答:1

我目前面临与处理机密相关的 GitHub Actions 工作流程问题。我在我的存储库中添加了几个秘密作为环境变量,旨在允许一组选定的开发人员查看和验证这些值。但是,我担心这些秘密在工作流程日志中的可见性。

以下是我的设置的简要概述:

  1. Secrets 配置:我在 GitHub Actions 环境变量和存储库环境变量中定义了 Secrets,以便特定开发人员能够根据需要查看和更新它们。这一切都是在私人存储库中完成的。
  2. 当前行为:当我在 GitHub Actions 工作流程中引用这些机密时,它们将打印在日志中。我知道这可能是 GitHub 提供有关正在执行的内容的反馈的方式,但它会带来潜在的安全风险,因为它会暴露敏感信息。
  3. 目标:我想将这些秘密隐藏在日志中,同时仍然允许指定的开发人员访问。

这是我的工作流程配置片段供参考:

jobs:
  Setup:
    name: Setup
    runs-on: ubuntu-latest
    steps:
      - name: Validate and Apply Secrets
        run: |
          echo '${{ vars.REPO_SECRET }}' > secret.json

有没有办法防止这些秘密被打印在工作流程日志中?

github github-actions
1个回答
0
投票

您选择了“存储库(环境)变量”而不是“存储库(环境)秘密”,这是一个已添加的功能,允许通过使用(非秘密)变量选择退出所有秘密屏蔽。

  1. 从存储库(环境)变量中删除 REPO_SECRET
  2. 添加 REPO_SECRET 作为存储库机密,这是远离变量的选项卡 如果您实际上正在使用部署环境机密,您需要作业的
    environment: name
    以及正确的名称,否则该值为空
  3. ${{ vars.REPO_SECRET }}
    替换为
    ${{ secrets.REPO_SECRET }}

最后工作应该是这样的

jobs:
  Setup:
    name: Setup
    runs-on: ubuntu-latest
    steps:
      - name: Validate and Apply Secrets
        run: |
          echo '${{ secrets.REPO_SECRET }}' > secret.json

同时仍允许指定开发人员访问。

  • 在工作流程中他们仍然可以访问
  • 每个人都可以在日志文件中看到
    ***
  • 该命令将打印为
    echo '***' > secrets.json
  • 除了名称之外,您无法再看到设置中的值。

考虑将秘密映射为这样的步骤环境变量,因为您的示例会中断并允许通过许多符号注入代码,包括

'

      - name: Validate and Apply Secrets
        run: |
          echo "$REPO_SECRET" > secret.json
        env:
          REPO_SECRET: ${{ secrets.REPO_SECRET }}

不可能通过

::add-mask::
掩盖来自任何表达上下文的任何内容,就像您自己注意到的那样

© www.soinside.com 2019 - 2024. All rights reserved.