Help us learn about your current experience with the documentation. Take the survey.
秘密检测
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
入门指南
下载解决方案组件
- 从您的账户团队获取邀请码。
- 使用您的邀请码从解决方案组件网络商店下载解决方案组件。
前置条件
- GitLab Ultimate 层级
- 对您的 GitLab 实例或群组的管理员访问权限
- 为您的项目启用了秘密检测
配置秘密检测自定义规则
本指南帮助您在全局级别实施秘密检测策略。此解决方案扩展了默认的秘密检测规则,以包含对 PII 数据元素(如社会保障号码和明文密码)的检测。此规则扩展被视为远程规则集。
配置自定义规则集
您可以按照以下步骤设置自定义规则集:
- 创建一个顶级群组
Secret Detection - 从您下载的组件中,将项目
Secret Detection Custom Ruleset复制到您新创建的Secret Detection群组中。
此自定义规则集扩展了 GitLab 预构建规则。扩展可以检测并警告包括以下内容的秘密:
- PII 数据元素:社会保障号码
- 明文密码
自定义规则集文件
自定义规则集在 .gitlab/secret-detection-ruleset.toml 中定义
可以使用 regex 定义规则
PII 数据元素检测
PII 数据元素检测的扩展规则
[[rules]]
id = "ssn"
description = "Social Security Number"
regex = "[0-9]{3}-[0-9]{2}-[0-9]{4}"
tags = ["ssn", "social-security-number"]
keywords = ["ssn"]明文密码
明文密码的扩展规则
[[rules]]
id = "password-secret"
description = "Detect secrets starting with Password or PASSWORD"
regex = "(?i)Password[:=]\s*['\"]?[^'\"]+['\"]?"
tags = ["password", "secret"]
keywords = ["password", "PASSWORD"]访问已定义的自定义规则集
为了访问自定义规则集,您需要创建一个群组访问令牌,该令牌会生成一个机器人用户。机器人用户可用于运行全局策略秘密检测的任何项目进行身份验证和访问自定义规则集。
要设置访问和身份验证,请按照以下步骤操作:
- 创建群组令牌:在群组
Secret Detection中,在设置菜单选项下创建群组访问令牌Secret Detection Group Token,给令牌reporter角色,并授予read_repository访问权限
- 创建群组变量:复制令牌值并安全存储。在
设置菜单选项下添加一个群组变量,键名为SECRET_DETECTION_GROUP_TOKEN,值为令牌值。 - 获取群组令牌机器人用户:在同一群组中,导航到
管理菜单选项选择成员,查找群组访问令牌Secret Detection Group Token对应的机器人用户,复制表示群组机器人用户的值,格式为@group_[group_id]_bot_[random_number]
实施指南
本指南涵盖配置策略以使用集中式自定义规则集为所有项目运行秘密检测的步骤。
配置秘密检测策略
要作为强制执行的全局策略在管道中自动运行秘密检测, 请在最高级别(在本例中为顶级群组)设置策略。 要创建新的秘密检测策略:
- 创建策略:在同一群组
Secret Detection中,导航到该群组的 安全 > 策略 页面。 - 选择 新建策略。
- 选择 扫描执行策略。
- 配置策略:给策略命名
Secret Detection Policy,输入描述并选择Secret Detection扫描 - 通过选择"此群组中的所有项目"(并可选地设置例外)或"特定项目"(并从下拉列表中选择项目)来设置 策略范围。
- 在 操作 部分,“Secret Detection” 默认显示。
- 在 条件 部分,如果您希望按计划运行扫描而不是在每次提交时运行,可以可选地将"触发器:“更改为"计划:"。
- 设置对自定义规则集的访问:添加 CI 变量,值为机器人用户、群组变量和自定义规则集项目的 URL。
自定义规则集托管在不同的项目中,被视为远程规则集,因此必须使用 SECRET_DETECTION_RULESET_GIT_REFERENCE。
variables:
SECRET_DETECTION_RULESET_GIT_REFERENCE: "group_[group_id]_bot_[random_number]:$SECRET_DETECTION_GROUP_TOKEN@[custom ruleset project URL]"
SECRET_DETECTION_HISTORIC_SCAN: "true"UI 配置如屏幕所示:
有关此 CI 变量的详细信息,请参阅此文档。
- 点击 创建策略。
完整策略配置
创建策略后,供参考,以下是完整的策略配置:
---
scan_execution_policy:
- name: Scan Execution for Secret Detection with Custom Rules
description: ''
enabled: true
policy_scope:
projects:
excluding: []
rules:
- type: pipeline
branches:
- "*"
actions:
- scan: secret_detection
variables:
SECRET_DETECTION_RULESET_GIT_REFERENCE: "@group_[group_id]_bot_[random_number]:$SECRET_DETECTION_GROUP_TOKEN@gitlab.com/example_group/secret-detection/secret-detection-custom-ruleset"
SECRET_DETECTION_HISTORIC_SCAN: 'true'
skip_ci:
allowed: true
allowlist:
users: []
approval_policy: []工作原理
策略运行后,与全局策略关联的所有项目都将在管道中自动运行 secret_detection_0 作业。
将检测并显示秘密。如果有合并请求,净新增的秘密将显示在 MR 小部件中。如果是默认分支合并,它们将显示在安全漏洞报告中,如下所示:
故障排除
策略未应用
确保您修改的安全策略项目已正确链接到您的群组。更多内容请参阅链接到安全策略项目。