Gitlab CI/CD 中的秘密检测

     2023-02-19     25

关键词:

【中文标题】Gitlab CI/CD 中的秘密检测【英文标题】:Secrets Detection in Gitlab 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'));
...

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

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

【问题讨论】:

【参考方案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 的项目。

参见Documentation 和Epic。


见GitLab 14.5(2021 年 11 月)

额外的秘密检测模式支持

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

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

请参阅 Documentation 和 Issue。

【讨论】:

【参考方案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

【讨论】:

基于gitlab的ci/cd系统重点记要

参考技术AGitlab是套功能完善的源码管理系统,平时用于公司内部各研发组的源码同步、问题跟踪、开发协同。Gitlab自带的CI/CD功能与Gitlab更简单、灵活的协同工作,也减小了日常维护的压力,因此,本文针对Gitlab的CI/CD功能做的... 查看详情

gitlab的ci/cd配置管理(代码片段)

gitlab的CI/CD配置管理(二)标签(空格分隔):运维系列一:gitlabCI/CD介绍二:配置gitlab的CI/CD的runner三:代码的MAVEN打包环境四:配置gitlab的CI文件五:发布项目一:gitlabCI/CD介绍1.1gitlabCI/CD概述Gitlab是常用的开源git代码管理工具... 查看详情

为合并请求触发的管道运行应用 GitLab CI/CD 管道更改

】为合并请求触发的管道运行应用GitLabCI/CD管道更改【英文标题】:ApplyGitLabCI/CDpipelinechangesforpipelineruntriggeredbymergerequest【发布时间】:2022-01-0715:40:45【问题描述】:我通过一个新项目的repo根目录中的.gitlab-ci.yml文件在GitLab中创... 查看详情

Heroku:如何在 gitlab CI/CD 中发布现有图像?

】Heroku:如何在gitlabCI/CD中发布现有图像?【英文标题】:Heroku:HowtoreleaseanexistingimageingitlabCI/CD?【发布时间】:2018-11-2707:40:49【问题描述】:我想将我的应用程序部署为来自GitlabCI/CD管道的容器。几天前,我可以按照herokudevCenter... 查看详情

本地机器上的 Gitlab CI/CD 问题

】本地机器上的GitlabCI/CD问题【英文标题】:ProblemswithGitlabCI/CDonlocalmachine【发布时间】:2022-01-0308:43:43【问题描述】:我正在使用gitlab-runner在本地运行CI/CD。当我在.gitlab-ci.yml中指定所有作业时,它可以正常工作stages:-testtest1:stag... 查看详情

gitlab中的覆盖徽章未知

】gitlab中的覆盖徽章未知【英文标题】:Coveragebadgeingitlabisunknown【发布时间】:2022-01-2008:45:56【问题描述】:我正在尝试为GitLab上的python项目设置覆盖徽章。我一直在关注这个question,但它仍然无法正常工作。目前我在"CI/CD&q... 查看详情

Vue Cypress 和 Gitlab CI/CD

】VueCypress和GitlabCI/CD【英文标题】:VueCypressandGitlabCI/CD【发布时间】:2020-07-0309:01:03【问题描述】:我目前正在尝试使用他们的CI/CD平台在Gitlab上运行我的E2E测试。我目前的问题是我的开发服务器和cypress不能同时运行,以便E2E测... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情

如何在 Maven GitLab CI/CD 管道中将 JaCoCo 报告 HTML 转换为 PDF

】如何在MavenGitLabCI/CD管道中将JaCoCo报告HTML转换为PDF【英文标题】:HowdoIconvertJaCoCoreportHTMLtoPDFinMavenGitLabCI/CDpipeline【发布时间】:2021-12-2316:39:33【问题描述】:我正在尝试通过在CI/CD管道中转换为PDF格式来存储JaCoCo报告中的index.ht... 查看详情

Gitlab CI/CD - 用户和权限最佳实践

】GitlabCI/CD-用户和权限最佳实践【英文标题】:GitlabCI/CD-userandpermissionsbestpractices【发布时间】:2020-12-2105:57:06【问题描述】:我正在尝试查找一些指南或文档来讨论设置gitlabCI/CD以自动部署Web服务器(nginx)/Centos或任何Linux的最佳... 查看详情

Flutter 集成测试和 Gitlab CI/CD

】Flutter集成测试和GitlabCI/CD【英文标题】:FlutterintegrationtestingandGitlabCI/CD【发布时间】:2021-01-1505:28:35【问题描述】:我正在尝试使用基于thistutorial的Fastlane和GitLab为我的Flutter应用程序设置CI/CD,但是我在使用Flutter驱动程序自动... 查看详情

GitLab CI/CD 运行程序无法执行

】GitLabCI/CD运行程序无法执行【英文标题】:GitLabCI/CDrunnerfailstoexecute【发布时间】:2021-09-1312:14:25【问题描述】:我正在尝试使用gitlabCI/CD。我正在使用Ubuntu服务器和带有Maven的SpringBoot。一切都很好,跑步者开始管道作业,但它... 查看详情

ci/cd之jenkins+gitlab(代码片段)

文章目录一、Jenkinx+Gitlab持续集成环境概述(1)什么是CI/CD(2)Jenkins概述(3)Gitlab概述(4)Gitlab和Github的区别(5)Jenkins配合Gitlab持续集成系统的工作流程二、部署持续集成环境(1&... 查看详情

Gitlab CI/CD 自动标记发布

】GitlabCI/CD自动标记发布【英文标题】:GitlabCI/CDautotaggingrelease【发布时间】:2021-11-2902:09:20【问题描述】:我正在尝试让我的gitlab管道自动标记master分支,但没有成功。我想做的事由于该项目是一个作曲家包,我想做的是从compo... 查看详情

还在用jenkins?试试gitlab的ci/cd功能吧(代码片段)

...化打包部署,一般都需要借助Jenkins。不过,现在Gitlab的CI/CD功能也能实现自动化部署,并且操作更加简单。如果你也正在使用Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。一、安装通过Gitlab的CI/CD功能实现自动化... 查看详情

gitlab-ci/cd(代码片段)

Gitlab-Runner自动构建服务器搭建1这里讲到的gitlab仓库指的是https://gitlab.com/,自建gitlab仓库也基本相同。项目的构建打包过程相对比较消耗系统性能,所以gitlab将这部分任务都交给了gitlab-runner来做,因为gitlab-runner可以部署到不同... 查看详情

GitLab CI/CD 脚本改进

】GitLabCI/CD脚本改进【英文标题】:GitLabCI/CDScriptImprovement【发布时间】:2021-10-1411:43:47【问题描述】:下面是我的第一个静态网站的gitlab-ci.yml脚本。它正是我需要的。它不需要每个Angular或React的构建过程。有没有人看到改进的... 查看详情