策略

  • 引入于 13.10 版本,功能标志为 security_orchestration_policies_configuration。默认禁用。
  • 适用于私有化部署版于 14.3 版本。
  • 功能标志移除于 14.4 版本。

极狐GitLab 中的策略可以为安全团队提供一种方法,要求在项目流水线根据指定的配置运行时,运行他们选择的扫描。因此,安全团队可以确信他们设置的扫描没有被更改、替换或禁用。您可以通过导航到项目的 安全与合规 > 策略 页面来访问这些内容。

极狐GitLab 支持以下安全策略:

安全策略项目

所有安全策略都作为 YAML 存储在一个单独的安全策略项目中,该项目关联到开发项目。这种关联可以是一对多的关系,允许一个安全策略项目应用于多个开发项目。关联的项目不需要与它们关联的开发项目在同一个群组中。

Security Policy Project Linking Diagram

尽管可以将一个项目关联到自身并同时作为开发项目和安全策略项目,但不建议这样做。将安全策略项目与开发项目分开,允许安全/合规团队和开发团队之间的职责完全分离。

尽管可以将一个项目关联到自身,并同时用作开发项目和安全策略项目,但不建议这样做。将安全策略项目与开发项目分开可以实现安全/合规团队与开发团队之间职责的完全分离。

所有安全策略都存储在关联的安全策略项目内的 .gitlab/security-policies/policy.yml YAML 文件中。此 YAML 的格式特定于存储在那里的策略类型。示例和架构信息可用于以下策略类型:

大多数策略更改会在合并请求合并后立即生效。未通过合并请求并直接提交到默认分支的任何更改,可能需要长达 10 分钟才能使策略更改生效。

管理关联的安全策略项目

note只有项目所有者有权选择、编辑和取消关联安全策略项目。

作为项目所有者,请执行以下步骤来创建或编辑当前项目与您希望指定为安全策略项目的项目之间的关联:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 安全与合规 > 策略
  3. 选择 编辑策略项目,然后从下拉菜单中搜索并选择您要关联的项目。
  4. 选择 保存

要取消关联安全策略项目,请遵循相同的步骤,但选择垃圾桶图标。

Security Policy Project

查看关联的安全策略项目

所有有权访问项目策略页面但不是项目所有者的用户,将改为查看链接到相关安全策略项目的按钮。如果没有关联安全策略项目,则不会出现链接按钮。

策略管理

策略页面显示所有可用环境的已部署策略。您可以检查策略的信息(例如,描述或执行状态),并创建和编辑部署的策略:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 安全与合规 > 策略

Policies List Page

策略编辑器

您可以使用策略编辑器来创建、编辑和删除策略:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的群组。
  2. 在左侧边栏上,选择 安全与合规 > 策略
    • 要创建新策略,请选择位于 策略 页面上方的 新建策略
    • 要编辑现有策略,请在所选策略菜单中选择 编辑策略

策略编辑器有两种模式:

  • 可视规则模式允许您使用规则块和相关控件构建和预览策略规则。

    Policy Editor Rule Mode

  • YAML 模式允许您以 .yaml 格式输入策略定义,并且针对规则模式不支持的专家用户和案例。

    Policy Editor YAML Mode

您可以交替使用这两种模式并随时在它们之间切换。如果 YAML 资源不正确或包含规则模式不支持的数据,则会自动禁用规则模式。如果 YAML 不正确,您必须使用 YAML 模式修复您的策略,然后才能再次使用规则模式。

完成创建或编辑策略后,选择 使用合并请求配置 按钮保存并应用它,然后合并生成的合并请求。当您按下此按钮时,将验证策略 YAML 并显示任何产生的错误。 此外,如果您是项目所有者并且安全策略项目之前未与此项目关联,则在创建第一个策略合并请求的同时会自动创建和关联一个新项目。

扫描执行策略

查看扫描执行策略

扫描结果策略编辑器

查看扫描结果策略

更改状态

要更改网络策略的状态:

  • 选择要更新的网络策略。
  • 选择 编辑策略
  • 选择 策略状态 切换,更新所选策略。
  • 选择 保存更改,部署网络策略更改。

禁用的网络策略在 podSelector 块中有 network-policy.gitlab.com/disabled_by: gitlab 选择器,缩小了此类策略的范围,因此它不会影响任何 pod。策略本身仍然部署到相应的部署命名空间。

容器网络策略编辑器

策略编辑器仅支持 CiliumNetworkPolicy 规范。不支持常规 Kubernetes NetworkPolicy 资源。

规则模式支持以下规则类型:

完成策略后,选择编辑器底部的 保存策略 将其保存。通过选择编辑器底部的 删除策略,也可以从编辑器界面中删除现有策略。

配置网络策略警报

  • 引入并默认启用于 13.9 版本。
  • 功能标志移除于 14.0 版本,威胁监控警报项目普遍可用。

当您已安装并配置项目的代理后,您可以使用策略警报来跟踪您的策略的影响。

有两种方法可以创建策略警报:

  • 策略编辑器 UI 中,单击 添加警报
  • 在策略编辑器的 YAML 模式下,通过 metadata.annotations 属性:

    metadata:
      annotations:
        app.gitlab.com/alert: 'true'
    

添加后,UI 会更新并显示有关过多警报的危险的警告。

故障排除

Branch name 'update-policy-<timestamp>' does not follow the pattern '<branch_name_regex>'

当您创建新的安全策略或更改现有策略时,会自动创建一个新分支,其分支名称遵循 update-policy-<timestamp>。例如:update-policy-1659094451

如果您的群组或实例推送规则不允许包含文本 update-policy-<timestamp> 的分支名称形式,您将收到一条错误消息:Branch name does not follow the pattern 'update-policy-<timestamp>'

解决方法是修改您的群组或实例推送规则,以允许分支遵循 update-policy- 后跟整数时间戳的形式。