考察点
这是安全类问题的收口题,常以「设计一个企业级 Agent/大模型应用系统」的开放题形式出现。面试官想看到架构思维:你能不能把零散的安全点(注入、泄露、越权、内容合规)组织成有层次的防御体系,并讲清每层的职责和兜底关系。只说「接个内容安全 API」的回答会暴露缺乏系统性。
参考答案
总原则:把模型当不可信组件
整个架构的出发点是一个假设:模型一定会犯错——会幻觉、会被注入、会被越狱。安全架构不是去修好模型(修不好),而是让模型犯错时损害可控。这和传统安全里「零信任」的思路一致:不信任任何一层,每层假设上游已被攻破。由此推出两条铁律:高危动作不依赖模型的自律,敏感数据的访问不依赖模型的自觉。
接入层:输入的第一道筛
负责拦「明目张胆」的东西:认证鉴权(谁能用、什么额度)、限流与配额(防资源消耗攻击,这也防成本打爆)、输入过滤(敏感词、注入模式检测、长度限制、文件类型白名单)。这一层全是确定性规则,毫秒级,挡掉脚本攻击和滥用。它拦不住语义级攻击,那不归它管。
模型层:选型与系统提示加固
选模型时安全能力是评估项:用红队集实测各候选模型的拒答率和过激拒绝率,对齐好的模型能替上游审核层分担大量压力。system prompt 做加固:明确声明外部内容的不可信地位、核心约束在多轮中锚定重申、机密信息绝不写进 prompt(密钥走服务端注入)。这层是概率性防御,有效但不可依赖——它降低攻击成功率,权限层决定攻击成功后的损害。
编排层:权限收敛是兜底核心
Agent 的工具体系是损害变成现实的地方,这层是架构重心:
- 最小权限:工具按任务需要开放,能只读不给写;数据库访问走受限账号(只读副本、行级权限),而不是让 Agent 拿主库连接。
- 危险操作审批:删除、转账、外发消息、调付费 API 这类动作从自动调用里摘出来,强制人工确认或双人审批;或者按金额/影响分级,小额自动、大额审批。
- 不可信内容隔离:读网页、读邮件的 Agent 和执行操作的 Agent 分离,前者产出的内容标记为不可信,进入决策链前过摘要和校验,防止间接注入穿透到执行层。
- 运行时护栏:步数上限、循环检测、工具调用序列异常检测(突然调用从未用过的外发接口)、单任务成本熔断,异常即终止并降级。
数据层:隔离与防泄露
多租户场景在检索层做权限过滤——召回前按租户和用户身份裁剪候选集,而不是生成后再审,从源头堵越权检索。知识库入库做来源审核和注入检测(防投毒和毒文档)。上下文装配时只拼当前任务必需的数据,避免「为了方便把整个用户画像塞进 prompt」这种泄露面。输出侧做泄露审计:检测 system prompt 片段、其他租户数据特征、敏感字段模式。
运营层:假设前面都会漏
内容安全审核(输入输出双侧,词库+分类模型+语义审核三层)、全量审计日志(谁在什么时候让 Agent 做了什么,高危操作可回放)、trace 监控与告警、红队持续测试(攻击库进 CI,发版必跑)、事件响应预案(发现泄露/越权后的止血、定责、修复流程)。这层同时沉淀数据反哺前四层:红队新样本进过滤规则,badcase 进评测集。
五层的关系一句话讲清
接入层拦蠢攻击,模型层降攻击成功率,编排层限制攻击成功后的爆炸半径,数据层守住机密底线,运营层发现漏网之鱼并驱动前四层进化。攻击者要造成实际损害需要同时穿透所有层——这就是纵深防御的意义,也是和「套个安全 prompt」的本质区别。
可能的追问
- 人工审批会不会让 Agent 失去自动化价值? 答:按风险分级而不是一刀切。只读操作全自动,低风险写操作自动加审计加限流,高危操作才审批。实际业务里 80% 以上的调用是只读和低风险,自动化价值损失很小,风险敞口收敛很大。
- 内部使用的 Agent 也需要这么重的架构吗? 答:层数可减、原则不变。内部场景可以放宽内容审核,但编排层的权限收敛不能省——内部 Agent 往往拿着更高的数据权限,被注入或误操作的损害反而更大,删库误操作大多发生在内部工具上。
- 这套架构和 OWASP LLM Top 10 怎么对应? 答:注入(01)由接入层加编排层共治,泄露(02/07)在数据层,过度代理(06)是编排层权限收敛的核心目标,资源消耗(10)归接入层配额和运行时护栏,错误信息(09)靠输出引用和运营层抽检。面试时把清单映射到架构层,说明两个体系你都真用过。