Help us learn about your current experience with the documentation. Take the survey.

教程:设置扫描执行策略

  • Tier: Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

本教程教你如何创建和应用 扫描执行策略。 这些策略作为 CI/CD 管道的一部分强制执行应用程序安全工具。在本教程中, 你将创建一个策略,在两个项目的 CI/CD 管道中强制执行秘密检测。

在本教程中,你将:

开始之前

  • 你需要有权在现有群组中创建新项目。

创建项目 A

在标准工作流程中,你可能已经有一个现有项目。在本教程中, 你从零开始,所以第一步是创建一个项目。

要创建项目 A:

  1. 在左侧边栏,选择 搜索或跳转至 并找到你的群组。

  2. 选择 新建项目

  3. 选择 创建空白项目

  4. 填写字段。对于 项目名称,输入 go-example-a

  5. 选择 创建项目

  6. 选择 添加 (+) > 新文件

  7. 在文件名中输入 helloworld.go

  8. 将以下示例 Go 代码复制并粘贴到文件中。

    package main
    import "fmt"
    func main() {
        fmt.Println("Hello world")
    }
  9. 选择 提交更改

下一步是创建扫描执行策略。当创建第一个安全策略时, 会创建一个策略项目。策略项目存储了链接到它的任何项目中创建的安全策略。 将策略与它们保护的项目分开,使你的安全配置可重用且更易于维护。

创建扫描执行策略

要创建扫描执行策略:

  1. 在左侧边栏,选择 搜索或跳转至 并搜索 go-example-a 项目。

  2. 转到 安全 > 策略

  3. 选择 新建策略

  4. 扫描执行策略 部分,选择 选择策略

  5. 填写字段。

    • 名称:强制执行秘密检测。
    • 策略状态:已启用。
    • 操作:运行秘密检测扫描。
    • 条件:每次为所有分支运行管道时触发。
  6. 选择 通过合并请求配置

    策略项目 go-example-a - 安全项目 被创建,并创建了一个合并请求。

  7. 可选。在合并请求的 更改 选项卡中查看生成的策略 YAML。

  8. 转到 概览 选项卡并选择 合并

  9. 在左侧边栏,选择 搜索或跳转至 并搜索 go-example-a 项目。

  10. 转到 安全 > 策略

你现在拥有一个扫描执行策略,它会在每个合并请求上为任何分支运行秘密检测扫描。 通过在项目 A 中创建合并请求来测试该策略。

使用项目 A 测试扫描执行策略

要测试扫描执行策略:

  1. 在左侧边栏,选择 搜索或跳转至 并找到名为 go-example-a 的项目。

  2. 转到 代码 > 仓库

  3. 选择 helloworld.go 文件。

  4. 选择 编辑 > 编辑单个文件

  5. fmt.Println("hello world") 行后立即添加以下行:

    var GitLabFeedToken = "feed_token=eFLISqaBym4EjAefkl58"
  6. 目标分支 字段中,输入 feature-a

  7. 选择 提交更改

  8. 当合并请求页面打开时,选择 创建合并请求

    让我们检查扫描执行策略是否生效。记住我们指定了秘密检测 应该在每次管道运行时为任何分支运行。

  9. 在刚刚创建的合并请求中,转到 管道 选项卡并选择创建的管道。

    在这里你可以看到秘密检测作业已运行。让我们检查它是否检测到了测试秘密。

  10. 选择秘密检测作业。

    在作业日志的底部附近,以下输出确认检测到了示例秘密。

    [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:

  1. 在左侧边栏,选择 搜索或跳转至 并找到你的群组。

  2. 选择 新建项目

  3. 选择 创建空白项目

  4. 填写字段。对于 项目名称,输入 go-example-b

  5. 选择 创建项目

  6. 选择 添加 (+) > 新文件

  7. 在文件名中输入 helloworld.go

  8. 将以下示例 Go 代码复制并粘贴到文件中。

    package main
    import "fmt"
    func main() {
        fmt.Println("Hello world")
    }
  9. 选择 提交更改

现在你有了另一个项目,将它链接到相同的策略项目。

将项目 B 链接到安全策略项目

要将项目 B 链接到安全策略项目:

  1. 在左侧边栏,选择 搜索或跳转至 并找到 go-example-b 项目。
  2. 转到 安全 > 策略
  3. 选择 编辑策略项目
  4. 选择下拉列表,然后搜索在本教程开始时创建的 安全策略项目。
  5. 选择 保存

将项目 B 链接到相同的策略项目会导致相同的策略被应用。扫描 执行策略会在每个合并请求上为任何分支运行秘密检测扫描。让我们通过在项目 B 中创建合并请求来测试该策略。

使用项目 B 测试扫描执行策略

要测试扫描执行策略:

  1. 在左侧边栏,选择 搜索或跳转至 并找到 go-example-b 项目。

  2. 转到 代码 > 仓库

  3. 选择 helloworld.go 文件。

  4. 选择 编辑 > 编辑单个文件

  5. fmt.Println("hello world") 行后立即添加以下行:

    var AdobeClient = "4ab4b080d9ce4072a6be2629c399d653"
  6. 目标分支 字段中,输入 feature-b

  7. 选择 提交更改

  8. 当合并请求页面打开时,选择 创建合并请求

    让我们检查扫描执行策略是否生效。记住我们指定了秘密检测 应该在每次管道运行时为任何分支运行。

  9. 在刚刚创建的合并请求中,转到 管道 选项卡并选择创建的管道。

  10. 在刚刚创建的合并请求中,选择管道的 ID。

    在这里你可以看到秘密检测作业已运行。让我们检查它是否检测到了测试秘密。

  11. 选择秘密检测作业。

    在作业日志的底部附近,以下输出确认检测到了示例秘密。

    [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

恭喜。你已经学会了如何创建扫描执行策略并在项目上强制执行它。