DefectDojo 中的权限 (Pro)

**DefectDojo Pro 功能。**本页所述的成员/组/全局角色 RBAC 系统是 DefectDojo Pro 的一部分。开源版 DefectDojo 使用已授权用户模型——有关开源版的访问控制,请参阅该页面;如果您正在版本之间迁移,请参阅 3.0 升级说明

如果您的团队有多名用户在 DefectDojo 中协作,那么适当地设置基于角色的访问控制(RBAC)非常重要,这样用户才能仅访问特定的数据。安全数据高度敏感,DefectDojo 的访问控制选项让您可以精确控制每位团队成员对信息的访问权限。

本文概述了 DefectDojo 中权限的工作方式。如果您想查看权限可控制的每项操作的详细分类,请参阅我们的**权限图表**文章。

权限类型

DefectDojo 管理四种不同类型的权限:

  • 用户可以被指定为产品或产品类型成员。产品成员身份附带一个角色,使您的用户能够查看并操作 DefectDojo 中的数据类型(产品类型、产品、测试活动、测试和发现项)。用户可以拥有多个产品或产品类型的成员身份,并具有不同级别的访问权限。
  • 用户还可以被指定配置权限,使其能够访问 DefectDojo 中的配置页面。配置权限与产品或产品类型无关,也不与角色关联。
  • 用户可以被指定全局角色,使其对所有产品和产品类型拥有统一级别的访问权限。
  • 用户可以被设置为超级用户:这是一种管理员级别的角色,使其对所有 DefectDojo 数据和配置拥有控制权和访问权。

以上每种权限类型也都可以指定给用户组。如果您在 DefectDojo 中有大量用户,例如某个产品的专职测试团队,组功能可以让您快速设置和维护权限。

产品/产品类型成员身份与角色

当用户被指定为产品或产品类型的成员时,他们还会获得一个角色,该角色控制其与相关发现项数据的交互方式。

角色概述

DefectDojo Pro 提供五种内置角色:读者、编写者、维护者、所有者和 API 导入者。这些角色都可以在全局范围内指定,也可以在特定产品/产品类型内指定。

内置角色是锁定的预设角色,无法编辑或删除,并且在每个 DefectDojo Pro 实例上的权限都相同。如果这些角色都不符合您团队的工作方式,您可以通过选择单项权限,或复制某个内置角色并进行调整,来构建适合的角色。请参阅自定义 RBAC 角色

“底层数据”是指嵌套在某个产品或产品类型下的所有产品、测试活动、测试、发现项或端点。

  • 读者用户可以查看其所分配到的任何产品或产品类型的底层数据,并添加评论。他们不能编辑、添加或以其他方式修改任何底层数据,但可以导出报告并为数据添加备注。
  • 编写者用户拥有读者的全部能力,此外还可以添加或编辑测试活动、测试和发现项。他们不能添加新产品,也不能删除任何底层数据。
  • 维护者用户拥有编写者的全部能力,此外还可以编辑产品或产品类型。他们可以为产品或产品类型添加带有角色的新成员,也可以删除测试活动、测试和发现项。
  • 所有者用户对产品或产品类型拥有最大程度的控制权。他们可以指定其他所有者,也可以删除其被分配到的产品或产品类型。
  • API 导入者用户的能力有限。此角色允许有限的 API 访问,而不会暴露大部分 API 端点,因此适用于自动化场景,或原本就应“外部于” DefectDojo 的用户。他们可以查看底层数据、添加/编辑测试活动,以及导入扫描数据。

有关内置角色的详细信息,请参阅我们的**角色权限图表。有关可赋予角色的完整权限列表,以及如何构建自定义角色,请参阅自定义 RBAC 角色**。

全局角色

拥有全局角色的用户可以根据其被指定的角色,查看并操作 DefectDojo 中的任何数据类型(产品类型、产品、测试活动、测试和发现项)。

组成员身份

用户组可以被添加为产品或产品类型的成员。属于该组的用户将继承对所有相关产品或产品类型的访问权限,并继承指定给该组的角色。

拥有多个角色的用户

  • 如果某用户被指定为某产品的成员,默认情况下不会被授予该产品所属产品类型的任何相关权限。

  • 如果某用户在同一产品或产品类型上最终拥有多个角色(例如一个是直接指定的,另一个是从组继承而来的),他们将获得其在该处所持有的所有角色的合并权限。

  • 用户的产品角色始终优先于其“默认”产品类型角色。

  • 用户的产品/产品类型角色始终优先于其在该底层产品或产品类型内的全局角色。例如,如果某用户拥有某产品类型的读者角色,但同时被指定为该产品类型下某个产品的所有者,则其仅会针对该产品获得额外的所有者权限。

  • 角色不能剥夺权限,只能叠加权限。例如,如果某用户拥有产品类型角色或全局角色为所有者,那么为其在某个特定产品上指定读者角色,并不会剥夺其在该产品上的所有者权限。

  • 超级用户身份始终优先于任何已指定的角色。

超级用户

超级用户(管理员)在系统中不受任何限制。他们可以更改所有设置、管理用户,并对所有数据拥有读/写访问权限。他们还可以更改 DefectDojo 中所有用户的访问规则。超级用户还会收到所有系统问题和警报的通知。

默认情况下,在新的 DefectDojo 实例上创建的第一个账户将拥有超级用户权限。该用户将能够编辑此后所有 DefectDojo 用户的权限。只有现有的超级用户才能添加另一个超级用户,或为某用户添加全局角色。

配置权限

配置权限虽然与角色类似,但与产品或角色并无关联,必须与角色分开单独指定。普通用户默认没有任何配置权限,指定这些配置权限时应格外谨慎。

用户可以通过不同方式获得配置权限的指定:

  1. 用户可以被直接指定配置权限。具体权限可以直接在用户页面上配置。

  2. 用户组可以被指定配置权限。与角色类似,可以为组添加特定的配置权限,这将使该组的所有成员都获得这些权限。

超级用户拥有所有配置权限,因此其用户页面上不会显示配置权限部分。

组配置权限

如果用户属于某个组,他们还会拥有组配置权限,用于控制其对该组配置的访问级别。组权限与该组的产品或产品类型成员身份并无对应关系。

如果用户创建了一个新组,默认情况下将被赋予该新组的所有者角色。

有关配置权限的更多信息,请参阅我们的**配置权限图表**。

管理默认权限

当 DefectDojo 中创建一个全新用户时——无论是手动创建、通过 SAML/SSO 创建,还是通过任何社交身份验证提供商创建——该用户默认没有任何权限。他们首次登录时将看不到任何产品类型、产品或测试活动。在超级用户为其授予访问权限之前(通过直接授权、全局角色、产品/产品类型成员身份,或将其添加到某个组),他们将无法查看或操作任何数据。

如果您希望每个新创建的用户都能自动获得基线级别的访问权限——例如“每个新的 SSO 用户都应成为某特定组的读者”——您可以在系统设置页面上配置默认组

  1. 打开**⚙️ 配置 → 系统设置**(仅限超级用户)。
  2. 默认组设置为新创建用户应加入的用户组
  3. 默认组角色设置为他们在该组中应持有的角色(例如读者)。
  4. 您也可以选择将默认组电子邮件模式设置为一个正则表达式(例如 .*@yourcompany\.com$),使默认组仅应用于电子邮件地址匹配该模式的用户。
  5. 保存。

默认组默认组角色都必须设置——如果其中任何一项为空,则不会应用默认组。

此设置适用于每一种用户创建方式:手动创建、SAML、OAuth 以及其他社交身份验证提供商。该设置不会追溯应用——即使您之后更改此设置,现有用户仍将保留其当前的组成员身份。

有关 SSO 相关的具体指导,请参阅 SAML 配置,或SSO 配置下您所用提供商对应的部分。