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

教程:设置合并请求审批策略

  • 等级:Ultimate
  • 服务类型:GitLab.com, GitLab Self-Managed, GitLab Dedicated

本教程将向您展示如何创建和配置 合并请求审批策略。这些策略可以根据扫描结果设置采取相应的操作。 例如,在本教程中,您将设置一个策略:如果在合并请求中检测到漏洞,则需要两位指定用户的审批。

设置合并请求审批策略的步骤:

  1. 创建测试项目
  2. 添加合并请求审批策略
  3. 测试合并请求审批策略

开始之前

  • 本教程使用的命名空间必须至少包含三个用户,包括您自己。如果您没有其他两个用户,必须先创建他们。详细信息请参阅 创建用户
  • 您需要有权在现有组中创建新项目。

创建测试项目

  1. 在左侧边栏顶部,选择 新建 ( plus ) 和 新项目/仓库
  2. 选择 创建空白项目
  3. 填写字段。
    • 项目名称sast-scan-result-policy
    • 选中 启用静态应用程序安全测试 (SAST) 复选框。
  4. 选择 创建项目
  5. 转到新创建的项目并创建 受保护分支

添加合并请求审批策略

接下来,您将为测试项目添加合并请求审批策略:

  1. 在左侧边栏,选择 搜索或转到 并找到 sast-scan-result-policy 项目。

  2. 选择 安全 > 策略

  3. 选择 新策略

  4. 合并请求审批策略 中,选择 选择策略

  5. 填写字段。

    • 名称sast-scan-result-policy
    • 策略状态已启用
  6. 添加以下规则:

    如果 |安全扫描| 来自 |SAST| 在针对 |所有受保护分支| 的开放合并请求中找到超过 |0| |所有严重性级别| |所有漏洞状态| 的漏洞
  7. 操作 设置为:

    THEN 要求以下审批者中的 | 2 | 人批准:
  8. 选择两个用户。

  9. 选择 通过合并请求配置

    应用程序会创建一个新项目来存储链接到它的策略,并创建一个合并请求来定义该策略。

  10. 选择 合并

  11. 在左侧边栏,选择 搜索或转到 并找到 sast-scan-result-policy 项目。

  12. 选择 安全 > 策略

    您可以看到之前步骤中添加的策略列表。

测试合并请求审批策略

做得好,您已经创建了合并请求审批策略。要测试它,请创建一些漏洞并检查结果:

  1. 在左侧边栏,选择 搜索或转到 并找到 sast-scan-result-policy 项目。

  2. 选择 代码 > 仓库

  3. 添加 ( plus ) 下拉列表中,选择 新建文件

  4. 文件名 字段中输入 main.ts

  5. 在文件内容中,复制以下内容:

    // 非字面量 require - tsr-detect-non-literal-require
    var lib: String = 'fs'
    require(lib)
    
    // 使用变量的 eval - tsr-detect-eval-with-expression
    var myeval: String = 'console.log("Hello.");';
    eval(myeval);
    
    // 不安全的正则表达式 - tsr-detect-unsafe-regexp
    const regex: RegExp = /(x+x+)+y/;
    
    // 非字面量正则表达式 - tsr-detect-non-literal-regexp
    var myregexpText: String = "/(x+x+)+y/";
    var myregexp: RegExp = new RegExp(myregexpText);
    myregexp.test("(x+x+)+y");
    
    // 标记转义已禁用 - tsr-detect-disable-mustache-escape
    var template: Object = new Object;
    template.escapeMarkup = false;
    
    // 检测 HTML 注入 - tsr-detect-html-injection
    var element: Element =  document.getElementById("mydiv");
    var content: String = "mycontent"
    Element.innerHTML = content;
    
    // 时序攻击 - tsr-detect-possible-timing-attacks
    var userInput: String = "Jane";
    var auth: String = "Jane";
    if (userInput == auth) {
      console.log(userInput);
    }
  6. 提交信息 字段中,输入 Add vulnerable file

  7. 目标分支 字段中,输入 test-branch

  8. 选择 提交更改新建合并请求 表单将打开。

  9. 选择 创建合并请求

  10. 在新的合并请求中,选择 Create merge request

    等待流水线完成。这可能需要几分钟时间。

合并请求安全小部件确认安全扫描检测到一个潜在的漏洞。根据合并请求审批策略的定义,该合并请求被阻止并等待批准。

您现在知道如何设置和使用合并请求审批策略来捕获漏洞了!