# AIelsen FDE Academy · W06 数据安全与部署选型

面向 FDE 的中文详细讲义 · v2 · 2026-09-08

## 1. 安全评审要回答系统事实

建议型 Agent 能运行后，客户提出三个问题：哪些数据会离开网络；谁可以看到会员明细；工具调用和日志由谁保存。这些问题不能用“已经脱敏”“采用私有化”一笔带过。本周需要形成数据流图、字段权限矩阵、脱敏效用比较和部署决策，并把关键限制落实到程序中。

合规判断依赖真实数据类型、处理目的、组织和地区要求。本课提供工程检查方法，不代替法律或安全专业意见。实际处理个人信息、跨境传输或高风险专业数据前，应由具备职责的人员确认；合成训练不自动授权使用真实客户数据。

## 2. 画出完整数据流，包括日志、缓存和备份

不要只画用户、模型和数据库三个方框。一次请求还可能经过浏览器、网关、身份服务、检索系统、模型供应商、外部工具、观测平台和备份。每一段都记录数据类别、目的、接收方、位置、保留期和删除方式。

| 数据流 | 可能暴露的内容 | 本课控制思路 |
|---|---|---|
| 用户 → 应用 | 自由文本中的个人或商业信息 | 输入提示与必要的检测、最小化处理 |
| 应用 → 模型 | 提示、检索片段、工具结果 | 只提供任务需要的字段和证据摘要 |
| 工具 → 数据库 | 查询条件、租户、记录标识 | 服务端鉴权、参数化查询、范围限制 |
| 应用 → 日志 | 原始提示、工具参数、异常堆栈 | 脱敏字段白名单、访问限制与保留策略 |
| 缓存/导出/备份 | 历史响应与个人记录 | 同等权限、过期失效与可追踪删除 |

数据留在本地，并不意味着本地日志人人都应可读；模型不保存会话，也不意味着你自己的应用没有保存。只有逐段核对，才能准确回答安全评审问题。

## 3. 脱敏、去标识化、匿名化与加密

遮蔽手机号可以减少直接暴露，但门店、生日和消费记录的组合仍可能识别人。替换为会员引用通常属于去标识化思路：系统仍保有映射，不能轻率宣称已匿名。加密保护传输或存储，数据被授权解密后仍然可识别，不替代访问控制。

先问完成任务是否需要该字段。建议型分群通常需要购买间隔、许可状态和所属范围，未必需要姓名、完整手机和精确地址。若年龄段足够，不应默认发送出生日期。业务必要性与处理权利是两个问题：“模型需要”不等于“我们有权提供”。

更详细的专业判断可参考课程来源页中的个人信息保护与 [NIST AI 风险管理资料](https://www.nist.gov/itl/ai-risk-management-framework)。不要把本课检查表当作任何法律合规认证。

## 4. 权限必须在服务端执行

信任边界应放在模型外部。租户、操作者身份与允许门店来自可信会话或服务端身份上下文，不能接受模型传入 `role=admin` 后就提升权限。工具执行前验证对象与字段范围，返回前再按允许字段投影。

```python
# 设计片段：ctx 必须来自服务端身份验证，不接受模型自行声明。
def scoped_member_view(ctx, row):
    if row["tenant_id"] != ctx.tenant_id:
        raise PermissionError("DENIED_SCOPE")
    if row["store_id"] not in ctx.allowed_stores:
        raise PermissionError("DENIED_SCOPE")
    allowed = {"member_ref", "days_since_purchase", "consent"}
    return {key: row[key] for key in allowed if key in row}
```

这段示例只展示控制位置，不是完整认证系统。实际实现还要覆盖列表查询、详情、搜索、导出、缓存和动作回查。拒绝越权时避免泄露“这个会员确实存在于 B 店”；不论记录是否存在，外部可见的拒绝语义应符合你的安全设计。

权限测试应同时有正例和反例：允许 A 店的用户能正常读 A 店；不能读 B 店；不能通过改变缓存键或记录 ID 取得 B 店结果；不能因为工具失败而走到无权限的备用接口。

## 5. 比较脱敏前后的任务效用

“脱敏不影响效果”需要实验支持。选择一组获授权的评估任务，定义评分维度，再比较最小字段版与较完整字段版在同一条件下的任务表现。真实信息只可在相应授权环境处理；没有授权时使用合成数据验证方法，不能据此报告真实业务效用。

例如，针对沉默会员建议，比较是否正确识别资格、是否引用有效规则、建议是否需要不必要的身份字段。如果删除精确生日后任务评分不变，可支持本任务采用年龄段或不提供年龄；不能推导所有营销任务都不需要生日。

记录模型、提示、工具、数据与策略版本，保留失败样本。若效果下降，先定位缺少的是必要信息还是提示依赖了偶然特征，不要直接恢复全部敏感字段。可以考虑受控工具在本地计算特征，只向模型提供结论和证据引用。

## 6. 部署选型：能力、成本和责任一起比较

| 方案 | 需要评估的条件 | 容易遗漏的责任 |
|---|---|---|
| 托管模型/云服务 | 数据处理条款、区域、网络、模型能力 | 供应商变更、应用日志、用量与密钥管理 |
| 私有或本地部署 | 硬件、模型能力、更新、性能与容量 | 补丁、备份、故障值守、模型评估 |
| 混合部署 | 哪些数据本地处理、何时调用外部能力 | 路由策略、失败降级、双侧审计与一致性 |

使用同一组代表性任务比较候选模型。开源、本地或更大的模型都不自动等于合适；只比较单次响应速度也不足以选型，还要看完成率、工具错误、复核成本和总拥有成本。部署决策应列出被放弃方案与原因，便于条件改变时重新评估。

## 7. 案例分析：专业资料处理的效率与边界

在 [NovoScribe 文档生产案例](/academy/zh/cases/novo/)中，团队将语义检索、专家认可文本与生成流程组合起来。对 FDE 最有用的设计问题是：怎样保证答案来自当前适用版本，怎样让审阅者快速回到原文，以及哪些内容只允许特定角色访问？

本周用合成设备文档演练：旧版温度上限为 60°C，新版为 45°C。输入指定新版时，先在检索层过滤版本和访问范围，再生成带页码的摘要。未指定版本则澄清；无权读取时拒绝检索。保留四份证据：数据流图、字段权限表、版本冲突测试、专家审阅记录。本练习处理文档工程，不提供医疗建议。

回到零售项目，同样要区分“生成建议更快”和“可以扩大数据访问”。便利性不是授权依据。一个真正有价值的适配，是在减少不必要数据暴露的同时，仍能完成被明确验证的业务任务。

## 8. 必做作业、思考与验收

**必做**：提交完整数据流和字段权限矩阵；实现范围校验与字段过滤；完成允许、跨店、字段、缓存/导出四类测试；提交脱敏效用对照及部署选型说明。若尚未接入真实模型，对照仅报告为机制或合成任务验证。

**思考**：客户要求“所有数据都不出内网”，但同时坚持使用一个只能通过外部接口访问的能力，你如何把冲突拆成可选择的方案，而不是用架构图掩盖？

**进阶**：为日志建立字段白名单及自动扫描，验证异常堆栈、检索片段和缓存记录不会绕过脱敏；模拟权限撤销后已有缓存如何失效。

**验收要求**：权限不依赖模型自觉；数据流包含隐蔽存储；部署位置未被当成合规证明；效用结论有样本与版本；限制和残余风险有责任角色。无法确认合法性或权限的部分，应保持关闭而不是带病进入下一阶段。
