Havenlon|安全讲人话(十一):为什么 SaaS 不能成为最后裁判

Havenlon|安全讲人话(十一):为什么 SaaS 不能成为最后裁判
云端可以协同治理但不应该拥有最终执行事实。先讲一件让整个云安全行业后背发凉的事。2023 年一个代号Storm-0558的攻击组织拿到了微软的一把消费级账户签名密钥MSA key。就凭这一把密钥加上微软代码里的一个校验漏洞他们可以伪造出微软云的身份令牌——而且本该只对消费者账户有效的密钥因为漏洞连企业邮箱的令牌也能伪造。结果他们凭空变出了合法凭证读取了约 25 个组织的邮件其中包括美国国务院、商务部连商务部长本人的邮箱以及国会工作人员。请注意这里的要害攻击者没有去逐个攻破这些政府机构。他们攻破的是那个最终说了算的裁判——微软云颁发身份的权威本身。当云端是谁被允许的最终事实来源时偷到云端的那枚印章就等于伪造了所有人的许可。更讽刺的是事后连微软和美国网络安全审查委员会CSRB都无法确定这把密钥究竟是怎么被偷走的。这件事正是本篇要讲的核心。今天绝大多数企业系统最终都会走向云端成员管理在云端策略配置在云端审批在云端设备状态在云端日志报表也在云端。对组织来说这太自然了——信息集中后更易协作、统一管理、跨地域运行。所以 SaaS 当然重要。它让复杂治理变得可见把分散的人和设备组织起来让企业知道谁提了请求、谁参与了审批、哪些策略在生效。但有一个容易被忽略的问题负责协同治理的系统是否也应该拥有最终执行权很多架构默认答案是应该——既然云端已经掌握身份、权限、审批、策略和状态它似乎最适合判断一个动作能不能发生。可一旦 SaaS 成了最后裁判整个系统就回到了那个熟悉的单点假设只要云端判断允许本地就必须执行。而这意味着所有真正重要的拒绝能力最终仍然服从于一个可以被远程访问、远程配置、远程攻破的软件控制面。一、SaaS 擅长组织共识不等于它天然掌握执行事实云端治理最大的优势是能看见全局组织有哪些成员、成员什么关系、谁有审批资格、策略如何配置、过去有哪些操作、哪些设备在线、哪些请求在等待。这些信息让 SaaS 非常适合做一系列重要工作组织成员与角色、分发策略、协调多人审批、同步治理状态、聚合日志与证据、提供报表告警审计视图。从这个角度看SaaS 更像一个协调中心把不同主体的判断汇总成一套可执行的治理结果。但组织形成了什么判断和最后究竟发生了什么不是同一个问题云端知道某请求已获批准却未必能直接确认本地真正执行的对象是否变化它知道策略要求金额不超过某阈值却未必掌握执行时的完整上下文它知道某设备上次心跳正常却不能仅凭这一点证明设备当前内部状态没异常它记录到系统声称完成了某操作却不能因为收到一个成功状态就认定真实执行已按预期发生。所以SaaS 可以组织治理共识却不该仅凭自己汇总出的结果就成为最终执行事实的唯一来源。共识是大家想怎样执行事实是现实里真的发生了什么——这中间隔着一整条可能被污染的链路。二、云端看到的是治理状态本地面对的是执行现实SaaS 和本地执行边界看到的是两个不同的世界。云端看到的通常是抽象后的治理信息谁发起了请求、谁参与了审批、哪些策略被匹配、请求属于什么类型、设备报告了什么状态、业务系统提交了哪些参数。本地执行边界面对的是更接近最终动作的事实真正的目标对象是谁、最终金额和参数是什么、当前设备状态是否允许、本地密钥和执行槽位是否可用、执行上下文是否与审批时一致、通信是否完整、是否存在策略冲突或状态异常。两类信息都有价值但用途不同。云端更擅长回答组织是否同意这件事本地边界更适合回答这个动作在当前真实状态下能不能发生如果把这两个问题全交给 SaaS系统就默认了一件很难成立的事云端对本地事实拥有完整、实时且不可被欺骗的理解。但现实里网络会中断状态会延迟设备会变化参数可能在链路中被替换业务系统和云端也可能对同一动作形成不同解释。越靠近真实执行事实才越完整。所以最终裁决必须尽量靠近最终执行点。这正是零信任架构NIST SP 800-207里PDP / PEP分工的深层含义策略决策点PDP可以在云端思考应不应该但策略执行点PEP必须在最靠近资源的地方守住能不能。SaaS 是天生的 PDP它不该越俎代庖去做那个最靠后的 PEP。三、如果 SaaS 可以强制放行本地边界就只是远程外设很多系统虽然加了硬件设备或本地控制器但最终权力仍留在云端设备接收 SaaS 下发的允许执行按云端策略工作云端管理员能修改本地规则SaaS 能进入紧急模式强制放行设备拒绝后云端还能发更高权限命令覆盖结果。这种架构表面上有本地硬件实际上没有形成独立执行边界——本地设备只是云端软件的外设。它负责保存密钥、完成计算或执行动作但不拥有真正的裁决权。所有决定仍由 SaaS 作出硬件只是把云端结论落实到现实。和把执行直接放云端相比它可能在密钥保护和设备隔离上有改进但权力结构没有根本变化。只要攻击者控制了 SaaS、或拿到足够高的云端权限他仍然能让系统最终执行。所以判断一个本地边界真不真不能只看有没有设备而要看两条延续第八、十篇它能不能对 SaaS 说不这个不能不能被同一个 SaaS 远程撤销如果答案是否定的那么最终裁判仍然是云端——硬件只是它的一层执行外壳。四、SaaS 失陷的危险不只是数据泄露而是治理被重写企业通常把 SaaS 风险理解成数据问题账号被盗、客户信息泄露、配置被查看、日志被下载。这些当然重要。但当 SaaS 进入执行链后它还有一类更高影响的能力它可以改变组织如何形成允许执行的结论。攻击者一旦进入云端治理层往往不需要直接攻击本地执行系统他可以合法地重写规则修改成员角色、增加新审批人、降低多人审批阈值、调整风险规则、把陌生地址加白名单、修改策略生效范围、改变设备绑定关系、伪造或重放治理状态、让异常请求看起来符合当前规则。Storm-0558 就是这种性质的极端形态——攻击者没有绕过微软的认证他伪造了认证本身。当本地边界无条件相信云端时攻击者不必绕过安全流程他只需要重写安全流程。这类攻击最隐蔽的地方在于系统表面上仍在按规则运行审批通过了策略匹配了成员权限有效请求格式正确日志也可能完整——只是定义什么算正确的那套云端治理已经被改掉了。所以 SaaS 不能成为唯一裁判不只是因为它可能宕机而是因为它本身就是一个高价值攻击面。五、云端管理员也不应该成为最终执行根SaaS 往往需要管理员来管理组织、成员、策略、设备和恢复流程这是正常运维需求。但如果云端管理员能直接决定最终执行那整个系统依然押在一个高权限身份永远可信上。管理员账号可能被盗会话可能被劫持终端可能中毒内部人员可能作恶AI 助手也可能误导管理员完成危险配置。即便管理员本人毫无问题围绕他的整个软件环境仍可能失陷这正是第九篇 Owner ≠ God 的延伸。所以云端管理员可以拥有治理权限却不该通过一条远程指令直接获得最终执行权。他可以提策略变更、发起设备迁移、调整成员、推动恢复——但对高风险动作最终边界仍应保留独立约束。否则所有复杂治理最终只是为了把权力重新集中到一个超级管理员身上。六、SaaS Policy 是输入不是神谕很多企业把策略引擎当成系统的大脑金额低于阈值就放行、陌生对象需额外审批、异常时间拒绝执行、高风险设备进入限制模式。这些 Policy 很重要它们把组织治理转化成了可执行规则。但策略本身有局限它可能过期可能配错可能遗漏本地状态可能只覆盖云端看得见的信息也可能在一次攻击中被篡改。所以 SaaS Policy 更合理的角色是最终裁决的一个输入而不是不可质疑的命令。本地边界可以接收云端策略也可以验证策略是否有效是否适用于当前状态是否与本地约束冲突这里有一条特别重要的原则——当多个策略来源不一致、或云端允许而本地拒绝时系统不能默认云端权威更高也不能选那个最方便执行的结果。对于高风险执行应该收敛到更严格的一方fail-safe / converge-to-stricterdef final_decision(cloud_policy, local_policy, action): # 高风险动作任一独立域说拒绝就拒绝——取更严格者而非更方便者 if is_high_risk(action): if cloud_policy.deny or local_policy.deny: return DENY return ALLOW if (cloud_policy.allow and local_policy.allow) else DENY # 低风险动作可以更偏可用性 ...因为策略的价值不是让动作一定发生而是限制动作在什么条件下才可以发生。七、SaaS 适合做 Bletchley不应该替代 Enigma在 Havenlon 的架构里可以用两个名字来理解这种分工——它们本身就取自二战密码史布莱切利园Bletchley Park是集结了无数聪明头脑、组织协同破译的地方而 Enigma 是那台真正决定密文能不能成立的机器。Bletchley对应治理与协同。它组织成员、策略、审批、同步、证据汇总和跨设备协调。它看见的是组织如何形成判断负责把不同来源的信息整理成执行边界可用的治理结果。Enigma对应最终执行。它面对的是实际动作、最终参数、本地状态以及这个动作到底能不能穿过边界。二者的关系不该是Bletchley 下命令Enigma 无条件照做。更合理的是Bletchley 提供治理输入Enigma 完成最终裁决。┌──────── Bletchley云端 / 治理平面 / PDP────────┐ │ 成员 · 角色 · 策略 · 多人审批 · 状态同步 · 证据聚合 │ │ 产出这个请求经过了哪些治理、组织是否同意 │ └───────────────────────┬───────────────────────────┘ │ 治理输入不是命令 ▼ ┌──────── Enigma本地 / 执行边界 / PEP───────────┐ │ 最终对象 · 参数 · 本地状态 · 意图一致性 · 冲突检测 │ │ 裁决这个动作现在到底能不能发生 │ └───────────────────────────────────────────────────┘云端可以说这个请求经过了哪些审批、当前策略是什么、哪些主体同意了、建议如何处理。但本地边界仍要根据自身状态和执行事实判断这个动作现在能不能发生。这不是相互竞争而是职责分离——Bletchley 把组织的复杂判断组织起来Enigma 确保这些判断不能未经独立边界就直接进入现实。八、没有云端时系统应该收缩而不是自动失去边界如果 SaaS 不是最终裁判那云端失联时怎么办这是个现实问题——设备会离线网络会中断SaaS 会维护企业也希望云端不可用时能继续做部分操作。最危险的设计是云端一断本地就自动进入宽松模式。因为这等于给攻击者递了一张纸条只要切断云端就能降低安全要求回想第八篇任何 Fail-Open 都是一份制造故障即可绕过的攻击说明书。更合理的做法是根据预先定义的本地状态收缩能力低风险、可验证、已预授权的动作可以继续高风险、依赖最新治理状态或多人协同的动作暂时拒绝系统保留诊断、恢复和必要维护能力等云端重连后再同步状态与证据。这会牺牲一部分可用性但守住了一条原则云端不可用不等于边界必须消失。本地权威的意义之一正是在 SaaS 不可用或不可信时仍然拥有有限但真实的判断能力。九、云端记录不等于执行证据SaaS 很适合保存日志集中展示谁在何时发起请求、审批如何完成、策略如何匹配、设备报告了什么结果。但云端日志不能单独定义执行事实。因为日志通常来自各系统的上报业务系统说请求已提交审批系统说流程已通过设备说执行成功SaaS 把这些状态汇总成一条看起来完整的记录。但关键问题仍然没被回答设备执行的是否就是审批的那个动作参数有没有在链路中变化本地拒绝是否被错误解释成了别的状态关键证据是否由执行边界独立生成如果所有证据都由云端统一解释那么 SaaS 既是治理者、又是记录者、还是历史的最终解释者——这会让系统缺少真正独立的执行证明第九篇讲过掌握执行权的人不该同时掌握历史解释权。更可靠的做法是让最终执行边界产生自己的、可验证的证据例如由 Enigma 本地签名、并以哈希链/append-only 形式记录再同步到 SaaS。云端负责聚合与展示但不能随意改写本地已经形成的执行事实。SaaS 可以保存证据但证据不能只由 SaaS 自己证明。十、云端和本地之间不应该是单向服从关系传统云端控制架构往往是中心化的云端下发 → 设备执行 → 云端查询 → 设备汇报。这适合普通设备管理但不适合承担最终执行裁决的系统。在执行安全架构里云端和本地更像两个不同权威的协作云端掌握组织治理信息本地掌握执行状态和物理边界。两者需要交换信息也需要相互约束——云端不能无条件覆盖本地本地也不能完全忽略组织治理。只有当云端策略、成员意愿、本地状态和最终参数共同满足条件时动作才进入执行。这不是为了制造冲突而是为了防止任何单一层成为绝对权威。这在分布式信任里叫分离信任split trust/ 多方共识真正可靠的治理不是让所有组件听命于一个中心而是让不同权力在关键动作前形成收敛。十一、SaaS 的价值不在于拥有最终权力而在于组织复杂治理有些产品认为只有掌握最终执行权SaaS 才真正有价值。其实不然。SaaS 最擅长的从来不是成为最后那块芯片而是组织那些本地设备不适合完成的复杂工作管理大规模成员、处理跨地域审批、配置策略模板、提供风险视图、同步设备状态、聚合执行证据、支持组织协作、管理生命周期和恢复流程。这些能力让它成为治理平面而不是执行事实本身。把最终执行权从 SaaS 拆出来不是削弱云端而是让云端不必承担它无法可靠承担的绝对责任。一个 SaaS 如果既要负责治理、又要保证每一次真实执行绝对正确那它就必须成为一个永不失陷的超级系统——这显然不现实Okta、微软这样的巨头都会被攻破。更成熟的架构是让 SaaS 在自己擅长的地方发挥作用同时坦然承认它也可能故障、被攻破或判断不完整并为这种可能提前设计好边界。十二、为什么 SaaS 不能成为最后裁判因为云端看到的是组织如何形成判断却不一定拥有最后执行时的全部事实。因为 SaaS 可能被攻破策略可能被重写管理员身份也可能失陷。因为云端审批通过只能证明治理流程形成了某种结果不能自动证明本地动作仍与最初意图一致。因为如果 SaaS 可以远程撤销所有本地拒绝那么所谓独立硬件边界就只是一层执行外壳。所以SaaS 应该负责协同治理而不是垄断最终执行事实。它可以提出、可以协调、可以审批、可以同步、可以记录、可以给出策略结果——但最后那个不可逆的动作仍然应该经过一个靠近执行点、拥有独立状态、具备真实拒绝能力的边界。Havenlon 里 Bletchley 的价值不是成为一个无所不能的云端大脑而是把组织治理变成可靠的输入Enigma 的价值则是让这些输入在进入现实之前仍要面对最后一次独立裁决。云端可以告诉系统组织认为这件事可以继续。但它不应该单独定义所以这件事已经可以发生。因为真正成熟的系统不能把最终事实交给任何一个可以被远程说服的中心。Storm-0558 偷走的那把密钥提醒我们当云端是唯一的裁判攻破云端就等于攻破了每一个相信它的人。这是《Havenlon安全讲人话》系列的第十一篇。下一篇我们看清这道边界的另一半——硬件Enigma到底扮演什么角色不是为了更神秘、更高级而只是为了让最后一步更难被软件随意改写。参考来源本文引用的真实事件与技术概念Analysis of Storm-0558 techniques for unauthorized email access — Microsoft SecurityChinese hackers forged authentication tokens to breach government emails — Help Net SecurityCompromised Microsoft Key: More Impactful Than We Thought — WizZero Trust Architecture — NIST SP 800-207