总结

  • Akamai 表示,2021 年 7 月 22 日 15:45 UTC,一次软件配置更新触发了其 Secure Edge 内容交付网络中 DNS 组件的漏洞。部分客户网站无法访问长达一小时。Akamai 回滚了更新,称服务已恢复正常并指出事件并非网络攻击。[1]
  • 次日 Akamai 更正了最初措辞的范围。该公司最初描述影响的是其 DNS 服务,但进一步调查将受影响的系统缩小至 Secure Edge CDN 的 DNS 组件。这一更正很重要:公开证据并未证明每个 Akamai 权威 DNS 服务、区域或客户都发生了故障。[1]
  • ThousandEyes 观测到约 15:38 UTC 开始出现 DNS 和应用故障,并在大约 16:45 UTC 广泛恢复。其测试显示受影响域名出现超时和 SERVFAIL 响应。其观测开始时间与 Akamai 声明的更新时间之间的 7 分钟差异反映了不同的证据边界,而非应该被强行归结为一个时间戳。[2][3]
  • 该事件表明,网络可达性不仅仅取决于工作链路和可达服务器。即使数据包能够传输到 CDN 边缘,如果命名控制平面无法返回可用地址,用户也无法建立预期的应用连接。[2][10][11]
  • Akamai 当前的 Edge DNS 文档描述了全球任播、主备区域、变更列表、版本差异、传播状态和先前版本的回滚。这些控制措施识别了成熟平台能够产生的证据,但当前产品文档并未证明哪个内部路径处理了 2021 年的更新。[5][6][7][8]
  • Akamai 事件前的系统论文描述了 24 个任播云和输入延迟名称服务器,旨在某些输入导致的故障期间保留旧数据。这是架构背景,而非事件事后分析。公开数据包并未确定受影响的组件是否使用了该设计,或为什么它未能阻止该事件。[9]
  • 问责遵循实际控制。Akamai 控制了共享组件、更新管道、验证、部署、监控、回滚和修复证据。客户控制了 DNS 和 CDN 多样性、证书、源站和连续性测试的一部分。递归解析器控制了缓存和提供过期数据策略。这些责任是分层的,但不可互换。

故障发生在应用连接之前

互联网中断常被描述为网络如同一个只有两种状态的开关。Akamai 事件之所以有用,正是因为它推翻了这种描述。

对于普通网络请求,用户从域名开始,而非 IP 地址。递归解析器沿着缓存信息和引用,直到获得域名的权威答案。返回的地址随后可引导连接至 CDN 边缘、负载均衡器或源站。如果权威步骤失败,用户可能永远不会尝试应用连接。路由器可以传输数据包。服务器可以供电。光纤可以完好。服务仍然不可达,因为命名控制平面未能产生下一个可用目标。[10][11][17]

ThousandEyes 在 2021 年 7 月事件期间观测到了这一分离。其报告指出,当受影响域名的 DNS 解析失败时,与 Akamai CDN 边缘基础设施的连接可能仍然可用。测试从权威服务器收到 SERVFAIL 响应或未收到响应。浏览器和应用随后显示出类似普遍网站中断的故障,尽管测量的中断发生在依赖链的更早期。[2]

这一区别不仅仅是技术术语。它界定了控制面。

如果光纤切断孤立了某个区域,负责的控制措施包括物理多样性、恢复和重新路由。如果 BGP 导出了不安全路径,控制措施包括路由策略、验证和遏制。如果权威 DNS 因共享配置更新触发漏洞而无法回答,控制措施包括配置表示、测试覆盖、部署范围、故障域分离、回滚权限、解析器交互和客户依赖设计。

将每种情况都称为"互联网中断"隐藏了这些差异。它也让责任飘向用户错误页面中出现的公司。更好的问题是:哪个系统未能提供下一步网络所需的信息,谁有实际能力预防、限制、检测和逆转该故障?

对于此事件,Akamai 自己的声明提供了高层触发原因。该公司表示一次软件配置更新触发了漏洞。它没有发布确切的配置、代码路径、受影响人群或内部拓扑。这意味着文章可以分析配置权限和可达性证据。它不能确定私有实现细节、归咎于某位工程师或声称某个命名的当前 Edge DNS 功能在 2021 年失效。[1]

因此目标很窄:网络基础设施的风险与问责。该事件之所以重要,并非仅仅因为存在软件漏洞。而是因为该漏洞位于一个能够影响共享 DNS 组件,并通过该组件影响许多客户站点可达性的配置通道之后。

时间线需要两个时钟和一次范围更正

ThousandEyes 将外部观察到的问题开始时间定于大约 7 月 22 日 15:38 UTC。Akamai 表示 15:45 UTC 软件配置更新触发了漏洞。这些时间指的是不同形式的知识。

外部测量平台记录其观察点测试何时开始失败。运营者记录变更何时发生、内部阈值何时触发或事件何时宣告。第一个失败的用户查询可能早于公开状态更新。配置可能随时间传播。时钟可能不同。负责任的方法是同时说明两个时间戳及其来源,而不是选择最简洁的那个。[1][2][3]

ThousandEyes 观察到使用 Akamai 的服务中 Web 和应用中断增加。其 DNS 测试发现解析 CDN 环境中托管域名的失败。部分用户收到 SERVFAIL,其他用户超时。影响因客户和地区而异。测量公司将广泛恢复时间定于大约 16:45 UTC。Akamai 表示中断持续长达一小时,服务在回滚后恢复。这些描述在公开证据支持的层面上是兼容的。[1][2]

Akamai 的声明中还包含另一个重要的时间线:声明本身发生了变化。

该公司于 7 月 23 日添加了更正。最初的帖子描述了对"Akamai DNS 服务"的影响。Akamai 表示,进一步调查显示影响局限于其 Secure Edge 内容交付网络的 DNS 组件。[1]

这并非编辑琐事。范围是根因证据的一部分。"Akamai DNS 故障"可能暗示每个权威 DNS 产品、区域、服务路径或客户共享一个故障。Akamai 的更正否决了这一暗示。独立观察者仍然合理地使用诸如"Akamai Edge DNS 中断"等短语来描述其测试所见,但负责任的复盘必须区分观察者的服务标签与运营者后来的组件边界。

范围更正也说明了为什么早期事件语言不应固化成为永久事实。运营者在完整组件图谱已知之前进行沟通。记者和客户重复最初的解释。搜索引擎保留它。后来的更正可能不如原始标题显眼。良好的问责实践需要版本化的记录:说了什么,何时更改,为何更改,以及更改影响了哪些结论。

在此案例中,更正缩小了受影响的平台,但并未消除可达性影响。一个组件可能比产品更窄,但仍位于许多客户使用的路径上。相关问题变得更加精确:

  • 哪个 Secure Edge CDN DNS 组件收到了更新?
  • 哪些客户属性或命名路径依赖于它?
  • 该组件是否在独立服务位置间共享配置状态?
  • 哪些故障域仍然可用?
  • 回滚如何传播?
  • 什么证据证实了正常答案已恢复?

公开来源集并未回答全部六个问题。它证实了回滚足够快地恢复了正常服务,并且公司计划审查其更新流程。其余问题定义了证据差距,而非填补猜测许可。[1]

DNS 多样性不等于配置多样性

DNS 架构期望区域拥有多个权威服务器。RFC 2182 直接解释了原因:当一台服务器不可用或不可达时,区域信息应保持可用。次要服务器应置于考虑常见故障模式(包括网络和电源故障)的位置。[12]

大型商业服务增加了另一种分布形式。Akamai 的 Edge DNS 文档描述了 IP 任播,即一个逻辑服务地址从多个物理位置宣告。解析器的查询根据网络拓扑和策略被路由至可用实例。Akamai 描述了跨多个网络和大陆的数千台名称服务器。[5]

RFC 4786 解释了任播为何吸引权威 DNS。它分布服务、提高可访问性并避免 DNS 引荐随每个物理位置增长。它也警告监控变得更加复杂:可用性取决于客户端位置,而到达特定节点的客户端群体会随着路由变化。[13]

物理和路由多样性很有价值。它们不能自动提供配置多样性。

如果许多位置消耗相同的非安全输入,每个位置物理上可能健康,但仍返回不可用的答案或以相同方式失败。增加更多任播站点可以增加服务的多样性,同时保留单一控制平面依赖。平台可能能够抵御数据中心丢失,但仍易受全局配置漏洞影响。这两类故障需要不同的控制措施。

这就是为什么计数服务器是一个薄弱的弹性声明。运营者需要识别哪些元素是独立的:

  • 电力和设施;
  • 物理网络路径;
  • 路由宣告;
  • 软件二进制文件;
  • 配置输入;
  • 验证系统;
  • 部署控制器;
  • 管理凭证;
  • 监控;
  • 回滚通道;
  • 组织审批。

不同国家的两台名称服务器可能共享同一配置源。两个 DNS 提供商可能共享同一注册商或隐藏主控。两条 CDN 路径可能依赖同一证书自动化或源站。两个审批步骤可能使用同一解析器,因此接受相同的非安全含义。

事件的公开原因声明指向了这一共享控制问题。Akamai 并未表示某个单独服务站点宕机。它表示软件配置更新在共享组件中触发了漏洞。服务在回滚后恢复。这一序列使更新通道(而非服务器数量)成为核心问责对象。[1]

适当的控制模型会将配置分发视为其自身一种网络协议。它拥有生产者、验证器、版本、接收者、传播时间、确认和回滚。应针对部分故障、过时状态、不兼容版本和非安全全局值进行测试。一个成熟的平台应知道哪些接收者接受了变更、哪些拒绝了变更、它们服务哪个版本,以及用户从每个故障域观察到什么。

因此冗余声明应表达为故障假设,而非清单。"我们有数千台名称服务器"回答的是容量和位置问题。"新输入不能在独立金丝雀证明其安全之前影响每个服务故障域"回答的是配置爆炸半径问题。2021 年 7 月事件使第二个声明成为需要证据的声明。

配置更新是网络权限的委派行使

术语"软件配置更新"听起来比软件发布不那么重要。配置常被视为数据:更易更改、风险低于代码,适合快速部署。在分布式网络中,这一区别可能具有误导性。

配置选择行为。它可能激活代码路径、更改路由、更改记录数据、扩大匹配范围、移除安全限制或将流量导向不同服务。具有全局范围的配置可以行使比局限于一台金丝雀服务器的代码变更更大的操作权限。

因此正确的风险单位不是文件类型。而是有效权限。

变更管道在分发前应回答四个问题。

第一,经过解析和规范化后更新意味着什么?语法有效性不是语义安全性。一个值可能格式正确但仍选择一个不可能、不安全或全局不一致的状态。

第二,它会影响哪些用户、区域、服务和位置?范围应从编译结果计算得出,而非从变更请求名称推断。

第三,什么独立条件可以阻止它?验证器的故障模式应与受保护组件的不同。如果两者使用相同的模式、解析器或生成模型,共享缺陷可能使两者都失效。

第四,如果正常控制路径受损,如何恢复先前状态?回滚需要已知良好版本、分发权限、可达的管理平面以及接收者实际返回先前状态的证据。

Akamai 当前的 Edge DNS 文档提供了有用控制工件的示例。主区域变更累积在变更列表中。操作员可以审查添加和删除、激活区域或丢弃变更。API 列举区域版本、显示差异、报告传播状态并可以重新激活早期版本。[7][8]

这些文档是当前产品参考。公开事件声明并未说明 2021 年的 Secure Edge CDN 组件使用了此确切工作流。声称已记录的变更列表控制失败将是不准确的。该文档仍然有价值,因为它展示了受控 DNS 平台中可能存在的证据:版本、差异、审查者决策、激活事件、传播记录和重新激活操作。

对于公开问责,最有用的事后证据将把实际的 2021 年更新映射到等效工件:

  • 预期目的和批准范围;
  • 规范化配置;
  • 激活前运行的测试;
  • 第一批金丝雀群体;
  • 接收者的顺序和百分比;
  • 触发的告警;
  • 停止传播的决策和权限;
  • 选择的已知良好版本;
  • 回滚后接收者的确认;
  • 确认 DNS 答案和应用可达性的外部测试。

发布每个私有配置值可能造成安全或客户风险。问责并不要求这样。它要求足够的结构化证据来证明公司理解了故障类别,修复解决了问题,并且相同的输入不能再获得相同的未受控范围。

Akamai 的架构论文为问题提供了信息,而非裁决

事件发生前,Akamai 研究人员发表了一篇论文,描述了该公司的 DNS 系统如何回答大量权威查询。论文讨论了 24 个任播云、系统监控以及处理过时或危险输入的机制。一种设计在每个云中放置了输入延迟名称服务器。这些服务器以人为延迟接收输入,并在操作员响应输入导致的故障期间继续使用旧数据回答。[9]

该架构与配置问责直接相关,因为它描述了新鲜输入和持续服务之间的有意识分离。它表明 Akamai 工程师已将输入导致的故障视为一类。它也提供了具体术语来询问 2021 年发生了什么。

它并未提供答案。

操作员的事件后帖子识别了 Secure Edge CDN 的 DNS 组件。论文描述了系统级别的 Akamai DNS 架构。本数据包中的公开来源并未证明受影响的组件使用了论文的输入延迟设计、触发更新是延迟输入之一、该设计对受影响的客户路径启用,或它失败了。

将论文转为指责将犯下常见的分析错误:将已发布的架构视为每个生产路径的完整清单。大型网络包含多代系统、产品特定组件、迁移、异常和控制边界。一篇论文可以准确描述一种机制,而不能保证每个服务都使用它。

可辩护的使用是反事实和证据性的。

如果受影响的组件存在独立的延迟路径,它在事件期间服务了什么输入?如果不存在,什么属性使该组件不合适?如果更新影响了代码行为而非答案数据,旧配置是否仍会调用相同漏洞?如果回退需要操作员激活,监控是否及时识别了条件?如果用户到达了不同的任播云,回退状态是否保持一致?

这些问题之所以重要,是因为仅回滚本身只提供了一个证明:当新配置被移除时,服务立即恢复。它不揭示独立路径是否包含了部分中断,原始验证为何未发现漏洞,或者不同的非安全配置是否会导致相同的共享故障。

该论文也证明了为什么证据应关联到故障类别。操作员可以说它有冗余名称服务器、任播和延迟输入。客户需要知道每种机制覆盖哪些故障。设施丢失、BGP 隔离、过时数据、损坏数据、软件漏洞和控制平面受损是不同的。一种机制设计用于一种可能对另一种无关。

因此,2021 年 7 月的问责记录应避免两个极端。它不应忽略 Akamai 已发布的弹性工程,也不应假设该工程保证了此组件。已记录的安全措施与未公开的事件路径之间的差距本身就是一个对精确证据的请求。

回滚速度很重要,但回滚证据更重要

Akamai 的回滚在大约一小时内恢复了服务。这在操作上很重要。当共享组件影响客户可达性时,快速返回已知良好状态限制了损害,并减少了在生产中无限调试的诱惑。[1]

回滚不是一个动作。它是一系列声明。

第一个声明是操作员将新更新认定为可能原因。第二个是先前的版本可用且安全。第三个是回滚命令到达了受影响的接收者。第四个是接收者接受了它。第五个是权威响应恢复。第六个是应用从外部网络可达。每个声明有其自己的证据。

版本控制界面可以证明选择了哪个对象。分发遥测可以证明哪些实例确认了它。DNS 探测可以证明从选定观察点返回了答案。应用测试可以证明答案导致了工作连接。客户报告可以识别内部监控遗漏的残留路径。

这种分层证据在任播系统中很重要。从一个位置的成功测试可能到达一个任播实例,而其他位置的用户到达另一个。RFC 4786 的监控警告适用:服务可能看起来健康或病态,取决于观察者的路由路径。[13]

因此操作员应在事件前定义回滚完成:

  • 控制状态已回退;
  • 配置接收者已收敛;
  • 权威答案在各故障域成功恢复;
  • 错误代码和超时回到基线;
  • 代表性客户路径的应用可达性已恢复;
  • 状态沟通已更新剩余的不确定性。

事件帖子表示服务在回滚后恢复正常运行。它并未揭露底层测量。作为初始声明这是可接受的,但成熟的问责记录应保留它们以供后续审计和客户保证。

回滚也需要独立性。如果用于部署的相同控制器、凭证、网络路径和软件是逆转所必需的,故障可能会禁用其自身的修复。高爆炸半径的基础设施应保留一个最小恢复通道,无需依赖不健康组件即可激活已知良好状态。

公开数据包并未显示该风险是否在 Akamai 实现。它识别了控制问题。在一小时内恢复表明存在可行的逆转路径。持久的保证将显示路径是经过测试的,能够应对普通管理或服务平面的丢失,而不仅仅是应对留下控制访问完好的漏洞。

解析器行为改变了用户体验,但未改变根因

递归解析器位于用户和权威服务器之间。它们的缓存可以保存答案直到生存时间到期。它们的重试算法在权威服务器间选择。它们处理 SERVFAIL、超时和过期数据的方式影响故障变得可见的速度及其持续时间。

RFC 2308 定义了负面缓存行为。RFC 4697 记录了当权威服务器不可达或返回服务器故障时有害的重试模式和可能产生的负载。RFC 8767 允许解析器在无法刷新答案时在限定条件下提供过期数据。RFC 9520 于 Akamai 事件后发布,细化了包括 SERVFAIL 在内的解析故障负面缓存。[14][18][19][20]

这些机制解释了为什么用户可能经历相同的权威中断却有不同的感受。

拥有仍然有效的缓存答案的解析器可能继续引导流量。答案已过期的解析器可能需要新的权威响应并立即失败。配置为提供过期数据的解析器可能在旧答案仍然安全且策略条件满足时保留可达性。另一个可能返回 SERVFAIL。应用也以不同方式缓存,有些通过另一个解析器重试。

这种变化并未将根因从 Akamai 转移到解析器。Akamai 的声明表示其更新触发了 DNS 组件中的漏洞。解析器策略可以减轻或放大用户可见的损害;它不会在底层组件无法提供时创建有效的权威数据。

提供过期数据也有局限性。如果服务已迁移、安全响应已更改记录或证书和源站不再匹配,旧地址可能是危险的。解析器可能根本没有缓存答案。TTL 可能很短。负面和正面缓存状态不同。操作员必须在连续性和新鲜度与正确性之间平衡。RFC 8767 描述了这种平衡,而非保证透明故障转移。[14]

这产生了一个分层问责模型。

Akamai 对共享权威组件和更新管道负责。解析器操作员对符合标准、可观察的故障处理以及沟通连续性/新鲜度权衡负责。客户对 TTL 和其可控制的架构选择负责。用户没有实际责任在期望主要服务正常工作之前诊断哪个解析器或权威组件失败。

因此,证据应分离各层。权威查询成功、递归响应代码、缓存状态和应用连接成功是不同的测量。没有这种分离,状态报告可能声称 DNS 健康,因为一个解析器从缓存应答,而新的权威查询失败;或者声称权威服务仍然宕机,因为一个递归缓存保留了故障。

客户冗余必须全程独立直至源站

ThousandEyes 报告影响在 Akamai 客户间有所不同。依赖受影响 DNS 和 CDN 路径的组织可能仍然不可用,而一些多 CDN 设计保留了更多服务。其后的回顾以 Amazon 为例,该后者大多通过多 CDN 方法幸免。[2][4]

教训并非简单的"购买两个 CDN"。

第二个提供商只有在用户能够发现和访问它时才有效。权威 DNS 委派必须能够返回替代方案。DNSSEC 签署和密钥分发必须保持有效。证书必须覆盖相同名称。替代 CDN 必须到达可用且有足够容量的源站。应用状态、认证、欺诈控制和数据一致性必须通过两个路径工作。操作员必须知道何时以及如何转移流量。

RFC 8901 描述了多提供商 DNSSEC 模型以及确保验证解析器能够认证来自不同提供商的答案所需的协调。它表明多样性引入了自己的控制平面。密钥、DNSKEY 记录、DS 记录、签名算法和时间必须保持一致。不正确的多提供商部署可能造成单个提供商不会出现的故障。[16]

这种复杂性并未否定多样性。它意味着弹性必须被设计和测试,而非作为标签购买。

客户可以在几个维度上评估独立性:

  • 不同的权威提供商和服务网络;
  • 不依赖故障提供商的注册商和委派工作流;
  • 兼容的 DNSSEC 和密钥管理流程;
  • 由可控、可比较源数据生成的 CDN 配置;
  • 在两个路径上可用的证书和安全策略;
  • 不共享相同单一依赖的源站连接;
  • 充足的容量和商业授权;
  • 通过多个解析器和网络的外部监控;
  • 经过演练的故障转移和故障恢复决策过程。

组织还应知道哪些是共享的。两个提供商可能从一个自动化管道接收记录。两者可能从同一源站拉取。两者可能使用同一身份提供商进行操作员访问。一个错误的单一源更新可能传播到两个供应商并击败表面上的多样性。

客户应保留测试证据,证明备选路径在主 DNS 或 CDN 不可用时有效,而不仅仅是在两者都健康时。这包括故障注入、DNS 委派测试、缓存行为观察、证书检查和应用事务。

尽管如此,客户架构并不免除 Akamai 的责任。接受共享 DNS 组件责任的平台提供商控制着客户无法检查或修复的风险。分层责任意味着客户应避免可预防的集中,而提供商应约束共享变更的权限。这并不意味着每个客户都应构建第二个全球平台来弥补未公开的提供商漏洞。

可观测性必须连接配置、DNS 和应用状态

ThousandEyes 能够显示应用故障与 DNS 解析问题同时发生。Akamai 能够识别配置更新并逆转它。完整的事件记录需要连接这些视图。

至少有五个证据层很重要。

变更层记录请求的配置、规范化表示、差异、审查者、激活时间、分发范围和先前版本。

服务层记录哪些名称服务器实例或组件节点接受了更新、每个实例服务的版本、它们的健康状况和响应代码。

DNS 层记录权威查询成功、延迟、SERVFAIL、超时以及跨名称、记录类型、任播路径和网络的答案一致性。

解析器层记录缓存状态、过期答案行为、重试和负面缓存效应。

应用层记录返回的答案是否导致成功的 TLS 和应用事务。

如果这些层使用无关的标识符和时钟,根因分析变慢,问责减弱。一个变更 ID 应可追溯到组件版本、服务群体、探测结果和事件时间线。系统应在回滚后(当在线状态不再重现故障时)保留这种关联。

外部测量仍然至关重要。任播可能将内部探测路由得与用户不同。客户域名可能锻炼一个通用健康名称不会执行的代码路径。递归行为各异。运营商的监控应包括使用代表性解析器、网络、名称和应用事务的外部测试。

公开记录说明了这种好处。Akamai 的 15:45 更新时间和 ThousandEyes 的 15:38 观察到的故障并非一致,但一起揭示了一个值得调查的边界。是否在记录触发器之前就开始了一些传播?测量时间戳是否反映了更早的症状?时钟或发布时间精度是否不同?源数据包没有回答。一个关联的内部记录可以做到。

沟通应保留相同的层区分。"网络健康"过于宽泛。一条有用的状态消息可以说权威答案正在恢复、回滚正在传播、应用可达性正在改善,以及残留的解析器缓存可能继续显示故障。客户随后可以将其自身证据与运营商的进行比较。

Akamai 的声明很简洁,包含触发器、回滚、持续时间、非网络攻击边界和后来的范围更正。这些是强有力的初始事实。问责差距不在于公司没有表态。而在于公开记录不包含评估验证、部署遏制和持久修复所需的技术证据。

问责遵循控制、能力和证据

问责有时被简化为故障:Akamai 更改了配置,所以 Akamai 负责。这在方向上正确,但在分析上不完整。一个有用的分配识别了哪个行为者控制了哪个风险以及每个行为者应保留什么证据。

Akamai 平台和网络工程

Akamai 控制了接收更新的组件、软件和配置接口、验证、部署拓扑、监控、回滚和事件后修复。其职责与组件的覆盖范围成比例。如果一次变更可能影响许多客户站点,管道需要为该共享爆炸半径设计控制措施。

相关证据包括规范化差异、测试、金丝雀结果、部署确认、健康指标、回滚日志和回归结果。公开声明建立了高层原因和恢复,但未包括这些工件。[1]

Akamai 产品和变更所有者

产品所有者控制了如何表示更新紧急程度、客户影响和审批。他们决定变更是否为常规、异常是否可以绕过暂存以及适用哪些服务级别承诺。他们还控制客户是否接收到足够评估自身连续性计划的架构和修复信息。

此角色并非归咎于经理。它承认爆炸半径限制和证据要求既是软件决策,也是产品决策。

Akamai 客户

客户控制了提供商多样性、DNS 委派、TTL、证书、源站连接、应用可移植性和故障转移测试的一部分。其职责取决于服务关键性和实际资源。银行、航空或公共服务可能比低影响站点需要更强的独立路径。

客户不控制 Akamai 的内部更新。未能购买第二个提供商并不转移根因。它改变了客户的暴露和恢复选项。

递归解析器操作员

解析器操作员控制了重试、故障缓存、过期答案策略和监控。其实现可能改变持续时间和可见症状。他们应遵循当前标准,避免有害的重试放大,并暴露足够的遥测以区分权威故障和本地缓存状态。[14][18][19][20]

他们不能安全地发明当前的权威数据。提供过期数据是有限度的缓解措施,而非健康权威的替代品。

注册商和辅助 DNS 提供商

在客户使用它们的地方,注册商和辅助提供商控制了委派和替代服务路径。多提供商操作需要一致的记录、DNSSEC 协调、变更权限和经过测试的故障转移。[12][16]

标准和测量组织

IETF 定义了协议行为和操作指导。ThousandEyes 提供了独立测量。两者均未运营 Akamai 的组件。它们的作用是使故障机制和公开证据更易理解。

此图谱防止了两种错误。第一个是将所有责任集中到最后激活变更的人身上。第二个是责任扩散到没有行为者具有具体义务的程度。实际控制给每个义务划定了边界。

修复声明需要可重现的故障测试

Akamai 表示正在审查其软件更新流程以防止未来中断。[1]

这一承诺是合理的,但"审查了流程"不是技术成果。持久的问题是组织能否重现故障类别并展示独立控制措施现在遏制了它。

强有力的修复计划将从精确的事件模型开始:

  • 触发漏洞的最小配置;
  • 解释它的组件和版本;
  • 暴露的服务群体;
  • 可观察的 DNS 故障;
  • 回滚状态;
  • 识别它的监控信号。

下一步是负面测试。将触发类别输入预生产环境,并确认新的验证拒绝它,或者金丝雀在不影响更大集群时失败。测试应断言不仅特定输入被阻止,而且语义等效的输入和畸形变体无法绕过控制。

第三步是独立性。如果修复添加了另一个验证器,证明它使用与故障组件不同的表示、解析器或真相来源。如果添加了金丝雀,证明金丝雀接收到与生产相同的编译配置,并且在 DNS 或应用故障时自动停止升级。

第四步是故障域遏制。证明非安全更新不能在证据评估之前到达每个权威服务域。域可以按任播云、软件队列、地区、客户组或服务组件定义,但必须在操作上有意义。

第五步是降级条件下的回滚。禁用或隔离部分普通控制路径,并证明操作员仍然可以重新激活已知良好状态。从多个外部网络确认收敛。

第六步是客户可见的结果。发布足够的信息,使客户能够将修复映射到其依赖关系。这可以包括故障类别、遏制机制、测试范围和日期,而不披露可利用的细节。

第七步是复发监控。跟踪被拒绝的配置、金丝雀中止、回滚测试和与配置相关的 DNS 错误。一次通过然后悄然衰退的修复并非持久。

当前的 Akamai 文档描述了变更列表、差异、版本、传播状态和重新激活。这些是证据的有用构建块。文章不能声称它们是因 2021 年事件添加的或它们适用于同一组件。但可以说等效工件是评估修复声明的标准。[7][8]

公开记录无法证明什么

来源集足够强大以建立真实的网络基础设施案例,也足够弱以要求克制。

它无法证明确切的配置值。无法识别漏洞。无法显示更新在激活时是全局的,还是通过传播变得广泛。无法说明受影响客户的数量。无法确定哪些任播云或名称服务器进程失败。无法显示 Akamai 系统论文中的输入延迟名称服务器是否相关。无法识别审查者、审批者或个体操作员。无法量化损失或分配合同损害。

记录也无法证明每个使用多个提供商的客户仍然可用,或每个单一提供商客户都失败。ThousandEyes 从其测量角度提供了示例和聚合观察,而非普遍普查。[2][4]

RFC 建立了协议和操作上下文。它们并不创造 Akamai 违反标准的事实调查结果。RFC 9199 和 RFC 9520 在事件之后,不得被呈现为支配 2021 年更新的义务。[15][20]

这些事实的缺失并不消除问责。它定义了支持性结论和猜测之间的边界。支持性结论是共享配置更新在 DNS 组件中触发了漏洞,导致了重大可达性故障,并需要回滚。证据义务是展示配置权限现在如何受限以及恢复如何验证。

一个可复用的可达性问责测试

该事件支持一个针对任何运营权威 DNS、CDN 引流、流量管理或其他共享网络控制平面的提供商的实用测试。

1. 命名不可或缺的控制面。
识别用户是否依赖于权威 DNS、BGP、任播、路由策略、证书、源站选择或其他机制。不要将该事件称为通用中断。

2. 区分预期变更与有效权限。
记录变更的预期目的,并计算它可能实际影响哪些服务、用户和故障域。

3. 独立验证含义。
使用比较规范化行为、授权范围和受保护基础设施的控制措施,而非同一解析器假设的两个副本。

4. 跨实际故障域分阶段部署。
金丝雀测试确切的编译输入,并在 DNS、路由或应用证据下降时自动停止传播。

5. 保留独立的已知良好路径。
保留一个不立即消费新输入并能恢复先前状态的服务或管理路径。

6. 从外部测量。
从多个网络探测权威答案、解析器结果和应用事务。任播健康不能从单个位置推断。

7. 证明回滚收敛。
显示哪些接收者回退了、哪些答案返回了以及哪些应用恢复了。控制平面成功消息不够。

8. 端到端测试客户备选方案。
提供商多样性必须包括委派、DNSSEC、证书、源站、容量、状态和操作权限。

9. 发布更正的范围。
当调查缩小或改变了初始声明时,突出保留更正并识别哪些结论发生了变化。

10. 将修复与重现的故障绑定。
证明原始类别和语义变体被拒绝、遏制或在没有广泛用户影响的情况下恢复。

此测试分配责任,而不假装每个行为者拥有同等权力。提供商对共享平台承担主要责任。客户和解析器对其实际拥有的控制措施承担有限义务。公开证据允许这些义务被评估。

结论

Akamai 在 2021 年 7 月 22 日迅速恢复了服务。其公开声明识别了一个配置更新、一个触发的漏洞、回滚、长达一小时持续时间以及非网络攻击边界。次日更正将受影响的系统缩小到 Secure Edge CDN 的 DNS 组件。ThousandEyes 提供了独立证据,证明中断表现为众多站点和用户的 DNS 和应用可达性故障。[1][2]

更深的教训并非分布式 DNS 尽管有许多服务器却失败了。而是服务分发和配置独立性是不同属性。任播可以将服务扩展到不同网络和大陆,而共享控制输入保留了共同故障模式。解析器缓存和客户多样性可以软化影响,但无法替代安全的权威更新管道。

风险跟随变更可以行使的权限。问责跟随谁能够约束该权限、停止它、观察其后果并证明修复。对于位于应用连接之前的平台,这些是网络基础设施职责,而不仅仅是软件流程偏好。

来源

  1. https://www.akamai.com/blog/news/akamai-summarizes-service-disruption-resolved
  2. https://www.thousandeyes.com/blog/akamai-edge-dns-outage-analysis
  3. https://www.thousandeyes.com/blog/internet-report-episode-43
  4. https://www.thousandeyes.com/blog/seven-outages-shook-up-2021
  5. https://techdocs.akamai.com/edge-dns/docs/welcome-edge-dns
  6. https://techdocs.akamai.com/edge-dns/docs/features
  7. https://techdocs.akamai.com/edge-dns/docs/config-prim-zones
  8. https://techdocs.akamai.com/edge-dns/reference/api-summary
  9. https://www.akamai.com/site/en/documents/research-paper/akamai-dns-providing-authoritative-answers-to-the-worlds-queries.pdf
  10. https://www.rfc-editor.org/rfc/rfc1034.html
  11. https://www.rfc-editor.org/rfc/rfc1035.html
  12. https://www.rfc-editor.org/rfc/rfc2182.html
  13. https://www.rfc-editor.org/rfc/rfc4786.html
  14. https://www.rfc-editor.org/rfc/rfc8767.html
  15. https://www.rfc-editor.org/rfc/rfc9199.html
  16. https://www.rfc-editor.org/rfc/rfc8901.html
  17. https://www.rfc-editor.org/rfc/rfc8499.html
  18. https://www.rfc-editor.org/rfc/rfc4697.html
  19. https://www.rfc-editor.org/rfc/rfc2308.html
  20. https://www.rfc-editor.org/rfc/rfc9520.html