01-信任边界与风险建模
核对日期:2026-05-13。
不稳定项:OWASP GenAI 风险分类、NIST AI RMF Profile、企业合规要求、供应商数据政策和 Agent 工具生态变化较快;生产落地前必须重新核对官方资料和组织安全要求。
1. 学习目标
本专题解决 AI 安全的第一步:先画清楚系统边界,再讨论防护。没有信任边界图的 AI 安全评审,通常会退化成“Prompt 加强”和“上线前人工看一眼”。
学完后你应该能做到:
- 区分可信控制面和不可信数据面。
- 画出用户、文档、模型、工具、日志、缓存和供应商之间的数据流。
- 识别每条边上的注入、越权、泄漏、污染和供应链风险。
- 把风险映射到设计控制、评测样例、审计字段和上线门禁。
- 判断一个 AI 功能是否适合自动化、是否需要人类审批、是否应该拒绝上线。
2. 核心判断
AI 系统的安全边界不能放在模型里。模型上下文里的内容混合了系统指令、用户输入、RAG 文档、工具返回和历史状态,模型并不能天然保证“哪部分是命令,哪部分只是数据”。
工程上应把系统拆成两层:
| 层 | 说明 | 安全要求 |
|---|---|---|
| 控制面 | 权限、策略、工具白名单、路由、审批、预算、日志 | 由代码和平台执行,不能交给模型自行决定 |
| 数据面 | 用户输入、网页、文件、RAG 文档、工具结果、模型输出 | 默认不可信,只能作为证据或待校验结果 |
安全设计的关键不是让模型“更听话”,而是让不可信数据无法改变控制面。
3. 边界清单
一个典型 AI 应用至少有这些边界:
| 边界 | 风险 | 控制点 |
|---|---|---|
| 用户输入 -> 模型 | 直接注入、敏感请求、越权身份声明 | 输入分类、意图识别、权限校验 |
| 外部文档 -> RAG | 间接注入、文档污染、过期事实 | 来源校验、版本、入库审核 |
| RAG 检索 -> 上下文 | 无权限文档进入上下文 | 检索前后权限过滤 |
| 模型 -> 工具 | 工具误选、参数注入、越权写入 | 工具白名单、schema、策略引擎 |
| 模型 -> 输出渲染 | XSS、错误事实、危险建议 | schema、净化、引用校验 |
| 输出 -> 下游系统 | SQL/shell/代码执行风险 | 参数化、沙箱、人工确认 |
| 请求 -> 供应商 | 数据保留、训练使用、区域合规 | 供应商评审、数据最小化 |
| 日志/trace -> 运维 | 敏感数据二次泄露 | 脱敏、访问控制、保留期 |
信任边界图要覆盖数据如何进入、如何被模型看到、如何触发动作、如何被记录和如何被删除。
4. 风险建模方法
推荐用“资产 -> 入口 -> 失败模式 -> 控制 -> 证据”的结构做风险建模。
| 项 | 问题 |
|---|---|
| 资产 | 需要保护什么?客户数据、密钥、订单、知识库、工具权限、品牌可信度 |
| 入口 | 攻击或误操作从哪里进入?用户、网页、文件、插件、工具返回、供应商 |
| 失败模式 | 系统可能怎样失败?泄露、越权、误删、误发、编造、拒答失败 |
| 控制 | 用什么硬控制降低风险?权限、审批、过滤、沙箱、限流、回滚 |
| 证据 | 如何证明控制有效?eval、trace、审计、红队样例、演练记录 |
不要只记录“可能被攻击”。必须追问:攻击成功后能造成什么外部影响?是否能撤销?是否能发现?是否能追责?
5. 风险分级
AI 功能的风险等级可以由三个维度决定:
| 维度 | 低风险 | 中风险 | 高风险 | 极高风险 |
|---|---|---|---|---|
| 数据 | 公开内容 | 内部知识 | 用户敏感数据 | 受监管数据、密钥、支付信息 |
| 动作 | 只读回答 | 生成草稿 | 写入业务系统 | 资金、权限、法律、人事、医疗 |
| 可逆性 | 易撤销 | 可人工修正 | 撤销成本高 | 不可撤销或外部扩散 |
控制要求随风险提升:
| 风险等级 | 最低控制 |
|---|---|
| 低 | 基础日志、用户确认、输出免责声明 |
| 中 | 引用证据、拒答策略、安全 eval、数据脱敏 |
| 高 | 最小权限、审批、审计、灰度、回滚、人工复核 |
| 极高 | 专项合规评审、严格 HITL、限制自动化或不做 |
6. 信任边界图模板
图里至少要标注:
- 哪些节点不可信。
- 哪些节点是硬控制。
- 哪些数据会进入模型。
- 哪些动作有外部副作用。
- 哪些事件进入审计。
7. 工程案例
7.1 企业知识库问答
风险:
- 无权限文档被检索进上下文。
- 文档里隐藏“忽略规则”的恶意文本。
- 模型把过期制度当作最新制度。
控制:
- 文档入库绑定
source_id、owner、acl、version、published_at。 - 检索前用用户权限过滤候选文档,检索后再次过滤。
- Prompt 明确文档是证据,不是指令。
- 输出必须带引用,引用不存在或不支持结论时拒答。
7.2 客服退款 Agent
风险:
- 用户诱导 Agent 直接退款。
- Agent 读取过多订单字段。
- 退款工具可被模型直接调用。
控制:
- 只暴露
create_refund_draft,不暴露最终退款执行。 - 金额、订单状态、重复退款由后端规则校验。
- 人工审批卡片展示证据、金额、影响和可撤销性。
- trace 记录模型建议、工具参数和审批人。
8. 常见反模式
| 反模式 | 表现 | 后果 | 修正 |
|---|---|---|---|
| 边界画在 Prompt 里 | 只写“不要泄露” | 被注入绕过 | 控制面代码化 |
| 把 RAG 当可信库 | 文档内容能改变规则 | 间接注入 | 文档只作证据 |
| 工具权限跟用户权限脱节 | 模型拿到高权限 token | 越权写入 | 按用户和任务授权 |
| 无数据流图 | 不知道数据去了哪里 | 合规和删除失败 | 画上下文、日志、缓存流向 |
| 无风险分级 | 所有功能同一套门禁 | 高风险漏控 | 数据、动作、可逆性分级 |
9. 练习
为“企业知识库问答系统”画一张信任边界图,要求标出:
- 用户输入、知识库、检索器、模型、工具、日志、供应商。
- 哪些节点不可信。
- 哪些数据会进入模型上下文。
- 哪些动作有外部副作用。
- 至少 5 条边界风险和对应控制。
10. 验收题
- 为什么模型上下文不能当作安全边界?
- 控制面和数据面分别包含什么?
- RAG 文档为什么必须默认不可信?
- 风险分级为什么要同时考虑数据、动作和可逆性?
- 一个合格信任边界图至少应该标注哪些信息?
11. 延伸阅读
- OWASP Top 10 for LLM Applications 2025: https://genai.owasp.org/llm-top-10/
- OWASP Top 10 for Agentic Applications 2026: https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/
- NIST AI Risk Management Framework: https://www.nist.gov/itl/ai-risk-management-framework
- NIST AI RMF Playbook: https://www.nist.gov/itl/ai-risk-management-framework/nist-ai-rmf-playbook