Gitlab CI/CD中的Secrets检测

6

我在理解如何激活Gitlab CI/CD中的Secrets Detection方面遇到了一些困难。 我从模板创建了一个新的NodeJS Express,然后从“设置> CI/CD”中激活了自动DevOps,并在Auto Devops菜单下选中了“默认使用自动Devops管道”的复选框。之后,我打开了项目文件夹中的app.js文件,并插入了一个看起来像键值对的变量。这是我插入该行代码的部分内容:

...
var app = express();

var key = "api-12321321321321321";

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

提交更改后,我预计由于密钥泄露而导致流水线失败。以下是一个显示密钥检测通过的图像。 enter image description here 有人可以告诉我如何使流水线报告错误吗?
3个回答

4

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

然而,GitLab 是有意为之的。以下是官方文档中的说明:

gitlab documentation

因此,在免费或高级帐户上,您只需使用此报告程序,但是您将不会看到任何结果,除非您下载 JSON 报告。

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

然而,这是有道理的原因,特别是对于 GitLab 的付费版本。在 MR 中,您需要知道代码中是否存在漏洞。然而,并非所有报告都是准确的。因此,您可能会得到所谓的假阳性。或者,报告的问题非常通用,而您的软件并不受影响。

但是,如果您使用的是免费/高级帐户,则此功能几乎是无用的,因为没有人会去手动检查作业。

唯一的解决方法是覆盖secret_detection工作,解析gl-secret-detection-report.json,检查它是否通过或失败,并决定是 PASS 还是 FAIL 该工作。


有人已经写过一个会失败的扩展作业吗?我的意思是,如果原生作业无论如何都成功,那么它就相当无用。 - halloei
@halloei - 我正在努力寻找解决方案。我会在这里及时向你报告。 - Valentin Despa
2
我想出了以下解决方案:https://gist.github.com/halloei/8ea4f1763f16a426f86a56bcf6a97333 期待你的回复! - halloei
@halloei 我也在看类似的东西。不过,如果能避免这么多配置重复就太好了。 - Valentin Despa
如果我们想要检查MR分支中的所有提交,目前应该添加以下内容:https://gitlab.com/gitlab-org/gitlab/-/issues/368897#workaround - Abdullah Khawer

0
这应该更容易使用GitLab 13.12(2021年5月,仅限Ultimate):

秘密检测配置工具

GitLab SAST配置工具的基础上,我们正在为安全配置页面添加对秘密检测的支持。
我们相信安全是团队合作的结果,而这个配置工具可以帮助非CI专家更轻松地开始使用GitLab秘密检测

该工具帮助用户创建合并请求,以启用秘密检测扫描,并利用最佳配置实践,如使用由GitLab管理的SAST.gitlab-ci.yml模板
配置工具可以在不存在.gitlab-ci.yml文件时创建新文件,或者更新现有的简单GitLab CI文件,使得该工具可以与已经设置了GitLab CI的项目一起使用。

https://about.gitlab.com/images/13_12/secret_config_button_13_12.png -- Configuration tool for Secret Detection

请参阅文档任务清单


查看GitLab 14.5(2021年11月,适用于所有层级)。

支持额外的秘密检测模式

我们已经更新了GitLab秘密检测扫描器,以便能够检测出47种新的广泛使用的应用程序中的“易于识别”的秘密模式。这使得GitLab秘密检测的可检测模式数量超过90种。

如果您是一个SaaS应用程序供应商,并且您的应用程序生成具有易于识别模式的秘密令牌,并且您希望GitLab能够检测到它们,请在此问题的评论中添加您的正则表达式模式和一些无效的示例令牌(链接1),我们将把它们添加到GitLab秘密检测中。

https://about.gitlab.com/images/14_5/secret-detection.png -- Additional Secret Detection pattern support

请参阅文档问题


GitLab 16.2(2023年7月)此次更新,为所有版本增加了以下功能:

Secret Detection 更新

我们定期发布 GitLab Secret Detection 分析器的更新。在 GitLab 16.2 里程碑中,我们:

  • 为以下内容添加了GitLab 管理的检测规则
    • OpenAI API 密钥。
    • CircleCI 个人和项目访问令牌。感谢社区贡献者 @nathanwfish
  • 改进了使用 keywords 优化的规则性能。
  • 修复了一个问题,即 Secret Detection 结果在代码库中创建了错误位置的永久链接an issue

详细信息请参阅CHANGELOG

如果您使用 GitLab 管理的 Secret Detection 模板Secret-Detection.gitlab-ci.yml)并运行 GitLab 16.0 或更高版本,则会自动收到这些更新。 要保持特定版本的任何分析器并防止自动更新,您可以锁定其版本

有关先前的更改,请参阅最近的 Secret Detection 更新

请参阅文档问题


这只在 ULTIMATE 版本中才可用。 - Everton Arakaki
@EvertonArakaki 第一部分(“Secret Detection 工具”)确实是针对 Ultimate 版本的。第二部分(“额外的 Secret Detection 模式支持”)适用于所有版本。我已经编辑了答案以使其更清晰明了。 - VonC

-1

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

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


但这仍然没有回答问题,因为如果代码中有一个秘密,管道就会成功。 - Everton Arakaki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接