Skip to content

执行数据脱敏#

功能可用性

执行数据脱敏适用于 Enterprise 自托管与 Enterprise Cloud 套餐。

自以下版本起可用: n8n 2.16.0

执行数据脱敏可隐藏工作流执行中的输入与输出数据,有助于防止个人数据、认证令牌、财务记录等敏感信息被「能查看工作流但无需看到底层数据」的用户看到。

启用脱敏后,执行的元数据(状态、时间、节点名称)仍可见,但 n8n 会将各节点实际处理的数据负载替换为脱敏标记。

为何使用执行数据脱敏#

工作流常处理不应在工作流构建者或查看者视野之外暴露的数据。常见场景包括:

  • PII 与合规:处理客户个人数据(邮箱、地址、财务记录)的工作流需满足 GDPR、SOC 2 或内部安全标准。
  • 跨部门工作流:由某团队构建的工作流处理另一团队的敏感数据,而构建者本不应直接访问这些数据。
  • 最小权限原则:将数据可见性限制在真正需要的人,而不是所有具备工作流查看权限的人。

在推出执行数据脱敏之前,通常只能在工作流级别完全关闭执行历史,从而无法看到成功或失败状态。执行数据脱敏在隐藏敏感数据负载的同时,仍保留执行监控能力。

配置脱敏设置#

在工作流的工作流设置中按工作流配置脱敏。你需要具备 workflow:enableRedactionworkflow:disableRedaction 权限范围(或同时具备两者)才能更改这些设置。

配置步骤:

  1. 打开工作流。
  2. 点击右上角的三个点图标 三个点图标
  3. 选择 Settings 设置
  4. 找到 Redact production execution data 脱敏生产执行数据Redact manual execution data 脱敏手动执行数据 设置。
  5. 对每个设置选择 Default - Do not redact 默认 - 不脱敏Redact 脱敏
  6. 选择 Save 保存

脱敏设置说明#

有两个相互独立的开关:

设置 控制内容
Redact production execution data 脱敏生产执行数据 控制是否对生产(非手动触发)执行脱敏。生产执行包括工作流保持活动状态时,由 Webhook、定时任务或其他触发器触发的执行。
Redact manual execution data 脱敏手动执行数据 控制是否对手动触发的执行脱敏。手动执行包括在编辑器中选择 Execute Workflow 执行工作流 启动的执行。

脱敏后的数据呈现#

当 n8n 对某次执行脱敏时:

  • 会将每个节点的全部输入与输出数据替换为空对象。
  • 会移除二进制数据(文件、图片)。
  • 会脱敏错误信息,仅保留错误类型与 HTTP 状态码(针对 API 错误),便于排查。
  • 执行查看器会显示带碎纸机图标的 「Data redacted 数据已脱敏」 提示,而非常规数据表。
  • 执行元数据仍可见:节点名称、执行状态(成功/失败)、时间信息与工作流结构。

错误信息

脱敏执行数据时,n8n 也会脱敏错误详情,以防敏感信息通过错误消息泄露。仅保留错误类型(例如 NodeApiError)与 HTTP 状态码,足以判断失败类别而不暴露数据。

显示已脱敏数据#

具备 Reveal execution data 显示执行数据execution:reveal)权限范围的用户,可临时查看某次执行中被脱敏的数据。实例 Owner 与 Admin 默认拥有该范围。

操作步骤:

  1. 在执行查看器中打开该次执行。
  2. 在脱敏数据区域选择 Reveal data 显示数据 按钮。
  3. 阅读确认对话框,其中说明:
    • 系统会在审计日志中记录该操作。
    • 仅在有正当理由时才应显示数据。
    • 不必要的访问可能违反组织政策。
  4. 选择 Reveal data 显示数据 以确认。

该次执行的数据会在当前会话中对该用户可见。

审计日志#

日志流会记录所有「显示」操作。提供两种审计事件:

事件 说明
n8n.audit.execution.data.revealed 用户显示已脱敏执行数据时发出。包含用户、执行 ID、工作流 ID、时间戳、IP 地址及当时生效的脱敏策略。
n8n.audit.execution.data.reveal_failure 显示请求被拒绝时发出(例如权限不足)。包含相同字段及拒绝原因。

这些事件可与现有日志流目标(syslog、Webhook、Sentry)集成,用于合规报告与访问审计。

权限范围#

执行数据脱敏引入以下权限范围,可通过自定义项目角色分配:

范围 用途
workflow:enableRedaction 允许在工作流设置中开启脱敏。在角色配置 UI 中显示为 Enable data redaction 启用数据脱敏
workflow:disableRedaction 允许在工作流设置中关闭脱敏。在角色配置 UI 中显示为 Disable data redaction 禁用数据脱敏

默认情况下,实例 Owner、Admin 与项目 Admin 拥有启用或关闭脱敏以及显示已脱敏数据的权限。你可以创建自定义角色,向更多用户(例如工作流构建者)独立授予其中一个或两个权限范围。

最佳实践#

如何选择合适的脱敏策略#

场景 建议设置
生产环境处理 PII、财务数据或认证令牌的工作流 对生产执行数据脱敏
连测试数据都敏感的工作流(例如使用生产数据副本) 同时对生产与手动执行脱敏
处理非敏感数据的工作流,或处于早期开发阶段 不脱敏

通用建议#

  • 先对生产脱敏:对多数处理敏感数据的工作流,仅脱敏生产执行、保留手动执行可见,可在安全与调试便利之间取得较好平衡。
  • 必要时脱敏手动数据:若测试环境使用真实或接近生产的数据,请同时启用手动执行脱敏。
  • 启用日志流:启用日志流以捕获「显示」相关审计事件,满足合规并监控谁访问了敏感执行数据。
  • 在工作流评审中检查脱敏设置:将脱敏策略纳入工作流评审或审批流程,尤其是跨部门或面向客户数据的工作流。

安全注意事项#

  • n8n 在 API 层应用脱敏,不会将已脱敏数据发送到浏览器。
  • 当你创建自定义节点时,可在节点类型定义中使用 sensitiveOutputFields 声明特定输出字段为敏感字段。n8n 会始终脱敏这些字段,即使用户具备「显示」权限也无法查看。
  • 若脱敏服务无法解析某节点类型定义(例如卸载社区节点后),n8n 会完全脱敏该节点的全部输出数据。这种 fail-closed 策略可防止未知节点泄露敏感字段。
  • 脱敏不会改变执行数据在数据库中的存储方式;启用脱敏时底层数据并不会被加密或以不同方式存储。脱敏控制的是 API 层的可见性。
  • 启用脱敏时,执行数据也会从日志流与日志输出中自动脱敏。