开源版权限 (Open Source)

开源版 DefectDojo 通过**已授权用户(Authorized Users)**模型来控制对产品和产品类型的访问。每个产品和产品类型都有一个已授权用户面板,列出可以查看该记录及其下嵌套数据的人员。

如果你使用的是 DefectDojo Pro,本文不适用于你的安装环境——Pro 使用一套更完善的基于角色的系统,详见 DefectDojo 中的权限

如何授予访问权限

共有两份名单,用户只需出现在其中一份上即可获得访问权限:

  • 产品的已授权用户名单授予对该单个产品的访问权限,以及嵌套在其下的所有内容(其测试活动、测试、发现项和端点)。
  • 产品类型的已授权用户名单授予对该产品类型本身的访问权限,并会级联到其下的每一个产品。已被授权访问某个产品类型的用户,无需再逐一添加到每个子产品中——他们已经被覆盖了。

这里没有角色、没有组,也没有全局角色。用户要么在名单上(或者是超级用户/职员——见下文),要么就无法看到该产品。

超级用户和职员可绕过名单

在 DefectDojo 中被标记为**超级用户(superuser)职员(staff)**的用户,无论已授权用户名单如何,都可以查看并操作每一个产品和产品类型。这些名单的作用是为非职员用户授予访问权限,而不会限制职员或超级用户。

在全新安装的 DefectDojo 上创建的第一个账户会自动成为超级用户。

谁可以编辑名单

只有超级用户职员用户才能看到用于在已授权用户面板中添加或移除人员的操作控件。其他所有能够访问某个产品或产品类型的人,看到的都是一份只读名册——可用来查看团队中还有谁,但无法用来更改成员身份。

该面板的位置

已授权用户面板出现在经典 UI 的两个页面上:

  • 产品详情页上有该产品的已授权用户面板。它为职员用户提供两项操作:
    • 将用户添加到该产品的已授权用户名单
    • 将用户从该产品的已授权用户名单中移除
  • 产品类型详情页上有该产品类型的已授权用户面板,同样提供相应的两项操作:
    • 将用户添加到该产品类型的已授权用户名单
    • 将用户从该产品类型的已授权用户名单中移除

当你将某用户从产品类型的名单中移除时,级联授权也会一并移除——除非该用户仍在某个具体产品的名单上,或者本身是职员/超级用户,否则他们将失去对所有子产品的访问权限。

在产品级和产品类型级访问权限之间做选择

几条经验法则:

  • 如果某人应该能看到某个类别下的所有产品(例如某个特定团队拥有的所有产品),把他们加入产品类型名单,剩下的交给级联机制处理即可。
  • 如果某人只应该看到某一个特定的产品,把他们加入该产品的名单。
  • 如果你发现自己在把同一个人反复添加到某个产品类型下的多个单独产品中,这就说明你应该改为将其添加到该产品类型。

从旧版本 DefectDojo 升级而来

DefectDojo 开源版在 3.0 版本中恢复使用了已授权用户模型。如果你正在从具有成员 / 组 / 全局角色系统的版本升级,你现有的访问权限会在升级过程中自动迁移到已授权用户模型中——无需手动映射。

此次升级附带了一个只读的管理命令 preview_legacy_authorization_migration,它会针对你数据库的副本,汇总升级将带来的变更。推荐的做法是:在预发布环境中安装 3.0 版本并使用一份生产环境快照,运行该命令,审查汇总结果,然后再升级生产环境。

如果你是朝相反方向迁移——从开源版迁移到 DefectDojo Pro——Pro 附带了一个 reconcile_authorized_users_to_rbac 命令,可以将已授权用户的访问权限迁移到 Pro 的 RBAC 中。该命令支持 --dry-run,且是幂等的。

有关这两条路径的更多详情,请参阅 3.0 升级说明