Help us learn about your current experience with the documentation. Take the survey.
策略执行
你可以为每个项目或组创建新的安全策略,但在多个顶级组中重复相同的策略设置可能会很耗时,并带来合规性挑战。在创建策略之前,你应该知道该策略是否应该:
- 在特定项目或组中执行。
- 在多个项目中执行。
- 在整个实例或顶级组中执行。
你可以通过多种方式执行策略:
- 要在单个项目或组中的所有项目中执行策略,请在该项目或组中创建策略。
- 要在多个项目中执行策略,请使用安全策略项目。安全策略项目是一种特殊类型的项目,仅用于包含策略。要在其他组和项目中执行安全策略项目中的策略,请从组或其他项目链接到该安全策略项目。
- 要在整个 GitLab 自托管实例中同时执行策略和合规框架,实例管理员可以使用合规和安全策略管理组。
策略设计指南
设计策略时,你的目标应该是:
- 设计策略执行策略,以实现最小开销但最大覆盖范围
- 确保职责分离
执行
要执行策略以满足你的要求,请考虑以下因素:
- 继承:默认情况下,策略在其链接到的组织单位及其所有后代子组及其项目中执行。
- 范围:要自定义策略执行,你可以定义策略的范围以匹配你的需求。
继承
要最大化策略覆盖范围,将安全策略项目链接到实现你目标的最高组织单位:组、子组或项目。策略在其链接到的组织单位及其所有后代子组及其项目中执行。在最高点执行可以减少所需的安全策略数量,从而降低管理开销。
你可以使用策略继承来逐步推出策略。例如,在推出新策略时,你可以在单个项目中执行它,然后进行测试。如果测试通过,你可以将其从项目中移除,并在组中执行它,逐级向上,直到策略在所有适用的项目中执行。
在现有组或子组上执行的策略会自动在其下创建的任何新子组和项目中执行,前提是:
- 新的子组和项目包含在策略的范围定义中(例如,范围包括该组中的所有项目)。
- 现有组或子组已链接到安全策略项目。
GitLab.com 用户可以对其顶级组或跨子组执行策略,但不能跨 GitLab.com 顶级组执行策略。GitLab 自托管管理员可以在其实例中跨多个顶级组执行策略。
以下示例说明了两个组及其结构:
- Alpha 组包含两个子组,每个子组包含多个项目。
- 安全和合规组包含两个策略。
Alpha 组(包含代码项目)
- 财务(子组)
- 项目 A
- 收款(子组)
- 项目 B
- 项目 C
- 工程(子组)
- 项目 K
- 项目 L
- 项目 M
安全和合规 组(包含安全策略项目)
- 安全策略管理
- 安全策略管理 - 安全策略项目
- SAST 策略
- 秘密检测策略
假设没有策略被执行,请考虑以下示例:
- 如果"SAST"策略在 Alpha 组中执行,它适用于其子组(财务和工程)及其所有项目和子组。如果"秘密检测"策略也在"收款"子组中执行,则两个策略都适用于项目 B 和 C。但是,只有"SAST"策略适用于项目 A。
- 如果"SAST"策略在"收款"子组中执行,它仅适用于项目 B 和 C。没有策略适用于项目 A。
- 如果"秘密检测"策略在项目 K 中执行,它仅适用于项目 K。没有其他子组或项目有策略适用。
范围
你可以通过以下方式细化策略的范围:
- 合规框架:在具有选定合规框架的项目上执行策略。
- 组:
- 组中的所有项目,包括其所有后代子组及其项目。可选择排除特定项目。
- 多个组中的所有项目,包括其所有后代子组及其项目。只有链接到同一安全策略组的组才能在策略中列出。可选择排除特定项目。
- 项目:包含或排除特定项目。只有链接到同一安全策略项目的项目才能在策略中列出。
这些选项可以在同一策略中一起使用。但是,排除优先于包含。
职责分离
职责分离对于成功实施策略至关重要。实施策略以满足必要的合规性和安全性要求,同时允许开发团队实现其目标。
安全和合规团队:
- 应负责定义策略,并与开发团队合作,确保策略满足他们的需求。
开发团队:
- 不应能够以任何方式禁用、修改或规避策略。
要在组、子组或项目上执行安全策略项目,你必须拥有以下任一权限:
- 该组、子组或项目中的所有者角色。
- 该组、子组或项目中的自定义角色,具有
manage_security_policy_link权限。
所有者角色和具有 manage_security_policy_link 权限的自定义角色遵循跨组、子组和项目的标准层次结构规则:
| Organization unit | Group owner or group manage_security_policy_link permission |
Subgroup owner or subgroup manage_security_policy_link permission |
Project owner or project manage_security_policy_link permission |
|---|---|---|---|
| Group | Yes | No | No |
| Subgroup | Yes | Yes | No |
| Project | Yes | Yes | Yes |