Dify导出CSV/JSON/PDF时自动启用AES-256对称加密,支持自动生成密钥、导入Base64密钥或密码派生密钥(仅PDF),并提供三种密钥分发策略及强制审计日志。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当用户在Dify中导出数据文件(如CSV、JSON或PDF)时,需防止未授权访问原始内容,必须在导出环节嵌入对称加密逻辑,确保文件落地即加密、无密钥无法解密。
确认导出文件类型与加密触发点
进入「工作流设置 → 导出节点」,检查当前导出任务绑定的文件格式。仅当导出类型为 【CSV/JSON/PDF】 时,系统才启用内置对称加密模块;Excel(.xlsx)因结构复杂暂不支持自动加密,需手动转为CSV后再导出。
若导出节点连接的是「数据库查询」或「API响应解析」类上游组件,加密功能默认开启;若上游是「本地上传文件」或「文本输入框」,需手动勾选「启用导出加密」开关。
配置AES-256加密参数
方法一:使用系统自动生成密钥
在导出节点右侧「安全选项」中,点击「生成新密钥」→ 系统立即生成32字节AES-256密钥并显示前8位(如 a7f2b9e1...),完整密钥同步写入租户密钥管理服务(KMS)且不可查看。该密钥将用于本次导出及后续同名文件重导出。
方法二:绑定已有密钥
点击「导入密钥」→ 粘贴Base64编码的32字节密钥(例如 U3VwZXJTY3JldEtleUZvckFJQXBwbGljYXRpb24=)→ 点击「验证」。若格式错误或长度不符,界面报错“密钥必须为32字节Base64字符串”,【否则导出将跳过加密直接生成明文文件】。
方法三:指定密码派生密钥(仅限PDF导出)
勾选「使用用户密码派生密钥」→ 输入固定口令(如 Dify@2026)→ 系统调用PBKDF2-HMAC-SHA256,迭代100,000次生成AES密钥。此方式便于人工解密,但安全性低于随机密钥。
设置密钥分发与访问控制
第一步:选择密钥分发方式
在「密钥分发策略」下拉菜单中,必须选择一项:
• 「仅限当前用户下载时解密」→ 导出文件加密后,仅该用户登录状态下点击下载链接,Dify前端自动调用密钥解密并流式传输;
• 「绑定角色权限」→ 从下拉列表中选取「协作者」或「管理员」,对应角色成员下载时可解密;
• 「禁用自动解密」→ 文件以加密态存储于对象存储,需调用API传入密钥参数才能获取明文,适用于对接第三方系统。
第二步:启用下载审计日志
勾选「记录每次解密请求」→ 系统将自动写入审计日志,包含字段:timestamp、user_id、action("export.decrypt")、ip_address、file_name。该日志不可关闭,是合规性必需项。
第三步:配置失败响应行为
当用户无权解密时,Dify返回HTTP 403状态码,并在响应体中嵌入错误码 ERR_EXPORT_DECRYPT_DENIED,不暴露任何密钥或加密细节。此行为不可修改。
执行加密导出并验证结果
点击「运行工作流」→ 等待导出节点状态变为「已完成」→ 在输出面板中点击「下载」按钮。
若选择「仅限当前用户下载时解密」,浏览器将直接打开明文文件(CSV可表格预览,PDF可在线渲染);若选择「禁用自动解密」,下载得到的文件扩展名末尾会自动添加 .encrypted 后缀(如 data.csv.encrypted),用文本编辑器打开可见乱码头部,证实加密生效。
用Python快速验证加密状态:
from Crypto.Cipher import AES<br>with open("data.csv.encrypted", "rb") as f:<br> header = f.read(16)<br> print(header.hex()) # 应输出类似 'd8a2f1c7e9b4a0d2' 的随机十六进制串











