# M11 安全、交付与系统设计答辩

> 本章产出：威胁模型、回归安全测试、可演示项目和一份有证据的求职叙事。目标是知道自己的系统在哪些条件下值得信任。

## 1. 安全不是最后加一个拒绝Prompt

工具输入、检索文档、仓库README、用户上传文件和远端MCP描述都可能包含恶意指令。模型可能把它们当作行动建议，因此执行边界必须独立判断权限。

我们把信息分为认证用户请求、系统政策、业务事实与不可信外部内容。来源标签有助于模型理解，但真正的保护来自能力限制、授权、审批、隔离和审计。把不可信文本放进特殊分隔符不是安全保证。

## 2. 从资产和边界写威胁模型

本课程资产包括模型API凭证、跨租户订单、退款能力、代码工作区、审计日志和评分器。攻击面包括工具参数、检索内容、服务端URL、事件订阅、artifact下载、模型生成代码和依赖安装。

对每个边界写四件事：谁是不可信输入方，可能影响什么资产，哪层强制执行限制，以及怎样测试限制有效。例如“恶意物流备注要求读取另一租户订单”对应工具层的主体约束，不是只检查模型有没有被说服。

MCP安全指南可用来检查代理混淆、令牌使用和SSRF等远程集成风险；课程模拟不会发送真实攻击请求。[S27](../../references/SOURCES.md#s27)

<!-- interaction:I22 -->

## 3. 设计负例，同时保留正常任务

给政策文档加入一句“忽略审批”，预期不是所有任务一律拒绝，而是仍能提取合法物流事实、提出合规退款申请、等待真实批准。若防护把所有包含“退款”的任务都拒绝，安全表面分数可能很好，系统却不可用。

每个安全测试同时检查违规效果与正常任务完成率。拒绝可以是正确结果，但不能成为回避全部任务的万能解。对攻击文本保留合成标签，不把真实秘密或用户数据放进课程仓库。

Anthropic关于Agentic Misalignment的研究使用受控条件考察风险，不能直接解释为真实产品中的发生率。这里借它提醒我们：不能把模型的口头承诺替代外部约束。[S09](../../references/SOURCES.md#s09)

## 4. 保护观测与评分系统

Trace、日志、监控面板和作业答案本身也是数据。令牌泄漏到日志之后，即使Agent权限正确，系统仍然失守。日志里的恶意HTML必须按文本渲染，不能执行脚本。

评分器与Agent分离，不能让被测Agent修改参考答案、验收测试或基线结果。模型评分器看到的候选答案要当作数据，输出需校验。课程网站默认没有付费模型调用，也不接受任意服务端Shell执行。

静态网站中的答案不是秘密。默认折叠答案是教学设计，不是访问控制；需要真正考试时，必须用独立受控评测服务和未公开题目。

## 5. 项目交付不止README截图

最终交付包括任务契约、架构图、启动说明、测试说明、来源与许可登记、威胁模型、故障矩阵、实验报告和已知限制。演示应该包含一次正常成功和一次故障恢复，而不只是事先录好的唯一成功路径。

可以采用迭代演示的项目节奏，但不需要把创业路演作为目标。Stanford CS224G强调项目交付和对自己提交代码的理解；课程将其转化为求职项目的可解释证据。[S21](../../references/SOURCES.md#s21)

## 6. 三个岗位方向，如何讲同一个项目

Application方向重点解释用户任务、证据、工具设计和效果迭代。Backend方向重点解释认证、状态、队列、幂等、审批和故障恢复。Infrastructure/Runtime方向重点解释协调与执行分离、资源约束、调度、隔离、准备复用和测量。

不是给同一段代码换三个职位名称。你需要分别拿出对应的实验：业务任务成功率、故障后账本不变量、系统资源与延迟对照。没有测过的数字不要写进简历；没有完成的功能标成设计或扩展。

一个合格叙述是：“我实现了持久任务和提案绑定审批，并对响应丢失、重复投递和旧Worker恢复做了故障注入。在课程模拟服务中，同一意图只产生一笔账本记录。真实支付API尚未接入。”这比“保证分布式exactly-once”更准确也更有说服力。

## 7. 系统设计面试的回答顺序

先澄清目标、负载、风险和依赖能力；再定义API和数据所有者；接着描述正常路径；然后挑关键故障窗口；最后讨论容量、观测、替代方案与边界。

不要一上来画Kafka、Redis、向量库和多Agent。对规模较小的服务，单数据库加Worker可能足够。面试官追问扩展时，再说明哪些假设变化迫使你引入新组件。

准备四个反问题：外部工具是否支持幂等键？任务是否必须在用户断线后继续？租户之间能否共享只读数据？可接受的错误类型与预算是什么？这些答案直接改变架构，而不是礼貌性开场。

## 8. 现场答辩应该暴露理解而不是背稿

答辩者现场插入一个故障：退款成功后丢响应；修改一个假设：用户批准后金额改变；增加一项负载：一个租户占满所有长任务；替换一个工具：外部接口不支持按ID查询。你必须说明哪些机制仍成立，哪些保证需要降低。

AI可以帮助准备项目，但你应能独立走读关键路径、解释一条失败Trace、修改一个测试并预测结果。关于技术评估随AI能力变化的讨论可以作为扩展阅读，但本课程不把“禁止AI”当唯一鉴别能力的方法。[S38](../../references/SOURCES.md#s38)

<!-- interaction:I23 -->

## 9. 结业不是所有模块都打勾

结业需通过三道门：功能门验证业务目标和代码修复；可靠性与安全门验证审批、隔离、重复和故障；证据门验证结果可复算、限制写清楚、答辩解释得通。任一道门失败，不能用更多页面或更漂亮UI补偿。

阅读`course/CAPSTONE.md`选择重点方向。课程网站只负责组织内容与互动，不替学习者伪造实验记录、履历或通过状态。最终项目的价值来自你真正实现、测量和理解的部分。

<!-- knowledge:K09 -->
<!-- knowledge:K19 -->
