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

安全策略项目

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

安全策略项目可以在多个项目中执行策略。安全策略项目是一种特殊的项目类型,仅用于包含策略。要执行安全策略项目中的策略,请将该安全策略项目链接到您要执行策略的项目、子组或组。一个安全策略项目可以包含多个策略,但它们会一起执行。在组或子组上执行的安全策略项目适用于层次结构下的所有内容,包括所有子组及其项目。

通过合并请求进行的策略更改在合并请求合并后立即生效。那些不经过合并请求,而是直接提交到默认分支的更改,可能需要最多 10 分钟才能使策略更改生效。

策略存储在 .gitlab/security-policies/policy.yml YAML 文件中。

安全策略项目实施

安全策略项目的实施选项在 GitLab.com、GitLab Dedicated 和 GitLab Self-Managed 之间略有不同。主要区别在于在 GitLab.com 上只能创建子组。确保职责分离需要更细粒度的权限配置。

在您的 GitLab.com 命名空间中全局执行策略

  • Tier: Ultimate
  • Offering: GitLab.com

先决条件:

  • 您必须拥有 Owner 角色或具有 manage_security_policy_link 权限的自定义角色,才能链接到安全策略项目。更多信息,请参见职责分离

在您的 GitLab.com 命名空间中全局执行策略的高级工作流程:

  1. 从您的顶级组访问 Policies 选项卡。

  2. 在子组中,转到 Policies 选项卡并创建一个测试策略。

    您可以创建一个禁用的策略用于测试。创建策略会自动在您的顶级组下创建一个新的安全策略项目。该项目用于存储您的 policy.yml 或策略即代码。

  3. 根据需要检查和设置新创建项目的权限。

    默认情况下,Owner 和 Maintainer 可以创建、编辑和删除策略。Developer 可以提出策略更改但无法合并它们。

  4. 在您子组中创建的安全策略项目中,创建所需的策略。

    您可以使用您创建的 Security Policy Management 项目中的策略编辑器,在 Policies 选项卡下。或者,您可以直接更新存储在新创建的安全策略项目 Security Policy Management - security policy project 中的 policy.yml 文件中的策略。

  5. 将组、子组或项目链接到安全策略项目。

    作为子组所有者或具有适当权限的项目所有者,您可以访问 Policies 页面并创建到安全策略项目的链接。包含完整路径,项目名称应以 “- security policy project” 结尾。所有链接的组、子组和项目都将受到安全策略项目中创建的任何策略的"强制执行"。详情请参见链接到安全策略项目

  6. 默认情况下,当策略启用时,它会在所有链接的组、子组和项目中执行。

    要进行更细粒度的执行,请添加策略范围。策略范围允许您针对特定项目集或包含一组合规框架标签的项目执行策略。

  7. 如果您需要额外的限制,例如阻止继承的权限或要求对策略更改进行额外的审查或批准,您可以创建一个仅限您的安全策略项目的额外策略并强制执行额外的批准。

在 GitLab Dedicated 或 GitLab Self-Managed 中全局执行策略

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

在 GitLab Self-Managed 中,您还可以使用合规和安全策略组来在整个实例中执行安全策略。

先决条件:

  • 您必须拥有 Owner 角色或具有 manage_security_policy_link 权限的自定义角色,才能链接到安全策略项目。更多信息,请参见职责分离
  • 要在整个实例中支持审批组,请在您的GitLab 实例应用程序设置中启用 security_policy_global_group_approvers_enabled

在多个组中执行策略的高级工作流程:

  1. 创建一个单独的组来包含您的策略并确保职责分离。

    通过创建一个独立的组,您可以最小化继承权限的用户数量。

  2. 在新组中,访问 Policies 选项卡。

    这作为策略编辑器的主要位置,允许您在 UI 中创建和管理策略。

  3. 创建一个测试策略(您可以创建一个禁用的策略用于测试)。

    创建策略会自动在您的组下创建一个新的安全策略项目。该项目用于存储您的 policy.yml 或策略即代码。

  4. 根据需要检查和设置新创建项目的权限。

    默认情况下,Owner 和 Maintainer 可以创建、编辑和删除策略。Developer 可以提出策略更改但无法合并它们。

  5. 在您子组中创建的安全策略项目中,创建所需的策略。

    您可以使用您创建的 Security Policy Management 项目中的策略编辑器,在 Policies 选项卡下。或者,您可以直接更新存储在新创建的安全策略项目 Security Policy Management - security policy project 中的 policy.yml 文件中的策略。

  6. 将组、子组或项目链接到安全策略项目。

    作为子组所有者或具有适当权限的项目所有者,您可以访问 Policies 页面并创建到安全策略项目的链接。包含完整路径,项目名称应以 “- security policy project” 结尾。所有链接的组、子组和项目都将受到安全策略项目中创建的任何策略的"强制执行"。更多信息,请参见链接到安全策略项目

  7. 默认情况下,当策略启用时,它会在所有链接的组、子组和项目中执行。要进行更细粒度的执行,请添加策略范围。策略范围允许您针对特定项目集或包含一组合规框架标签的项目执行策略。

  8. 如果您需要额外的限制,例如阻止继承的权限或要求对策略更改进行额外的审查或批准,您可以创建一个仅限您的安全策略项目的额外策略并强制执行额外的批准。

链接到安全策略项目

要将安全策略项目中的策略强制执行到组、子组或项目,您需要将它们链接起来。默认情况下,所有链接的实体都会被强制执行。要按策略细粒度地强制执行策略,您可以在每个策略中设置策略范围。

先决条件:

  • 您必须拥有 Owner 角色或具有 manage_security_policy_link 权限的自定义角色,才能链接到安全策略项目。更多信息,请参见职责分离

要将组、子组或项目链接到安全策略项目:

  1. 在左侧边栏,选择 Search or go to 并找到您的项目、子组或组。
  2. 选择 Secure > Policies
  3. 选择 Edit Policy Project,然后从下拉列表中搜索并选择您要链接的项目。
  4. 选择 Save

要取消链接安全策略项目,请遵循相同的步骤,但在对话框中选择垃圾桶图标。 您可以从同一顶级组中的不同子组,或从完全不同的顶级组链接到安全策略项目。 但是,当您强制执行管道执行策略时,用户必须至少对包含策略中引用的 CI/CD 配置的项目具有只读访问权限才能触发管道。

查看链接的安全策略项目

有权访问项目策略页面但不是项目所有者的用户会看到一个链接到关联安全策略项目的按钮。

更改策略限制

  • Offering: GitLab Self-Managed

出于性能原因,GitLab 限制了可以在安全策略项目中配置的策略数量。

如果您将限制降低到当前存储在安全策略项目中的策略数量以下,GitLab 在该限制后不会强制执行任何策略。要重新启用策略,请将限制增加到与最大安全策略项目中的策略数量相匹配。

默认限制为:

策略类型 默认策略限制
合并请求审批策略 5
扫描执行策略 5
管道执行策略 5
漏洞管理策略 5

在 GitLab Self-Managed 实例上,实例管理员可以调整整个实例的限制,每种类型的策略最多 20 个。 管理员还可以更改特定顶级组的限制。

更改实例的策略限制

要更改您的组织可以在安全策略项目中存储的最大策略数量:

  1. 转到 Admin Area > Settings > Security and compliance
  2. 展开 Security policies 部分。
  3. 对于您要更改的每种策略类型,为 Maximum number of {policy type} allowed per security policy configuration 设置一个新值。
  4. 选择 Save changes

更改顶级组的策略限制

组限制可以超过配置的或默认的实例限制。要更改您的组织可以在顶级组的安全策略项目中存储的最大策略数量:

增加这些限制可能会影响系统性能,特别是当您应用大量复杂策略时。

要调整顶级组的限制:

  1. 转到 Admin Area > Overview > Groups
  2. 在您要修改的顶级组的行中,选择 Edit
  3. 对于您要更改的每种策略类型,为 Maximum number of {policy type} allowed per security policy configuration 设置一个新值。
  4. 选择 Save changes

如果您将单个组的限制设置为 0,系统将使用实例范围的默认值。这确保了具有零限制的组仍然可以根据默认实例配置创建策略。

删除安全策略项目

要删除安全策略项目或其父组之一,您必须从所有其他项目或组中删除到它的链接。否则,当您尝试删除链接的安全策略项目或父组时,会显示错误消息。