GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。
学习极狐GitLab 的相关资料:
- 极狐GitLab 官网:https://gitlab.cn
- 极狐GitLab 官网文档:https://docs.gitlab.cn
- 极狐GitLab 论坛:https://forum.gitlab.cn/
- 极狐GitLab 安装配置:https://gitlab.cn/install
- 极狐GitLab 资源中心:https://resources.gitlab.cn
为了扩展DevSecOps平台,学习如何将自定义安全扫描器集成到工作流程中是至关重要的,以下是一个易于遵循的教程。
极狐GitLab 是最全面的 DevSecOps 平台,拥有规划、管理、构建、部署、保护、管理和监控应用程序所需的一切。但是,在某些情况下,你可能希望使用第三方或自定义工具来扩展极狐GitLab。比如,你想从单独的解决方案迁移到 DevSecOps 平台、评估第三方工具或将专有或定制的解决方案集成到极狐GitLab 中。
以下涵盖到的一些内容:
- 极狐GitLab DevSecOps 平台可扩展性
极狐GitLab安全扫描器集成
- 合并请求安全小部件
- 流水线安全部分
- 漏洞报告
- 漏洞页面
- 安全仪表板
- 扫描结果 策略集成
教程:集成自定义安全扫描器
- 创建自定义安全扫描器
- 将自定义安全扫描器与极狐GitLab 集成
极狐GitLab DevSecOps 平台可扩展性
极狐GitLab 可以通过多种方式进行扩展,以支持您的组织可能需要的增强功能。这些集成的一些常见示例包括:
- 外部应用程序集成,例如 Jenkins 和 Slack
- 外部问题跟踪集成,例如 Bugzilla 和 Jira
- 外部身份验证提供商集成,例如 LDAP 和 SAML
- 外部安全扫描器集成,例如 Fortify 和 Checkmarx
- 能够响应泄露的机密,例如 AWS 和 GCP 访问密钥
您可以在极狐GitLab 集成文档中查看所有可用的集成。 (注意:文档中并未列出所有集成。)
极狐GitLab安全扫描器集成
第三方或定制的安全扫描器均可被集成到极狐GitLab中,以补充合并请求小部件、流水线安全部分、漏洞报告、漏洞页面、安全仪表板以及扫描结果策略。接下来,我们将逐一回顾这些集成内容。
合并请求安全小部件
合并请求包含一个安全小部件,它可以显示新检测到的漏洞的摘要。
图示:合并请求安全小部件
当您单击漏洞时,您将看到一个弹出窗口,其中包含以下信息:
- 状态
- 描述
- 项目
- 文件
- 身份标识
- 严重程度
- 工具
- 扫描器供应商
图示:漏洞详情
这些漏洞也是可操作的,这意味着它们可以被忽略,也可以创建机密议题。
自定义扫描器的结果可用于填充安全小部件。漏洞数据是从扫描器发出的 JSON 模式填充的。
流水线安全部分
所有启用的安全分析器都在流水线中运行,并将其结果作为制品输出。这些制品将被处理,包括重复数据删除,结果会列在“流线型安全性”选项卡上。您还可以从此处下载生成的 JSON 文件。
图示:流水线安全选项卡
自定义扫描器的结果可用于填充“流水线安全”选项卡。使用扫描器发出的 JSON 模式填充这些列。
漏洞报告
漏洞报告提供有关默认分支扫描中的漏洞的信息,包括:
- 每个严重级别的漏洞总数
- 常见漏洞属性的过滤器
- 每个漏洞的详细信息,以表格布局呈现
图示:漏洞报告
默认分支上的自定义扫描程序的结果可用于填充漏洞报告。
漏洞页面
点击漏洞报告中存在的漏洞会将您带到其漏洞页面。项目中的每个漏洞都有一个漏洞页面,其中提供了详细信息,例如:
- 描述
- 检测时间
- 当前状态
- 检测到的位置
- 可执行的操作
- 关联的议题
- 操作日志
- 解决方案
- 标识符
- 训练
您可以使用漏洞页面中提供的数据对检测到的漏洞进行分类并协助修复。
图示:秘密检测漏洞的漏洞页面
自定义扫描程序的结果可用于填充漏洞页面。漏洞数据是从扫描器发出的 JSON 模式填充的。
安全仪表板
安全仪表板用于评估应用程序的安全状况。 极狐GitLab 为您提供了项目上运行的安全扫描器检测到的漏洞的一系列指标、评级和图表。安全仪表板提供以下数据:
- 组中所有项目在 30 天、60 天或 90 天时间范围内的漏洞趋势
- 根据漏洞严重程度对每个项目进行字母等级评级
- 过去 365 天内检测到的漏洞总数及其严重级别
图示:群组级别安全仪表板
在群组级安全仪表板中,您可以单击项目以访问其特定的安全仪表板,该仪表板提供 365 天视图。
图示:项目级安全仪表板
扫描结果策略集成
扫描结果策略用于根据一项或多项安全扫描作业的结果要求批准。这可以防止不安全的代码被合并到生产中。扫描结果策略在 CI 扫描作业完全执行后进行评估,其中策略是根据已完成的流水线中发布的作业工件报告进行评估的。
例如,您可以创建一个扫描结果策略,如果密钥检测扫描程序发现任何漏洞,则需要项目维护人员的批准。就是这样:
1、在左侧边栏上,选择“搜索”或转至并搜索您要添加策略的项目。
2、在项目左侧边栏上,转到 “安全”>“策略”
3、选择新策略
4、在“扫描结果策略”部分中,选择“选择策略”。
5、填写字段:
- 名称:策略名称
- 描述:策略的描述
- 策略状态:是否启用
- 规则:发生某项操作(需要批准)必须满足的条件
图示:扫描结果策略规则
操作:满足规则中的条件(已定义的漏洞/检测到的许可证)时要采取的操作
图示:扫描结果 策略操作
覆盖项目审批设置:如果选择,以下选项将覆盖项目设置,但仅影响策略中选择的分支
图示:扫描结果策略批准设置
6、点击“使用合并请求配置”按钮。
合并扫描结果策略后,每当您创建合并请求并且满足规则中定义的条件时,就会触发定义的操作。在这种情况下,在合并代码之前至少需要得到维护者的批准。
图示:由于检测到漏洞而阻止合并请求
自定义扫描器的结果可以与扫描结果策略完全集成。如果自定义扫描程序检测到漏洞,则需要先获得批准才能合并代码。您在扫描结果策略中选择的扫描器必须利用适当的 JSON 架构。
教程:集成自定义安全扫描器
现在让我们开始有趣的部分——集成自定义安全扫描器。在本教程中,您将学习如何创建自定义安全扫描器,以及如何将其与极狐GitLab 集成。我们将利用以下项目:
- Fern 模式扫描器:扫描您的文件以查找特定模式,例如密码、私钥。
- 密钥列表:包含用户密码、客户端和密钥的列表。该项目用于展示如何将自定义安全扫描器集成到极狐GitLab 中。
创建自定义安全扫描器
现在让我们创建一个可以集成到极狐GitLab 中的自定义扫描器。在自定义扫描器与极狐GitLab 完全集成之前,扫描器必须:
- 扫描目录中定义的模式
- 按照适当的模式发出 JSON
- 容器化且可访问
- 提供一个模板以允许它在另一个项目上运行
当使用提供的模板在项目上运行 Fern 模式扫描器时,它会执行以下步骤:
1、加载一组定义要检测的模式(正则表达式)的规则。
- 允许配置规则以满足组织不断变化的需求。
2、扫描文件中定义的模式。
3、按照密钥检测规则发出 JSON 报告。
- 此项目中使用 Go 模板来创建 JSON。
- 根据扫描器要查找的内容,确保使用适当的架构。
一旦 JSON 报告作为工件加载到极狐GitLab 中,它将填充合并请求小部件、漏洞报告、漏洞页面、扫描结果策略和安全仪表板(如上定义)。
将自定义安全扫描器与极狐GitLab 集成
创建满足所有集成需求的自定义扫描器后,您可以在极狐GitLab 上运行它。
运行自定义扫描器就像添加模板一样简单。我们可以通过检查Secret List 项目中的 .gitlab-ci.yml
来了解 Fern 模式扫描器模板是如何加载的。
在您希望扫描器运行的项目中创建一个.gitlab-ci.yml 文件。
包括自定义扫描器模板。
您还应该能够使用环境变量配置模板。
将文件提交到主分支。
提交文件后,您可以看到自定义扫描程序将在您的流水线中运行。流水线完成后,扫描器将填充上面在 极狐GitLab 安全扫描器集成部分中定义的所有区域。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。