教程:设置扫描执行策略
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
本教程教你如何创建和应用 扫描执行策略。 这些策略作为 CI/CD 管道的一部分强制执行应用程序安全工具。在本教程中, 你将创建一个策略,在两个项目的 CI/CD 管道中强制执行秘密检测。
在本教程中,你将:
开始之前
- 你需要有权在现有群组中创建新项目。
创建项目 A
在标准工作流程中,你可能已经有一个现有项目。在本教程中, 你从零开始,所以第一步是创建一个项目。
要创建项目 A:
-
在左侧边栏,选择 搜索或跳转至 并找到你的群组。
-
选择 新建项目。
-
选择 创建空白项目。
-
填写字段。对于 项目名称,输入
go-example-a。 -
选择 创建项目。
-
选择 添加 (
+) > 新文件。 -
在文件名中输入
helloworld.go。 -
将以下示例 Go 代码复制并粘贴到文件中。
package main import "fmt" func main() { fmt.Println("Hello world") } -
选择 提交更改。
下一步是创建扫描执行策略。当创建第一个安全策略时, 会创建一个策略项目。策略项目存储了链接到它的任何项目中创建的安全策略。 将策略与它们保护的项目分开,使你的安全配置可重用且更易于维护。
创建扫描执行策略
要创建扫描执行策略:
-
在左侧边栏,选择 搜索或跳转至 并搜索
go-example-a项目。 -
转到 安全 > 策略。
-
选择 新建策略。
-
在 扫描执行策略 部分,选择 选择策略。
-
填写字段。
- 名称:强制执行秘密检测。
- 策略状态:已启用。
- 操作:运行秘密检测扫描。
- 条件:每次为所有分支运行管道时触发。
-
选择 通过合并请求配置。
策略项目
go-example-a - 安全项目被创建,并创建了一个合并请求。 -
可选。在合并请求的 更改 选项卡中查看生成的策略 YAML。
-
转到 概览 选项卡并选择 合并。
-
在左侧边栏,选择 搜索或跳转至 并搜索
go-example-a项目。 -
转到 安全 > 策略。
你现在拥有一个扫描执行策略,它会在每个合并请求上为任何分支运行秘密检测扫描。 通过在项目 A 中创建合并请求来测试该策略。
使用项目 A 测试扫描执行策略
要测试扫描执行策略:
-
在左侧边栏,选择 搜索或跳转至 并找到名为
go-example-a的项目。 -
转到 代码 > 仓库。
-
选择
helloworld.go文件。 -
选择 编辑 > 编辑单个文件。
-
在
fmt.Println("hello world")行后立即添加以下行:var GitLabFeedToken = "feed_token=eFLISqaBym4EjAefkl58" -
在 目标分支 字段中,输入
feature-a。 -
选择 提交更改。
-
当合并请求页面打开时,选择 创建合并请求。
让我们检查扫描执行策略是否生效。记住我们指定了秘密检测 应该在每次管道运行时为任何分支运行。
-
在刚刚创建的合并请求中,转到 管道 选项卡并选择创建的管道。
在这里你可以看到秘密检测作业已运行。让我们检查它是否检测到了测试秘密。
-
选择秘密检测作业。
在作业日志的底部附近,以下输出确认检测到了示例秘密。
[INFO] [secrets] [2023-09-04T03:46:36Z] ▶ 3:46AM INF 1 commits scanned. [INFO] [secrets] [2023-09-04T03:46:36Z] ▶ 3:46AM INF scan completed in 60ms [INFO] [secrets] [2023-09-04T03:46:36Z] ▶ 3:46AM WRN leaks found: 1
你已经看到该策略在一个项目上生效。创建另一个项目并应用相同的策略。
创建项目 B
要创建项目 B:
-
在左侧边栏,选择 搜索或跳转至 并找到你的群组。
-
选择 新建项目。
-
选择 创建空白项目。
-
填写字段。对于 项目名称,输入
go-example-b。 -
选择 创建项目。
-
选择 添加 (
+) > 新文件。 -
在文件名中输入
helloworld.go。 -
将以下示例 Go 代码复制并粘贴到文件中。
package main import "fmt" func main() { fmt.Println("Hello world") } -
选择 提交更改。
现在你有了另一个项目,将它链接到相同的策略项目。
将项目 B 链接到安全策略项目
要将项目 B 链接到安全策略项目:
- 在左侧边栏,选择 搜索或跳转至 并找到
go-example-b项目。 - 转到 安全 > 策略。
- 选择 编辑策略项目。
- 选择下拉列表,然后搜索在本教程开始时创建的 安全策略项目。
- 选择 保存。
将项目 B 链接到相同的策略项目会导致相同的策略被应用。扫描 执行策略会在每个合并请求上为任何分支运行秘密检测扫描。让我们通过在项目 B 中创建合并请求来测试该策略。
使用项目 B 测试扫描执行策略
要测试扫描执行策略:
-
在左侧边栏,选择 搜索或跳转至 并找到
go-example-b项目。 -
转到 代码 > 仓库。
-
选择
helloworld.go文件。 -
选择 编辑 > 编辑单个文件。
-
在
fmt.Println("hello world")行后立即添加以下行:var AdobeClient = "4ab4b080d9ce4072a6be2629c399d653" -
在 目标分支 字段中,输入
feature-b。 -
选择 提交更改。
-
当合并请求页面打开时,选择 创建合并请求。
让我们检查扫描执行策略是否生效。记住我们指定了秘密检测 应该在每次管道运行时为任何分支运行。
-
在刚刚创建的合并请求中,转到 管道 选项卡并选择创建的管道。
-
在刚刚创建的合并请求中,选择管道的 ID。
在这里你可以看到秘密检测作业已运行。让我们检查它是否检测到了测试秘密。
-
选择秘密检测作业。
在作业日志的底部附近,以下输出确认检测到了示例秘密。
[INFO] [secrets] [2023-09-04T04:22:28Z] ▶ 4:22AM INF 1 commits scanned. [INFO] [secrets] [2023-09-04T04:22:28Z] ▶ 4:22AM INF scan completed in 58.2ms [INFO] [secrets] [2023-09-04T04:22:28Z] ▶ 4:22AM WRN leaks found: 1
恭喜。你已经学会了如何创建扫描执行策略并在项目上强制执行它。