风险接受 (Pro)
风险接受是一种特殊状态,可以通过完整风险接受对象或简单风险接受工作流应用于发现项。风险接受用于正式记录并落实这样一项决策:确认某个存在漏洞的发现项,但不立即进行修复。
DefectDojo Pro 包含增强的风险接受功能,以便大规模处理风险管理决策,包括:
- 跨产品风险接受:单个风险接受可以应用于多个产品,让您能够将整个资产组合中所有相同或相似发现项的实例合并到一个风险接受对象中。
- 批量风险接受管理:按漏洞 ID 筛选和搜索特定发现项,并对所有结果一次性应用风险接受,无论它们属于哪个资产。
访问已风险接受的发现项
侧边栏中有一个风险接受相关的部分,其下拉菜单包含三个子部分:
- 已风险接受的发现项
- 该部分包含一张表格,列出所有已被风险接受的发现项,无论是作为完整风险接受对象的一部分,还是通过简单风险接受工作流被接受。
- 所有风险接受
- 该部分包含一张表格,按时间顺序列出所有完整风险接受对象。
- 新建风险接受
- 在侧边栏中点击此选项将启动创建完整风险接受对象的工作流。

创建风险接受
当某个发现项被风险接受时,将发生以下情况:
- 该发现项的状态将不再是“活动”。
- 该发现项的状态将变更为“风险已接受”。
- 该发现项将不再计入指标统计,但仍会显示在其所属的测试中。
发现项可以通过以下两种方式之一被风险接受:将其添加到完整风险接受对象中,或使用简单风险接受工作流。
完整风险接受
完整风险接受允许用户接受多个发现项的风险,并将它们捆绑到一个对象中,无论这些发现项来自哪个资产、测试活动或测试。
如果组织政策要求正式的、有文档记录的风险接受,或者用户希望风险接受在特定日期后自动过期,完整风险接受是最佳选择,因为它能记录内部决策过程,并可作为权威依据。
每个完整风险接受都会为风险接受添加额外的背景信息,例如:
- 风险接受对象的名称。
- 风险接受对象的所有者。
- 关于如何处理该发现项(或多个发现项)的安全建议和决策。
- 与该建议或决策相关的任何证明材料。
- 有关该建议或决策的详细信息。
- 接受该决策相关风险的用户。
- 到期日期。
- 发现项状态在到期后是否会恢复为“活动”。
- SLA 是否会在到期后重新开始计算。
到期功能是完整风险接受对象所独有的,它允许在适当的时候对已被风险接受的发现项进行重新审查。一旦某个风险接受过期,相关发现项将重新被设置为“活动”状态。
如果您未指定日期,系统将使用“系统设置”页面中的“默认风险接受/默认风险接受到期天数”设置。
如何完成完整风险接受
完整风险接受对象可以通过以下三种方式创建:
- 使用侧边栏中的新建风险接受按钮。
- 使用单个发现项上的添加风险接受按钮。
- 在表格中选择一个或多个发现项后,点击出现的风险接受操作按钮。
新建风险接受(侧边栏)
在侧边栏中点击“新建风险接受”将打开一个页面,用户可以在其中设置新的完整风险接受对象的数据和详细信息。第二个页面将允许用户筛选并选择要添加到该对象中的发现项。
添加风险接受(单个)
打开某个发现项后,点击视图右上角的齿轮图标,然后选择添加风险接受。之后,您可以选择将该发现项添加到现有的完整风险接受对象中,或创建一个新对象。

风险接受操作(表格)
在表格中选择一个或多个发现项后,点击顶部出现的风险接受操作按钮,然后选择添加到新的风险接受对象或添加到现有的风险接受对象,并填写所需字段。
发现项一次只能添加到一个风险接受中。如果“风险接受操作”按钮不可点击,通常是因为所选发现项中有一个已经被添加到某个完整风险接受对象中。

编辑完整风险接受
创建完整风险接受对象后,您可以点击对象视图右上角的齿轮图标来编辑该对象的详细信息、上传包含风险接受证明的文件,或彻底删除该对象。
您也可以使用同一菜单向该对象添加或移除发现项。此外,还可以通过点击单个发现项旁的 ⋮ 图标菜单,点击批量更新操作,然后在简单风险接受状态下拉菜单中选择取消接受风险,将发现项从对象中移除。
最后,如果您将某些发现项添加到某个完整风险接受对象中,随后又删除了该对象,那么其中的发现项状态将自动恢复为“活动”。
简单风险接受
简单风险接受不附带任何元数据或到期日期。当合规性仍要求跟踪已风险接受的发现项,但并不需要单独的对象来跟踪或更改受影响发现项状态时,这种方式最为适用。
简单风险接受默认未启用,但可以在资产视图右上角点击齿轮图标后,在资产设置的“可选字段”部分中进行切换。

启用后,可以在测试视图内的发现项表格中运行简单风险接受。
如何完成简单风险接受
您可以在“所有发现项”表格(可从侧边栏访问)或特定测试内的发现项表格中完成简单风险接受工作流。两者的操作流程相同。
选择您希望风险接受的发现项,然后点击表格顶部出现的批量更新操作按钮。接着,在简单风险接受状态下拉菜单中选择接受风险。由于这些发现项是通过简单风险接受方式处理的,因此不存在与之关联的完整风险接受对象。已被风险接受的发现项可以在侧边栏的已风险接受的发现项菜单中查看。

反之,如果您希望对之前已风险接受的发现项取消接受风险,请选择取消接受风险。如果某个发现项已通过简单风险接受方式处理,则必须先取消接受风险,才能将其添加到完整风险接受对象中。
风险接受的权限与可见性
风险接受的可见性由一个与发现项可见性不同的独立最低权限所控制。能够查看某个发现项的用户,并不会自动获得查看包含该发现项的风险接受的权限。
风险接受操作所需的最低角色
| 操作 | 在所属资产(产品)上所需的最低角色 |
|---|---|
| 查看风险接受 | Writer |
| 添加或编辑风险接受 | Writer |
有关列出风险接受权限及其他资产级操作的完整角色权限表,请参阅操作权限表。
风险接受的过期与恢复
已过期的风险接受会在风险接受表格中,在其到期日期旁标注为已过期,让您可以一目了然地看出哪些风险接受已不再抑制其发现项。
风险接受的齿轮菜单(无论在表格中还是在其详情页中)会提供以下适用的操作:
- 使风险接受过期:适用于仍处于有效状态的风险接受。该操作会立即使其过期,而不必等待到期日期,其发现项将根据重新激活已过期发现项和重新开始已过期 SLA 设置被重新激活。
- 恢复风险接受:适用于已过期的风险接受。其发现项将被重新接受,并会在风险接受表单默认天数设置所指定的天数后再次过期。
这两项操作所需的权限与编辑风险接受相同,且都会先要求确认。若要恢复为特定时长而非默认窗口,请编辑到期日期,而不要使用“恢复”操作——见下文。
更改风险接受到期日期时会发生什么
风险接受的到期日期在创建后可随时编辑。DefectDojo 的处理方式取决于该风险接受当前是处于活动状态还是已经过期。
编辑处于活动状态的风险接受的日期
如果某个风险接受尚未过期——其到期日期在未来,或刚刚过去但定期过期任务尚未处理——那么编辑日期非常简单:
- 新日期会按原样保存。如果用户选择了
2027-01-15,风险接受将存储2027-01-15。 - 关联的发现项将保持“风险已接受”状态。
- 该风险接受对象将保持活动状态。
将已过期风险接受的日期向后调整
如果某个风险接受已经过期——即定期任务已处理其过期状态,关联的发现项已根据该风险接受的过期设置重新被设为“活动”,且该风险接受处于已过期状态——那么将到期日期编辑为未来的某个日期会触发恢复工作流:
- 该风险接受被恢复,不再处于已过期状态。
- 每一个曾关联该风险接受、且当前为“活动”状态的发现项都会被重新接受(恢复为“风险已接受”/非活动状态)。
- 这些发现项上的端点状态会随之更新,以反映重新接受的结果。
- 系统会在任何关联的 Jira 问题上发布一条评论,记录此次恢复操作。
您输入的日期就是最终保存的日期。系统设置风险接受表单默认天数(默认值:180)仅在您未指定具体日期时才会使用——例如使用恢复操作时,该操作会在不编辑到期日期的情况下恢复风险接受,因此会将日期设为今天 + N 天。
将日期调早或调整为过去的日期
将到期日期调整为一个更早但仍在未来的日期不会触发任何特殊行为——风险接受将保持活动状态,新日期会被保存。
将日期调整为过去的日期,不会通过编辑表单立即使风险接受过期;下一次定期过期任务运行时会处理该风险接受,并应用标准的过期行为(根据风险接受的重新激活已过期发现项设置重新激活发现项,若设置了重新开始已过期 SLA,则同时重启 SLA)。
API 暴露的信息
API 使用者可以通过 expiration_date、expiration_date_handled 和 expiration_date_warned 字段观察风险接受对象的过期状态:
expiration_date是配置的日期。- 当风险接受处于活动状态时,
expiration_date_handled为null;当定期任务处理过该过期状态后,会被设置为一个时间戳。当且仅当expiration_date_handled不为空时,风险接受才被视为“已过期”。 - 当系统已发送过期警告通知后,会设置
expiration_date_warned。
发生恢复操作时,expiration_date_handled 和 expiration_date_warned 都会被清空为 null,而 expiration_date 将保存您所发送的日期——如果恢复操作未指定新日期,则设为今天 + N 天。监控风险接受状态变化的工具可以将 expiration_date_handled 字段作为判断“该风险接受当前是否已过期”的权威标志。
过期与恢复操作也可以直接调用,无需通过编辑 expiration_date 来触发:
POST /api/v2/risk_acceptance/{id}/expire/会立即使其过期。如果已经过期,则返回400。POST /api/v2/risk_acceptance/{id}/reinstate/会恢复一个已过期的风险接受,重新接受其涵盖的发现项。如果尚未过期,则返回400。发送expiration_date可指定恢复的时长;省略该字段则使用今天 + N 天。
两个接口都接受可选的 reason 参数,该参数会与操作执行者一并记录为风险接受上的一条备注。两者所需的权限均与编辑风险接受相同。
风险接受最佳实践
虽然使用简单风险接受工作流也可以影响完整风险接受对象中的发现项(反之亦然),但通常最好只默认使用其中一种流程,而不要同时启用两者。
例如,如果默认采用完整风险接受方式,那么当某个发现项被简单风险接受时,由于没有相应的对象包含该受影响的发现项,可能会造成混淆。同样,如果发现项通常采用简单风险接受方式,那么将部分发现项添加到完整风险接受对象中,而大多数其他发现项却没有此类对象时,也可能造成类似的混淆。