Skip to content

第10章 安全与合规治理

10.1 问题场景

智能体系统会处理企业知识、用户数据、工具权限和业务流程,因此安全与合规不是上线前最后补的一层壳,而是从设计阶段就必须前置的硬约束。 如果只关注功能效果而忽略治理,系统很容易在以下地方出问题:

  • 用户通过提示词诱导越权读取不该访问的数据。
  • 工具调用缺少权限边界,导致高风险动作被误执行。
  • 敏感数据进入日志、评测样本或截图后,产生二次泄露风险。
  • 事故发生后,审计信息不完整,无法复盘是谁、在什么时候、通过什么链路触发了问题。

很多前端工程师刚转做智能体(AI Agent)项目时,会把安全理解成“最后加个鉴权”或“把敏感词拦一下”。 但在真实业务里,安全问题远不止输入拦截这么简单,它横跨:

  • 数据分级。
  • 工具权限。
  • 输入注入防护。
  • 输出脱敏与审计。
  • 日志与评测样本治理。
  • 人工确认和责任归属。

前端迁移提示

前端工程师其实已经拥有很多可迁移的安全经验:

  • 登录态、角色权限、页面级能力控制 -> Agent 工具与资源权限边界。
  • XSS / 接口鉴权 / 越权防护意识 -> 提示词注入、工具滥用和数据越权防护。
  • 埋点与错误监控 -> 审计日志与异常访问追踪。
  • 危险操作确认弹窗 -> 高风险工具调用的 Human-in-the-Loop 机制。

最小项目目标

本章建议先完成一个“最小安全治理闭环”项目,例如:

  • 为一个知识问答 Agent 定义数据分级和权限矩阵。
  • 为一个执行型 Agent 设计高风险工具确认机制。
  • 为一个工作流 Agent 增加审计字段和越权访问拦截规则。

参考入口:

  • 章节代码片段索引
  • docs/examples/assets/samples/example-10-security-controls.json
  • docs/examples/assets/screenshots/README.md

10.2 核心原理

安全治理边界图

第10章 安全治理边界图 安全与合规治理的关键,不是做一个孤立的“安全模块”,而是把“最小权限、数据分级、输入输出约束、审计可追溯、人工确认”嵌进系统全链路。 如果没有这层设计,系统功能越强、接入工具越多、上下文越丰富,风险就越大。

一、最小权限:只给完成任务所需的最少能力

这是最基础也最容易被忽略的原则。 你需要持续问:

  • 这个用户真的需要看到这份文档吗。
  • 这个 Agent 真的需要能调用这个工具吗。
  • 这个工具真的需要写权限吗,还是只读就够了。

在 Agent 系统里,最小权限至少要覆盖:

  • 用户角色权限。
  • Agent 可见工具权限。
  • 数据资源访问权限。
  • 不同环境下的操作权限。

二、数据分级:不同数据必须不同治理

所有数据都一视同仁是很危险的。 建议至少先做一个最小分级:

  • 公开数据。
  • 内部数据。
  • 敏感业务数据。
  • 高敏感个人或财务数据。

数据分级会直接影响:

  • 谁能访问。
  • 是否需要脱敏。
  • 能否进入评测集。
  • 能否出现在日志或截图中。
  • 是否必须人工确认后才能进一步处理。

三、输入防护:提示词注入不是理论问题

在智能体(AI Agent)场景里,输入不仅来自用户,还可能来自:

  • 外部网页。
  • 文档内容。
  • 工具返回结果。
  • 历史消息。

因此输入防护不能只盯用户输入框,而要把所有“可能进入上下文的内容”都视为潜在风险源。 最小防护思路包括:

  • 明确系统指令优先级。
  • 对高风险提示做规则检查。
  • 对外部文本做可信度边界处理。
  • 对工具执行增加额外确认或权限判断。

四、输出治理:不是生成出来就能直接用

智能体输出可能会:

  • 泄露敏感信息。
  • 给出越权内容。
  • 在高风险场景下给出过度确定的结论。
  • 把内部信息写进对外可见回复。

因此输出治理至少要考虑:

  • 是否需要脱敏。
  • 是否需要人工复核。
  • 是否允许直接发送或写回系统。
  • 是否需要记录审计日志。

五、全链路审计:出了问题必须能追

安全和合规最怕“事后查不到”。 因此审计日志至少要能回答:

  • 谁发起了请求。
  • 请求走了哪些工具或节点。
  • 访问了哪些资源。
  • 哪一步被拦截或放行。
  • 最终输出了什么级别的信息。

参考入口:

  • docs/examples/assets/samples/example-10-security-controls.json

10.3 实操步骤

推荐做法不是先堆一堆安全术语,而是先把“数据分级 + 权限矩阵 + 审计字段 + 高风险确认”四件事落下来。 先从最小治理闭环做起,再逐步扩展更细的规则和流程。

步骤 1:画出数据流和风险点

至少明确:

  • 数据从哪里来。
  • 会经过哪些节点。
  • 最终流向哪里。
  • 哪些输入是外部可控的。
  • 哪些输出可能被用户直接看到或被系统直接执行。

步骤 2:做最小数据分级

建议至少列出:

  • 数据类型。
  • 敏感级别。
  • 是否允许进入日志。
  • 是否允许进入评测样本。
  • 是否必须脱敏。

步骤 3:建立最小权限矩阵

建议至少覆盖三类角色,例如:

  • 普通用户。
  • 运营或客服人员。
  • 管理员 / 审核人。

同时再定义:

  • 哪些工具是只读。
  • 哪些工具需要确认。
  • 哪些工具默认禁用。

步骤 4:补输入防护规则

对高风险输入至少要考虑:

  • 明显诱导忽略规则的提示。
  • 尝试读取无权限资源的请求。
  • 通过外部文档内容注入恶意指令。

步骤 5:补输出和执行保护

至少明确:

  • 哪些输出必须脱敏。
  • 哪些结果必须人工确认后才能继续。
  • 哪些高风险动作不能由系统自动执行。

步骤 6:设计审计日志字段

至少保留:

  • 用户标识。
  • 角色信息。
  • 请求 ID / trace ID。
  • 调用的工具或节点。
  • 访问的资源级别。
  • 是否触发拦截。
  • 最终处置结果。

步骤 7:同步保留安全证据材料

建议至少保留:

  • 安全治理样本:docs/examples/assets/samples/example-10-security-controls.json
  • 截图清单:docs/examples/assets/screenshots/README.md
  • 章节片段索引

10.4 常见坑

坑 1:把安全当成发布前补丁

如果不在方案阶段考虑权限、数据分级和审计,后面返工成本会很高。

坑 2:权限模型过粗

如果权限只分“有 / 没有”,通常很难覆盖真实场景里的角色差异和风险等级。

坑 3:只防用户输入,不防外部上下文

提示词注入和越权风险常常来自文档、网页或工具返回,而不只是用户直接输入。

坑 4:日志太多但审计无用

如果缺少用户标识、资源级别、工具名和处置结果,事故发生后仍然很难复盘。

坑 5:把敏感数据写进评测样本、截图或作品集

很多团队线上防得不错,但在评测、演示和复盘材料里反而二次泄露。

坑 6:高风险动作没有确认机制

执行型 Agent 一旦涉及写入、发送、审批、删除等动作,必须把人工确认前置进去。

10.5 验证方式

安全与合规治理做完后,不能只看“规则是不是写出来了”,而要看它们是否真的能拦住风险、留下证据并支持复盘。

一、权限路径是否完整受控

  • 是否存在未授权访问路径。
  • 角色和工具权限是否符合最小权限原则。
  • 不同环境下高风险能力是否被正确限制。

二、高风险输入是否可识别

  • 越权访问尝试是否会被拦截。
  • 高风险注入场景是否会被识别或降级。
  • 外部上下文中的恶意内容是否会影响系统执行。

三、审计是否可复盘

  • 是否能定位到谁发起了问题请求。
  • 是否能看到访问了哪些资源。
  • 是否能知道在哪一步触发拦截或放行。

四、前端体验是否支持安全治理

从前端视角再检查:

  • 高风险动作是否有明确确认界面。
  • 风险提示是否能让用户理解为什么被拦截。
  • 是否有必要的人工复核或人工接管入口。

五、证据材料

  • 安全治理样本:docs/examples/assets/samples/example-10-security-controls.json
  • 截图清单:docs/examples/assets/screenshots/README.md
  • 图解配图:docs/examples/assets/diagrams/chapter-10-security-guardrails.svg
  • 章节片段索引

10.6 面试表达

我在系统设计阶段就把安全与合规作为约束条件,而不是事后补救。 通过最小权限、数据分级、输入输出防护和审计闭环,把风险控制前置到开发流程中,让系统在能力扩展时仍然可控。

实战案例:敏感数据访问治理

  • 背景:系统需要接入内部文档和业务数据,存在越权读取和敏感信息泄露风险。
  • 动作:建立最小权限矩阵、数据分级规则、输出脱敏要求和审计日志字段,并为高风险动作增加确认机制。
  • 结果:高风险访问被有效拦截,敏感信息处理更可控,审计链路也能完整复盘。

推荐答题框架

如果面试官问“AI Agent 的安全和普通系统安全有什么不同”,可以按下面顺序回答:

  1. 先讲 AI Agent 除了传统鉴权问题,还会引入提示词注入、工具滥用和上下文越权风险。
  2. 再讲最小权限、数据分级、输入输出治理和审计。
  3. 再讲高风险动作的 Human-in-the-Loop(人工确认)机制。
  4. 最后讲前端如何把风险提示、确认界面和拦截结果表达清楚。

10.7 练习任务

  1. 选一个你熟悉的 Agent 场景,画出最小数据流,并标出 3 个潜在高风险点。
  2. 列出系统中的敏感数据类型,并做一个最小分级表。
  3. 为 3 类角色设计最小权限访问矩阵,明确哪些工具只读、哪些需确认、哪些禁用。
  4. 设计一组最小审计字段,并说明为什么这些字段足够支持事后复盘。
  5. 设计一个高风险动作确认界面,说明前端要展示哪些风险信息。

10.8 验收清单

  • 任务完成率 >= 85%
  • 关键指标达标率 >= 90%
  • 异常场景通过率 >= 90%
  • 至少完成 1 份最小数据分级表和 1 份权限矩阵。
  • 至少保留 1 份安全治理样本、1 组截图占位清单和 1 份章节代码片段索引。
  • 至少能用 2 分钟讲清楚“为什么安全与合规不是附加项,而是智能系统设计阶段的前置约束”。