跳到主要内容

挡不住时 — 监控、失败安全与规划

这一章讲三件事: 挡不住之前——怎么让系统看得见(监控); 挡不住那一刻——怎么让它败得安全(失败安全); 以及被整个行业写进控制框架的一件事——开工之前先规划。 读完你能回答:agent 深夜进死循环烧钱,谁先知道?烧完之后你靠什么还原现场?

1. 这一章讲什么

前面三章讲的都是「把坏事挡在门外」。原书在传统安全理论的收尾处换了前提: 有些坏事你挡不住。可能是漏洞没有补丁,可能是你暂时下线不了系统, 可能是失败压根不是攻击导致的。前提一换,三件事浮出水面,原书各给一节:

  1. 监控:挡不住,至少要看得见;
  2. 失败安全:挡不住,至少败得有方向;
  3. 规划:提前想好,让很多坏事根本走不到「发生」那一步。

2. 顶层全景

事前 事中 事后
┌────────┐ ┌────────────┐ ┌──────────────┐
│ 规划 │──────→ │ 监控(观察) │─────→ │ 日志取证 │
│ 设计文档 │ │ 异常检测 │ │ 事后复盘改进 │
└────────┘ │ 熔断(失败安全)│ └──────────────┘
└────────────┘
图说:三件事是一条时间线,不是三个孤立的选项。
规划决定监控布在哪;监控决定失败多快被发现;
失败安全决定失败那一瞬间的损失上限;日志决定你能不能搞清发生了什么。

3. 核心原理

3.1 观察:看不见的行为,防不了

作者起手是个比喻:巡一套计算机系统像逛一片连着 黑房间的建筑群—— 到处是装信息的箱子,你得有钥匙进屋、有灯看箱。想发现「有人在溜进来」 或「哪栋楼着火了」,前提是你能在别处看见楼里1

由此得到原则:观察不到的行为,安全无从谈起;系统需要足够的遥测 (telemetry——系统对外吐出的运行数据:指标(带数字的计量,比如每秒请求数)、日志、调用轨迹,都算), 让人分得清预期行为与异常行为1

工程上的抓手是集中日志(centralized logging):把散在各处的日志 汇进同一个系统,让监控、排障、分析在同一个地方做。书中引 Splunk 的定义, 并点出它带来的第二重好处——数据规范化(data normalization): 把所有来源的数据转成同一套 schema(统一的字段结构),跨系统才能查询、 才能拼接出完整事件链2。作者拿人体发烧打比方:发烧是身体自带的报警, 报警本身就是「发现感染并对抗它」的一部分2

为什么监控属于纵深防御(03 章)的一层?书里的推理是:我们想要预防, 但必须假设某些失败不可避免,并且常常事后才知道出了事; 既然如此,「能看见自己的系统与自己的控制是否健康」就是必须预先布好的一层, 它让你知道正在被攻击,并给你响应的选项3

监控还有个兜底用法:当你既打不了补丁也下线不了某个部件 (比如关键客户系统上有个漏洞,补丁还没出),你至少可以给它布上 加倍的监控与日志,盯着它有没有行为异常4

这套东西在合规框架里是硬性要求,书里点了两个:CIS 关键安全控制的第 8 条 (审计日志管理:收集关键系统日志、保证日志防篡改、定期分析), 以及 NIST SP 800-53(美国国家标准与技术研究院的联邦系统控制目录) 的 AU 审计族:事件记录、留存、分析与关联,一个都少不了5

落到 AI 系统,书里的要求具体到一句话:除了记错误(自己排障用), 还要记关键的用户交互与安全动作——尤其是每一次跨安全边界的调用6。 (「安全边界」在 02 章 3.5 节定义过:权限假设改变的位置。)

3.2 失败安全:失败要有方向

原则:系统失败不可避免;安全设计把失败纳入考虑,并约束失败的后果7

关键追问是:失败时,系统往哪边倒? 书里拿门举例8:

  • 消防通道的门断电应该弹开(fail open)——困住逃命的人比放进来人更糟;
  • 金库的门断电应该锁死(fail closed)——宁可打不开,不可被打开。

fail closed(失败即关闭)是安全语境的默认答案:失败应当减少系统能力, 而不是扩大它7。合上 02 章的话就是:失败的那一刻,权限只许缩、不许涨。

作者随后把这个问题往前推了一步,这一步最有意思:有些系统,开也不对、 关也不对。书里的例子是一座重要设施的门禁,控制器出了灾难性 bug—— 永久锁死敞开一样是灾难(业务一样停摆)。解法不是在开/关里二选一, 而是为失败专门设计一个子系统:主系统失效时,备用系统接管—— 要求额外验证、人工审批、换一条小通道、换一套凭据,都行9。 韧性的来源不是「败对方向」,是「失败路径本身被设计过」。 这条在 NIST SP 800-160(系统工程安全标准)里有正式表述:系统应「败在已知的 安全状态」——「已知」两个字是关键,失败后的样子要是你设计过、演练过的那个10

对 AI 系统这个原则格外对味,书里给的理由很实际:agent 失败起来会烧钱—— 陷入循环失败状态的系统,token(模型计费的处理单位)照常消耗; 跟 agent 打过交道的人都见过它对着一个不可能的任务空转「钻牛角尖」7

烧的不止 token,还有算力(计算开销:显卡时间、电、钱)。 失败安全在这里的形态是:给循环设上限,到顶就停

3.3 规划:它本身就是一个控制族

第三件事听起来最不「技术」,但它在美国联邦控制框架 NIST SP 800-53 里 是一个独立的控制族:规划(planning)。作者强调这个决定不是随便做的—— 他带过的团队在规划阶段消灭掉的坏设计与漏洞「数不过来」11

书里的类比是大楼工程:大项目开工前,工程与安全团队一起推敲设计文档, 就像施工方一起过总蓝图;受监管的行业里,合规要求也该在规划阶段就纳入; 多团队协作的项目更需要一份人人可据以决策的「北极星」12

作者在这里预告了后文:规划的好处会在 ALARA 框架(第 10 章展开)的 测试结果里看到实证——规划得好,效果会一路传到下游:轻则目录结构更清楚, 重则靠一个正确的底层技术决策直接消灭整类漏洞13

3.4 主走查:一场 agent 死循环事故的全过程

把三件事串在一条时间线上。场景:一个负责「每天整理工单」的 agent, 某天夜里任务失败后进入重试循环(下列数值全部是为演示编的,不是真实数值):

23:40 上游工单系统接口超时,agent 任务失败
23:40 agent 的重试逻辑启动:失败 → 重试 → 失败 → 重试……
(失败安全缺位:重试没有上限)

00:05 监控层看到的(集中日志里,字段已规范化):
task_duration_p95 从 40 秒爬到 620 秒
llm_token_usage 每小时 8 万,是平日峰值(6 千)的 13 倍
tool_calls(工具调用数)连续 25 次同参数调用同一接口,全部超时
→ 异常规则命中:token 消耗增速 + 同参数重复调用 → 告警发到值班手机

00:07 熔断(失败安全在起作用):
预算闸门触发——该任务本轮 token 预算 20 万,已用 21 万,熔断,任务置为 failed。
失败方向核对:任务停了(能力减少),但它只有只读权限,
没有任何「失败后涨权限」或「失败后扩大重试范围」的路径。

次日上午 事后取证(日志在说话):
从集中日志按 task_id 拉全链路 → 23:40 首次超时的接口、
25 次重试的参数、消耗的 token 总量与费用,全部可回放;
结论:上游超时 + 无限重试;改进项两条:重试上限、上游超时提前熔断。
—— 如果 23:40 起一条日志都没存,这场复盘只能靠猜。

这张时间线就是本章三件事的分工:监控把「正在烧钱」变成一条 00:05 的告警; 失败安全把损失封在 21 万 token 的预算线上;日志把 40 分钟的事故变成两张改进项。 三者缺一,故事分别变成:「财务月底才发现账单异常」、「烧到天亮」、 「复盘全靠猜」。

4. 作者的判断与证据

  • 有证据的:CIS 与 NIST 两个框架把日志列为强制控制,是公开可查的标准文本5; NIST 800-160「败在已知安全状态」同样是标准原文10;
  • 作者的观察/比喻:暗房间比喻、发烧比喻是作者的讲法;「agent 空转钻牛角尖」 是作者一线观察7;
  • 作者的判断:规划阶段的决策能「消灭整类漏洞」——方向可信,书里用 ALARA 的测试结果作证(后文第 10 章),但「多少比例的漏洞本可在规划期消灭」没有数字。

5. 边界与局限

  • 监控一章没有讨论日志自身的安全:日志里常含敏感数据,集中化之后日志库 本身成了新的高价值目标,书里没展开;
  • 失败安全一节对「备用系统接管」只有构想,没有讨论备用系统自己的失效模式 (它也会衰减——03 章);
  • 规划一节在原书里篇幅最短,是全书相对单薄的一节;正式版可能扩写(书中说 后面会回到 ALARA 与测试结果);
  • 死循环走查中的预算闸门、告警规则为演示所编;书里只给了「agent 烧钱、空转」 的现象与 fail closed 的原则。

6. 可带走的

  1. 观察不到的行为防护不了:遥测先行,覆盖指标、日志、调用轨迹;
  2. 集中日志 + 数据规范化,是事件能被拼接、能被复盘的前提;
  3. 补不了也下不了的部件,退而求其次布满监控,盯异常行为;
  4. AI 系统要记的不止错误:关键用户交互、跨安全边界的每次调用都要留痕;
  5. 失败要有方向:失败应当减少能力,永不扩大权限(fail closed);
  6. 开/关两难时,第三条路是给失败专门设计子系统——败在「已知的」安全状态;
  7. agent 的失败会烧钱:重试要有上限,预算要有闸门;
  8. 规划是正式控制手段,不是仪式:漏洞最便宜的消灭地点是设计文档;
  9. 三件事按时间线布:规划定监控布点,监控定发现速度,失败方向定损失上限,日志定复盘能力。

7. 原文地图

主题原书章原文位置
暗房间比喻、观察原则Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:3(搜「dark rooms」)
集中日志定义、数据规范化Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:5(搜「centralized logging」)
规范化细节、发烧比喻Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:7(搜「data normalization」)
预防是愿望、监控是纵深防御的一层Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:9(搜「extension of defense in depth」)
打不了补丁就加监控Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:11(搜「verbose monitoring」)
CIS 第 8 条与 NIST 800-53 AU 族Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:13(搜「800-53」)
AI 系统记跨边界调用Monitor What We Can’t Controltext/10-fm-monitor-what-we-can-t-control.txt:35(搜「across security boundaries」)
agent 烧钱、空转钻牛角尖、失败安全原则Fail Securely (Fail Closed)text/11-fm-fail-securely-fail-closed.txt:3(搜「chew through funds」)
失败不可避免原则Fail Securely (Fail Closed)text/11-fm-fail-securely-fail-closed.txt:5(搜「Failure in computer systems is inevitable」)
门:fail open 与 fail closedFail Securely (Fail Closed)text/11-fm-fail-securely-fail-closed.txt:7(搜「fail open」)
失败专用子系统、备用接管Fail Securely (Fail Closed)text/11-fm-fail-securely-fail-closed.txt:9(搜「deliberate sub-system」)
NIST 800-160「已知安全状态」Fail Securely (Fail Closed)text/11-fm-fail-securely-fail-closed.txt:23(搜「known secure state」)
规划是控制族、规划先行Planning is a Security Controltext/12-fm-planning-is-a-security-control.txt:3(搜「entire security control family」)
设计文档、总蓝图、合规前置Planning is a Security Controltext/12-fm-planning-is-a-security-control.txt:5(搜「master blueprint」)
ALARA 预告、决策消灭漏洞类Planning is a Security Controltext/12-fm-planning-is-a-security-control.txt:7(搜「ALARA」)

Footnotes

  1. 出处:「Monitor What We Can’t Control」第 3 段(text/10-fm-monitor-what-we-can-t-control.txt:3,搜「dark rooms」)。暗房间/建筑群比喻;原则原句:「You cannot secure behaviors you cannot observe. Systems require sufficient telemetry to distinguish intended behavior from anomalous behavior.」 2

  2. 出处:「Monitor What We Can’t Control」第 5 段(text/10-fm-monitor-what-we-can-t-control.txt:5,搜「centralized logging」)与第 7 段(text/10-fm-monitor-what-we-can-t-control.txt:7,搜「data normalization」)。Splunk 定义:集中日志把多源日志汇入单一系统,简化监控、排障与分析;数据规范化把数据转成共同 schema 便于跨复杂查询引用与拼接;发烧比喻。 2

  3. 出处:「Monitor What We Can’t Control」第 9 段(text/10-fm-monitor-what-we-can-t-control.txt:9,搜「extension of defense in depth」)。原文:想要预防,但有些失败不可避免、有些事后才知;监控自身与监控控制品的健康是分层防御中的一层,让你知道正被攻击并给出响应选项。

  4. 出处:「Monitor What We Can’t Control」第 11 段(text/10-fm-monitor-what-we-can-t-control.txt:11,搜「verbose monitoring」)。关键客户软件有无补丁的漏洞、又不能下线时的次优解:布满监控与日志,看能否发现异常行为。

  5. 出处:「Monitor What We Can’t Control」第 13 段(text/10-fm-monitor-what-we-can-t-control.txt:13,搜「800-53」)及第 15-23 段清单。CIS(Critical Security Controls)控制 8:收集关键系统日志、保证防篡改、定期评审分析;NIST SP 800-53 AU 族:事件记录、留存、分析关联。 2

  6. 出处:「Monitor What We Can’t Control」第 35 段(text/10-fm-monitor-what-we-can-t-control.txt:35,搜「across security boundaries」)。AI 系统应充分布点:既记错误(排障),也记关键用户交互与安全功能——例如跨安全边界的调用。

  7. 出处:「Fail Securely (Fail Closed)」第 3 段(text/11-fm-fail-securely-fail-closed.txt:3,搜「chew through funds」)。失败时应不扩大权限、不产生意外行为;agent/LLM 系统进入循环失败态会大量烧 token 与能源;与 agent 打过交道的人见过它对着不可能任务无限空转。原则句在第 5 段(text/11-fm-fail-securely-fail-closed.txt:5,搜「Failure in computer systems is inevitable」)。 2 3 4

  8. 出处:「Fail Securely (Fail Closed)」第 7 段(text/11-fm-fail-securely-fail-closed.txt:7,搜「fail open」)。救生场景门应 fail open,金库应 fail closed;一般而言失败应降低能力而非扩大。

  9. 出处:「Fail Securely (Fail Closed)」第 9 段(text/11-fm-fail-securely-fail-closed.txt:9,搜「deliberate sub-system」)。设施门禁例:主控失效时备用系统接管(额外验证/人工审批/小门/备用凭据);韧性来自「为失败刻意设计的子系统」。

  10. 出处:「Fail Securely (Fail Closed)」第 23 段(text/11-fm-fail-securely-fail-closed.txt:23,搜「known secure state」)。NIST SP 800-160 明确要求系统「fail in a known secure state」。 2

  11. 出处:「Planning is a Security Control」第 3 段(text/12-fm-planning-is-a-security-control.txt:3,搜「entire security control family」)。NIST SP 800-53 把规划单列为控制族;作者团队在规划阶段移除的坏决策与漏洞「数不过来」;先规划再写 prompt/跑 agent 任务,产出质量更高。

  12. 出处:「Planning is a Security Control」第 5 段(text/12-fm-planning-is-a-security-control.txt:5,搜「master blueprint」)。设计文档=技术严谨地讨论计划的正式途径;类比大楼总蓝图;合规框架应在规划期纳入;多团队需要北极星。

  13. 出处:「Planning is a Security Control」第 7 段(text/12-fm-planning-is-a-security-control.txt:7,搜「ALARA」)。原书预告后文将见 ALARA 框架的测试结果;计划铺得好,下游多点多面受益,包括靠核心技术的正确决策缓解整类漏洞。