【问题标题】:Secrets Detection in Gitlab CI/CDGitlab CI/CD 中的秘密检测
【发布时间】:2021-05-03 10:51:45
【问题描述】:

我在理解如何在 Gitlab CI/CD 中激活秘密检测时遇到了一些麻烦。 我从模板创建了一个新的 NodeJS Express,然后我从 Settings > CI/CD 激活了 auto-devops,并选中了 Auto Devops 菜单下的复选框 Default to Auto Devops pipeline。之后,我在项目文件夹中打开了 app.js 文件并插入了一个看起来像键值的变量。这是我插入该行的代码:

...
var app = express();

var key = "api-12321321321321321";

// view engine setup
app.set('views', path.join(__dirname, 'views'));
...

在提交更改后,我预计管道会因为秘密泄露而失败。这是一张显示秘密检测通过的图像。

谁能告诉我如何使管道报告错误?

【问题讨论】:

    标签: node.js gitlab gitlab-ci


    【解决方案1】:

    当我第一次尝试时,这种行为也让我感到困惑。

    但是,GitLab 似乎是故意这样做的。这是official documentation 所说的:

    因此,对于免费或高级帐户,您可以只使用此报告器,但您不会看到任何结果,除非您下载 JSON 报告。

    此外,没有提到作业会失败。这只是我们的期望。

    换句话说,如果您使用免费/高级帐户,此功能几乎没有用,因为没有人会去工作并手动检查它。

    唯一的解决方法是覆盖 secret_detection 作业,解析 gl-secret-detection-report.json,检查它是通过还是失败,然后决定通过或失败作业。

    【讨论】:

    • 有没有人写过一个会失败的扩展作业?我的意思是,如果它无论如何都成功了,本地工作是毫无用处的。
    • @halloei - 我正在努力寻找解决方案。我会在这里通知你。
    • 我想出了以下解决方案:gist.github.com/halloei/8ea4f1763f16a426f86a56bcf6a97333 期待你的解决方案!
    • @halloei 我在看类似的东西。但是,避免如此多的配置重复会很棒。
    【解决方案2】:

    GitLab 13.12(2021 年 5 月)应该会更容易:

    秘密检测配置工具

    跟随GitLab SAST configuration tool 的脚步,我们正在安全配置页面上添加对秘密检测的支持。
    我们相信security is a team effort 和这种配置经验让非 CI 专家更容易上手 GitLab Secret Detection

    该工具可帮助用户创建合并请求以启用秘密检测扫描,同时利用最佳配置实践,例如使用 GitLab 管理的 SAST.gitlab-ci.yml template
    配置工具可以创建一个新的.gitlab-ci.yml 文件(如果不存在)或更新现有的简单 GitLab CI 文件,从而允许该工具用于已设置 GitLab CI 的项目。

    参见DocumentationEpic


    GitLab 14.5(2021 年 11 月)

    额外的秘密检测模式支持

    我们更新了 GitLab 秘密检测扫描器,为广泛使用的应用程序检测 47 种新的“易于识别”的秘密模式。这使得 GitLab 秘密检测检测多达 90 多种可检测模式。

    如果您是 SaaS 应用程序供应商,并且您的应用程序生成具有可识别模式的秘密令牌,并且您希望 GitLab 能够检测到它们,请添加您的正则表达式模式和一些无效的示例令牌 in a comment on this issue 和我们会将它们添加到 GitLab 秘密检测中。

    请参阅 DocumentationIssue

    【讨论】:

      【解决方案3】:

      GitLab 有一篇关于在管道中进行设置的完整帖子:https://docs.gitlab.com/ee/user/application_security/secret_detection/

      编辑:

      给出的说明有点不清楚:

      您需要在配置的“根级别”添加include 标签。

      示例

      stages:
          - build
          - test
      
      image: node:latest
      
      build:
          stage: build
          script:
              - echo "Building"
              - npm install typescript
              - yarn run build
      test:
          stage: test
          script:
              - echo "Testing"
      
      include:
          - template: Security/Secret-Detection.gitlab-ci.yml
      

      秘密检测将在测试阶段运行: Pipeline

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        • 2019-08-07
        • 1970-01-01
        • 2018-12-15
        • 2020-07-03
        • 2022-08-10
        相关资源
        最近更新 更多