Résumé

  • Akamai a déclaré qu'à 15h45 UTC le 22 juillet 2021, une mise à jour de configuration logicielle a déclenché un bug dans un composant DNS de son réseau de diffusion de contenu Edge sécurisé. Certains sites web clients sont devenus indisponibles pendant jusqu'à une heure. Akamai a annulé la mise à jour, a indiqué que le service était revenu à la normale et a déclaré que l'incident n'était pas une cyberattaque. [1]
  • Akamai a corrigé la portée de son libellé initial le lendemain. L'entreprise avait d'abord décrit un impact sur son service DNS, mais une enquête plus approfondie a réduit le système affecté à un composant DNS du CDN Edge sécurisé. Cette correction est importante: les preuves publiques n'établissent pas que chaque service DNS faisant autorité, chaque zone ou chaque client d'Akamai a échoué. [1]
  • ThousandEyes a observé des échecs DNS et d'application à partir d'environ 15h38 UTC et une récupération large vers 16h45 UTC. Ses tests ont constaté des timeouts et des réponses SERVFAIL pour les domaines affectés. La différence de sept minutes entre le début observé et l'heure de mise à jour déclarée par Akamai reflète différentes limites de preuve, pas un horodatage qui devrait être silencieusement forcé dans un seul récit. [2][3]
  • L'incident a montré pourquoi l'accessibilité du réseau dépend de plus que des liaisons fonctionnelles et des serveurs accessibles. Un utilisateur ne peut pas établir la connexion applicative prévue si le plan de contrôle de nommage ne peut pas renvoyer une adresse utilisable, même si les paquets pourraient autrement voyager jusqu'à la périphérie du CDN. [2][10][11]
  • La documentation actuelle d'Akamai Edge DNS décrit l'anycast global, les zones primaires et secondaires, les listes de modifications, les différences de version, l'état de propagation et la réactivation des versions antérieures. Ces contrôles identifient les preuves qu'une plateforme mature peut produire, mais la documentation produit actuelle ne prouve pas quel chemin interne a traité la mise à jour de 2021. [5][6][7][8]
  • Le document sur les systèmes pré-incident d'Akamai décrit 24 clouds anycast et des serveurs de noms à entrée différée destinés à préserver les données plus anciennes lors de certaines défaillances induites par des entrées. C'est un contexte architectural, pas un rapport d'incident post-mortem. Le paquet public n'établit pas si le composant affecté utilisait cette conception ou pourquoi il n'a pas contenu cet événement. [9]
  • La responsabilité suit le contrôle pratique. Akamai contrôlait le composant partagé, le pipeline de mise à jour, la validation, le déploiement, la surveillance, le rollback et les preuves de réparation. Les clients contrôlaient certaines parties de la diversité DNS et CDN, des certificats, des origines et des tests de continuité. Les résolveurs récursifs contrôlaient la mise en cache et la politique de serve-stale. Ces responsabilités sont superposées, mais elles ne sont pas interchangeables.

La défaillance s'est produite avant la connexion applicative

Une panne d'Internet est souvent décrite comme si le réseau était un commutateur avec deux états: en service ou hors service. L'incident Akamai est utile car il contredit cette image.

Pour une requête web ordinaire, l'utilisateur commence par un nom, pas une adresse IP. Un résolveur récursif suit les informations en cache et les renvois jusqu'à obtenir une réponse faisant autorité pour le domaine. L'adresse renvoyée peut alors guider une connexion vers un edge CDN, un équilibreur de charge ou une origine. Si l'étape faisant autorité échoue, l'utilisateur peut ne jamais tenter la connexion applicative. Les routeurs peuvent transporter des paquets. Les serveurs peuvent être alimentés. La fibre peut être intacte.

Le service est toujours inaccessible car le plan de contrôle de nommage n'a pas produit la prochaine destination utilisable. [10][11][17]

ThousandEyes a observé cette séparation lors de l'incident de juillet 2021. Il a rapporté que la connectivité à l'infrastructure edge CDN d'Akamai pouvait rester disponible tandis que la résolution DNS pour les domaines affectés échouait. Les tests ont reçu des réponses SERVFAIL ou aucune réponse des serveurs faisant autorité. Les navigateurs et applications ont ensuite présenté des échecs qui ressemblaient à des pannes générales de sites web, même si la rupture mesurée s'est produite plus tôt dans la chaîne de dépendance. [2]

Cette distinction est plus qu'un vocabulaire technique. Elle identifie la surface de contrôle.

Si une coupure de fibre isole une région, les contrôles responsables incluent la diversité physique, la restauration et le reroutage. Si BGP exporte un chemin dangereux, les contrôles incluent la politique de routage, la validation et le confinement. Si le DNS faisant autorité ne peut pas répondre parce qu'une mise à jour de configuration partagée a déclenché un bug, les contrôles incluent la représentation de la configuration, la couverture des tests, la portée du déploiement, la séparation des domaines de défaillance, l'autorité de rollback, l'interaction avec les résolveurs et la conception de la dépendance client.

Appeler chaque cas « Internet en panne » cache ces différences. Cela laisse aussi la responsabilité dériver vers l'entreprise qui apparaît dans la page d'erreur de l'utilisateur. La meilleure question est: quel système a échoué à fournir les informations requises pour l'étape réseau suivante, et qui avait la capacité pratique de prévenir, limiter, détecter et inverser cet échec?

Pour cet incident, la propre déclaration d'Akamai fournit le déclencheur de haut niveau. L'entreprise a déclaré qu'une mise à jour de configuration logicielle a déclenché un bug. Elle n'a pas publié la configuration exacte, le chemin de code, la population affectée ou la topologie interne. Cela signifie que l'article peut analyser l'autorité de configuration et les preuves d'accessibilité. Il ne peut pas identifier un détail d'implémentation privé, blâmer un ingénieur individuel ou prétendre qu'une fonctionnalité Edge DNS actuelle nommée a échoué en 2021. [1]

La cible est donc étroite: le risque et la responsabilité sur l'infrastructure réseau. L'incident n'est pas important simplement parce qu'un bug logiciel existait. Il est important parce que le bug se trouvait derrière un canal de configuration avec le pouvoir d'affecter un composant DNS partagé et, à travers ce composant, l'accessibilité de nombreux sites clients.

La chronologie nécessite deux horloges et une correction de portée

ThousandEyes place le début des problèmes observés extérieurement à environ 15h38 UTC le 22 juillet. Akamai dit qu'à 15h45 UTC une mise à jour de configuration logicielle a déclenché le bug. Ces heures se réfèrent à différentes formes de connaissance.

Une plateforme de mesure externe enregistre quand les tests commencent à échouer depuis ses points d'observation. Un opérateur enregistre quand un changement a eu lieu, quand un seuil interne s'est déclenché ou quand un incident a été déclaré. La première requête utilisateur ayant échoué peut précéder une mise à jour de statut publique. Une configuration peut se propager dans le temps. Les horloges peuvent différer. La méthode responsable est de mentionner les deux horodatages et leur provenance, pas de choisir celui qui fait le récit le plus propre. [1][2][3]

ThousandEyes a observé une augmentation des pannes web et applicatives parmi les services utilisant Akamai. Ses tests DNS ont trouvé des échecs de résolution pour les domaines hébergés dans l'environnement CDN. Certains utilisateurs ont reçu SERVFAIL; d'autres ont eu des timeouts. Les effets variaient selon les clients et les zones géographiques. La société de mesure place une restauration large autour de 16h45 UTC. Akamai dit que la perturbation a duré jusqu'à une heure et que le service a repris après le rollback. Ces comptes sont compatibles au niveau que les preuves publiques soutiennent. [1][2]

La déclaration d'Akamai contient une autre chronologie essentielle: la déclaration elle-même a changé.

L'entreprise a ajouté une correction le 23 juillet. Le post initial avait décrit un impact sur « le service DNS d'Akamai ». Des investigations supplémentaires, a dit Akamai, ont montré que cet impact était isolé à un composant DNS de son réseau de diffusion de contenu Edge sécurisé. [1]

Ce n'est pas une trivia éditoriale. La portée fait partie des preuves de cause racine. « Le DNS d'Akamai a échoué » peut impliquer que chaque produit DNS faisant autorité, chaque zone, chaque chemin de service ou chaque client partageait une seule faute. La correction d'Akamai rejette cette implication. Des observateurs indépendants ont encore raisonnablement utilisé des phrases comme « panne DNS Edge d'Akamai » pour décrire ce que leurs tests ont vu, mais une reconstruction responsable doit distinguer l'étiquette de service d'un observateur de la limite de composant ultérieure de l'opérateur.

La correction de portée illustre aussi pourquoi le langage précoce d'incident ne devrait pas se durcir en fait permanent. Les opérateurs communiquent avant que la carte complète des composants soit connue. Les journalistes et clients répètent la première explication. Les moteurs de recherche la préservent. Une correction ultérieure peut être moins visible que le titre original. Une bonne pratique de responsabilité exige un enregistrement versionné: ce qui a été dit, quand cela a changé, pourquoi cela a changé et quelles conclusions le changement affecte.

Dans ce cas, la correction réduit la plateforme affectée mais n'efface pas l'impact sur l'accessibilité. Un composant peut être plus étroit qu'un produit et se trouver quand même sur un chemin utilisé par de nombreux clients. Les questions pertinentes deviennent plus précises:

  • Quel composant DNS du CDN Edge sécurisé a reçu la mise à jour?
  • Quelles propriétés client ou chemins de nommage en dépendaient?
  • Le composant partageait-il l'état de configuration entre des emplacements de service indépendants?
  • Quels domaines de défaillance sont restés disponibles?
  • Comment le rollback s'est-il propagé?
  • Quelles preuves ont établi que les réponses normales étaient revenues?

L'ensemble de sources publiques ne répond pas aux six. Il établit que le rollback a fonctionné assez rapidement pour restaurer le service normal et que l'entreprise prévoyait de revoir son processus de mise à jour. Les questions restantes définissent le vide de preuves, pas une permission de le combler avec des hypothèses. [1]

La diversité DNS n'est pas la même que la diversité de configuration

L'architecture DNS attend plus d'un serveur faisant autorité pour une zone. La RFC 2182 explique la raison directement: les informations de zone doivent rester disponibles quand un serveur est indisponible ou inaccessible. Les serveurs secondaires doivent être placés en tenant compte des modes de défaillance probables, y compris les pannes réseau et électriques. [12]

Les grands services commerciaux ajoutent une autre forme de distribution. La documentation Akamai Edge DNS décrit l'anycast IP, dans lequel une adresse de service logique est annoncée depuis plusieurs emplacements physiques. La requête d'un résolveur est routée vers une instance disponible selon la topologie et la politique réseau. Akamai décrit des milliers de serveurs de noms à travers plusieurs réseaux et continents. [5]

La RFC 4786 explique pourquoi l'anycast est attrayant pour le DNS faisant autorité. Il distribue le service, améliore l'accessibilité et évite que les renvois DNS ne grandissent avec chaque emplacement physique. Il prévient aussi que la surveillance devient plus compliquée: la disponibilité dépend de l'endroit où se trouve le client, et la population de clients atteignant un nœud particulier change avec le routage. [13]

La diversité physique et de routage sont précieuses. Elles ne fournissent pas automatiquement une diversité de configuration.

Si de nombreux emplacements consomment la même entrée dangereuse, chaque emplacement peut être physiquement sain et quand même renvoyer des réponses inutilisables ou échouer de la même manière. Ajouter plus de sites anycast peut augmenter la diversité de service tout en préservant une dépendance de plan de contrôle. Une plateforme peut survivre à la perte d'un centre de données mais rester vulnérable à un bug de configuration global. Les deux classes de défaillance nécessitent des contrôles différents.

C'est pourquoi compter les serveurs est une faible affirmation de résilience. Un opérateur doit identifier quels éléments sont indépendants:

  • alimentation et installations;
  • chemins réseau physiques;
  • annonces de routage;
  • exécutables logiciels;
  • entrées de configuration;
  • systèmes de validation;
  • contrôleurs de déploiement;
  • identifiants de gestion;
  • surveillance;
  • canaux de rollback;
  • approbation organisationnelle.

Deux serveurs de noms dans différents pays peuvent partager la même source de configuration. Deux fournisseurs DNS peuvent partager le même registraire ou primaire caché. Deux chemins CDN peuvent dépendre de la même automatisation de certificat ou origine. Deux étapes d'approbation peuvent utiliser le même analyseur syntaxique et donc accepter la même signification dangereuse.

La déclaration de cause publique de l'incident pointe vers ce problème de contrôle partagé. Akamai n'a pas dit qu'un site de service individuel a échoué. Il a dit qu'une mise à jour de configuration logicielle a déclenché un bug dans un composant partagé. Le service a récupéré après le rollback. Cette séquence fait du canal de mise à jour, pas du nombre de serveurs, l'objet central de responsabilité. [1]

Un modèle de contrôle adéquat traiterait la distribution de configuration comme un protocole réseau en soi. Il a des producteurs, des validateurs, des versions, des destinataires, un temps de propagation, des accusés de réception et un rollback. Il devrait être testé pour une défaillance partielle, un état obsolète, des versions incompatibles et des valeurs globales dangereuses. Une plateforme mature devrait savoir quels destinataires ont accepté un changement, lesquels l'ont rejeté, quelle version ils servent et ce que les utilisateurs observent depuis chaque domaine de défaillance.

Les affirmations de redondance devraient donc être exprimées comme des hypothèses de défaillance, pas des inventaires. « Nous avons des milliers de serveurs de noms » répond à une question de capacité et d'emplacement. « Une nouvelle entrée ne peut pas affecter chaque domaine de défaillance de service avant qu'un canari indépendant ne prouve qu'elle est sûre » répond à une question de rayon d'explosion de configuration. L'événement de juillet 2021 fait de la seconde affirmation celle qui a besoin de preuves.

Une mise à jour de configuration est un exercice délégué d'autorité réseau

L'expression « mise à jour de configuration logicielle » semble moins conséquente qu'une version logicielle. La configuration est souvent traitée comme des données: plus facile à changer, moins risquée que du code et adaptée à un déploiement rapide. Dans un réseau distribué, cette distinction peut être trompeuse.

La configuration sélectionne le comportement. Elle peut activer un chemin de code, modifier le routage, changer les données d'enregistrement, élargir une correspondance, supprimer une limite de sécurité ou diriger le trafic vers un service différent. Une configuration avec une portée globale peut exercer plus d'autorité opérationnelle qu'un changement de code confiné à un seul serveur canari.

La bonne unité de risque n'est donc pas le type de fichier. C'est l'autorité effective.

Un pipeline de changement devrait répondre à quatre questions avant la distribution.

Premièrement,que signifie la mise à jour après analyse et normalisation?La validité syntaxique n'est pas la sécurité sémantique. Une valeur peut être bien formée et quand même sélectionner un état impossible, dangereux ou globalement incohérent.

Deuxièmement,quels utilisateurs, zones, services et emplacements peut-elle affecter?La portée devrait être calculée à partir du résultat compilé, pas déduite du nom de la demande de changement.

Troisièmement,quelle condition indépendante peut l'arrêter?Un validateur devrait échouer différemment du composant protégé. Si les deux utilisent le même schéma, analyseur ou modèle généré, un défaut partagé peut vaincre les deux.

Quatrièmement,comment l'état précédent peut-il être restauré si le chemin de contrôle normal est endommagé?Le rollback a besoin d'une version connue comme bonne, d'une autorité de distribution, d'un plan de gestion accessible et de preuves que les destinataires sont réellement revenus à l'état antérieur.

La documentation actuelle d'Akamai Edge DNS fournit des exemples d'artefacts de contrôle utiles. Les modifications de zone primaire sont accumulées dans une liste de modifications. Un opérateur peut examiner les ajouts et suppressions, activer la zone ou rejeter les modifications. L'API liste les versions de zone, montre les différences, rapporte l'état de propagation et peut réactiver une version antérieure. [7][8]

Ces documents sont des références produit actuelles. La déclaration publique d'incident ne dit pas que le composant CDN Edge sécurisé de 2021 utilisait ce flux de travail exact. Il serait inexact de prétendre qu'un contrôle de liste de modifications documenté a échoué. La documentation est quand même précieuse car elle montre quelles preuves peuvent exister dans une plateforme DNS contrôlée: une version, un diff, une décision de réviseur, un événement d'activation, un enregistrement de propagation et une action de réactivation.

Pour la responsabilité publique, les preuves post-incident les plus utiles cartographieraient la mise à jour réelle de 2021 en artefacts équivalents:

  • le but prévu et la portée approuvée;
  • la configuration normalisée;
  • les tests exécutés avant l'activation;
  • la première population canari;
  • la séquence et le pourcentage de destinataires;
  • les alertes qui se sont déclenchées;
  • la décision et l'autorité d'arrêter la propagation;
  • la version connue comme bonne sélectionnée;
  • les accusés de réception des destinataires après rollback;
  • les tests externes confirmant les réponses DNS et l'accessibilité applicative.

Publier chaque valeur de configuration privée pourrait créer des risques de sécurité ou clients. La responsabilité ne l'exige pas. Elle exige suffisamment de preuves structurées pour établir que l'entreprise comprend la classe de défaillance, que la réparation l'adresse, et que la même entrée ne peut pas à nouveau acquérir la même portée non contrôlée.

Le document d'architecture d'Akamai éclaire les questions, pas le verdict

Avant l'incident, des chercheurs d'Akamai ont publié un document décrivant comment le système DNS de l'entreprise répondait à un grand volume de requêtes faisant autorité. Le document discute de 24 clouds anycast, de la surveillance du système et des mécanismes pour gérer les entrées obsolètes ou dangereuses. Une conception plaçait des serveurs de noms à entrée différée dans chaque cloud. Ces serveurs recevaient les entrées avec un délai artificiel et pouvaient continuer à répondre avec des données plus anciennes pendant que les opérateurs répondaient à une défaillance induite par une entrée. [9]

Cette architecture est directement pertinente pour la responsabilité de configuration car elle décrit une séparation délibérée entre l'entrée fraîche et le service continu. Elle démontre que les ingénieurs d'Akamai avaient envisagé la défaillance induite par entrée comme une classe. Elle fournit aussi des termes concrets pour demander ce qui s'est passé en 2021.

Elle ne fournit pas la réponse.

Le post d'incident de l'opérateur identifie un composant DNS du CDN Edge sécurisé. Le document décrit l'architecture DNS d'Akamai au niveau système. Les sources publiques dans ce paquet ne prouvent pas que le composant affecté utilisait la conception à entrée différée du document, que la mise à jour déclencheuse était l'une des entrées différées, que la conception était activée pour le chemin client affecté, ou qu'elle a échoué.

Transformer le document en accusation commettrait une erreur analytique courante: traiter une architecture publiée comme un inventaire complet de chaque chemin de production. Les grands réseaux contiennent des générations de systèmes, des composants spécifiques aux produits, des migrations, des exceptions et des limites de contrôle. Un document peut décrire avec précision un mécanisme sans garantir que chaque service l'utilise.

L'utilisation défendable est contrefactuelle et probante.

Si un chemin différé indépendant existait pour le composant affecté, quelle entrée a-t-il servie pendant l'incident? S'il n'existait pas, quelle propriété rendait le composant inadapté? Si la mise à jour affectait le comportement du code plutôt que les données de réponse, une configuration plus ancienne pouvait-elle quand même invoquer le même bug? Si la solution de repli nécessitait que les opérateurs l'activent, la surveillance a-t-elle identifié la condition à temps? Si les utilisateurs atteignaient différents clouds anycast, l'état de repli est-il resté cohérent?

Ces questions importent car le rollback seul ne donne qu'une seule preuve: le service immédiat a récupéré lorsque la nouvelle configuration a été retirée. Il ne révèle pas si un chemin indépendant a contenu une partie de la panne, pourquoi la validation originale a manqué le bug, ou si une autre configuration dangereuse produirait la même défaillance partagée.

Le document démontre aussi pourquoi les preuves devraient être liées aux classes de défaillance. Un opérateur peut dire qu'il a des serveurs de noms redondants, l'anycast et l'entrée différée. Un client a besoin de savoir quelles défaillances chaque mécanisme couvre. La perte d'installation, l'isolement BGP, les données obsolètes, les données corrompues, les bugs logiciels et le compromis du plan de contrôle sont différents. Un mécanisme conçu pour l'un peut être sans rapport avec un autre.

Le dossier de responsabilité de juillet 2021 devrait donc éviter les deux extrêmes. Il ne devrait pas ignorer l'ingénierie de résilience publiée d'Akamai, et il ne devrait pas supposer que cette ingénierie garantissait ce composant. L'écart entre une sauvegarde documentée et un chemin d'événement non divulgué est lui-même une demande de preuves précises.

La vitesse de rollback compte, mais les preuves de rollback comptent davantage

Le rollback d'Akamai a rétabli le service en environ une heure. C'est opérationnellement significatif. Quand un composant partagé affecte l'accessibilité client, un retour rapide à un état connu comme bon limite les dommages et réduit la tentation de déboguer indéfiniment en production. [1]

Le rollback n'est pas une action. C'est une chaîne d'affirmations.

La première affirmation est que l'opérateur a identifié la nouvelle mise à jour comme la cause probable. La deuxième est qu'une version antérieure était disponible et sûre. La troisième est que la commande de rollback a atteint les destinataires affectés. La quatrième est que ces destinataires l'ont acceptée. La cinquième est que les réponses faisant autorité ont récupéré. La sixième est que les applications sont devenues accessibles depuis les réseaux externes. Chaque affirmation a ses propres preuves.

Une interface de contrôle de version peut prouver quel objet a été sélectionné. La télémétrie de distribution peut prouver quelles instances l'ont accusé réception. Les sondes DNS peuvent prouver que les réponses sont revenues de points d'observation sélectionnés. Les tests applicatifs peuvent prouver que les réponses ont conduit à des connexions fonctionnelles. Les rapports clients peuvent identifier les chemins résiduels que la surveillance interne a manqués.

Cette preuve en couches est importante dans les systèmes anycast. Un test réussi depuis un emplacement peut atteindre une instance anycast tandis que les utilisateurs ailleurs en atteignent une autre. L'avertissement de surveillance de la RFC 4786 s'applique: un service peut sembler sain ou malsain selon le chemin de routage de l'observateur. [13]

Un opérateur devrait donc définir l'achèvement du rollback avant un incident:

  • état de contrôle rétabli;
  • destinataires de configuration convergés;
  • succès des réponses faisant autorité restauré à travers les domaines de défaillance;
  • codes d'erreur et timeouts revenus à la ligne de base;
  • accessibilité applicative restaurée pour des chemins clients représentatifs;
  • communication de statut mise à jour avec l'incertitude restante.

Le post d'incident dit que les services ont repris leurs opérations normales après le rollback. Il n'expose pas les mesures sous-jacentes. C'est acceptable comme déclaration initiale, mais un dossier de responsabilité mature devrait les conserver pour un audit ultérieur et l'assurance client.

Le rollback a aussi besoin d'indépendance. Si le même contrôleur, identifiants, chemin réseau et logiciel utilisés pour le déploiement sont nécessaires pour l'inversion, une défaillance peut désactiver sa propre réparation. Une infrastructure à rayon d'explosion élevé devrait préserver un canal de récupération minimal qui peut activer un état connu comme bon sans dépendre du composant malsain.

Le paquet public ne montre pas si ce risque s'est matérialisé chez Akamai. Il identifie la question de contrôle. Une récupération en une heure suggère qu'un chemin d'inversion viable existait. Une assurance durable montrerait que le chemin est testé contre la perte du plan de gestion ou de service ordinaire, pas seulement contre un bug qui laisse l'accès de contrôle intact.

Le comportement des résolveurs a modifié l'expérience utilisateur mais pas la cause racine

Les résolveurs récursifs se situent entre les utilisateurs et les serveurs faisant autorité. Leurs caches peuvent préserver les réponses jusqu'à l'expiration d'un temps de vie. Leurs algorithmes de nouvelle tentative choisissent parmi les serveurs faisant autorité. Leur gestion de SERVFAIL, des timeouts et des données obsolètes affecte la rapidité avec laquelle une défaillance devient visible et combien de temps elle persiste.

La RFC 2308 définit le comportement de mise en cache négative. La RFC 4697 documente les modèles de nouvelle tentative nocifs et la charge qui peut résulter lorsque les serveurs faisant autorité sont inaccessibles ou renvoient une erreur serveur. La RFC 8767 permet à un résolveur de servir des données obsolètes dans des conditions limitées lorsqu'il ne peut pas rafraîchir une réponse. La RFC 9520, publiée après l'incident Akamai, affine la mise en cache négative pour les échecs de résolution incluant SERVFAIL. [14][18][19][20]

Ces mécanismes expliquent pourquoi les utilisateurs peuvent vivre la même perturbation de l'autorité différemment.

Un résolveur avec une réponse en cache encore valide peut continuer à diriger le trafic. Un résolveur dont la réponse a expiré peut avoir besoin d'une réponse fraîche de l'autorité et échouer immédiatement. Un résolveur configuré pour servir des données obsolètes peut préserver l'accessibilité si l'ancienne réponse reste sûre et les conditions de politique sont remplies. Un autre peut renvoyer SERVFAIL. Les applications mettent aussi en cache différemment, et certaines réessayent via un autre résolveur.

Cette variation ne déplace pas la cause racine d'Akamai vers les résolveurs. La déclaration d'Akamai dit que sa mise à jour a déclenché le bug dans le composant DNS. La politique de résolveur peut atténuer ou amplifier le préjudice visible par l'utilisateur; elle ne crée pas de données faisant autorité valides lorsque le composant sous-jacent ne peut pas les fournir.

Serve-stale a aussi des limites. Une ancienne adresse peut être dangereuse si le service a changé, une réponse de sécurité a modifié l'enregistrement ou le certificat et l'origine ne correspondent plus. Un résolveur peut ne pas avoir la réponse en cache du tout. Les TTL peuvent être courts. Les états de cache négatif et positif diffèrent. Les opérateurs doivent équilibrer continuité et fraîcheur/correctitude. La RFC 8767 décrit cet équilibre plutôt que de garantir un basculement transparent. [14]

Cela produit un modèle de responsabilité en couches.

Akamai porte la responsabilité du composant faisant autorité partagé et du pipeline de mise à jour. Les opérateurs de résolveurs portent la responsabilité d'une gestion des défaillances conforme aux normes, observable, et de la communication du compromis continuité/fraîcheur. Les clients portent la responsabilité des choix de TTL et d'architecture qu'ils peuvent contrôler. Les utilisateurs n'ont pas l'obligation pratique de diagnostiquer quel résolveur ou composant faisant autorité a échoué avant de s'attendre à ce qu'un service majeur fonctionne.

Les preuves devraient donc séparer les couches. Le succès des requêtes faisant autorité, les codes de réponse récursive, l'état du cache et le succès de la connexion applicative sont des mesures distinctes. Sans cette séparation, un rapport de statut peut prétendre que le DNS est sain parce qu'un résolveur répond depuis le cache alors que les requêtes faisant autorité fraîches échouent, ou prétendre que le service faisant autorité est encore en panne parce qu'un cache récursif conserve un échec.

La redondance client doit être indépendante jusqu'à l'origine

ThousandEyes a rapporté que l'impact variait parmi les clients d'Akamai. Les organisations dépendant du chemin DNS et CDN affecté pouvaient rester indisponibles, tandis que certaines conceptions multi-CDN conservaient plus de service. Sa revue ultérieure cite Amazon comme exemple qui a été largement épargné par une approche multi-CDN. [2][4]

La leçon n'est pas simplement « achetez deux CDN ».

Un deuxième fournisseur n'est utile que si les utilisateurs peuvent le découvrir et l'atteindre. La délégation DNS faisant autorité doit pouvoir renvoyer une alternative. La signature DNSSEC et la distribution des clés doivent rester valides. Les certificats doivent couvrir les mêmes noms. Le CDN alternatif doit atteindre une origine disponible et avoir suffisamment de capacité. L'état applicatif, l'authentification, les contrôles antifraude et la cohérence des données doivent fonctionner à travers les deux chemins. Les opérateurs doivent savoir quand et comment déplacer le trafic.

La RFC 8901 décrit les modèles DNSSEC multi-fournisseurs et la coordination nécessaire pour garantir que les résolveurs validateurs peuvent authentifier les réponses de différents fournisseurs. Elle montre que la diversité introduit son propre plan de contrôle. Les clés, les enregistrements DNSKEY, les enregistrements DS, les algorithmes de signature et le timing doivent rester cohérents. Un déploiement multi-fournisseur incorrect peut créer des défaillances qu'un seul fournisseur n'aurait pas. [16]

Cette complexité n'invalide pas la diversité. Cela signifie que la résilience doit être conçue et testée, pas achetée comme une étiquette.

Un client peut évaluer l'indépendance selon plusieurs dimensions:

  • différents fournisseurs faisant autorité et réseaux de service;
  • un registraire et un flux de délégation qui ne dépendent pas du fournisseur défaillant;
  • des processus DNSSEC et de gestion de clés compatibles;
  • des configurations CDN générées à partir de données sources contrôlées et comparables;
  • des certificats et une politique de sécurité disponibles sur les deux chemins;
  • une connectivité d'origine qui ne partage pas la même dépendance unique;
  • une capacité suffisante et une autorisation commerciale;
  • une surveillance externe via plusieurs résolveurs et réseaux;
  • un processus de décision répété pour le basculement et le retour arrière.

L'organisation devrait aussi savoir ce qui reste partagé. Les deux fournisseurs peuvent recevoir des enregistrements d'un même pipeline d'automatisation. Les deux peuvent tirer de la même origine. Les deux peuvent utiliser un même fournisseur d'identité pour l'accès des opérateurs. Une seule mise à jour source erronée peut se propager à deux fournisseurs et vaincre la diversité apparente.

Les clients devraient conserver des preuves de test qu'un chemin alternatif fonctionne quand le DNS ou CDN principal est indisponible, pas seulement quand les deux sont sains. Cela inclut l'injection de défaillances, les tests de délégation DNS, l'observation du comportement du cache, les vérifications de certificats et les transactions applicatives.

Néanmoins, l'architecture client ne décharge pas Akamai. Un fournisseur de plateforme qui accepte la responsabilité d'un composant DNS partagé contrôle un risque que les clients ne peuvent pas inspecter ou réparer. La responsabilité en couches signifie que les clients devraient éviter la concentration évitable tandis que les fournisseurs devraient contraindre l'autorité des changements partagés. Cela ne signifie pas que chaque client est censé construire une deuxième plateforme mondiale pour compenser un bug non divulgué du fournisseur.

L'observabilité doit connecter la configuration, le DNS et l'état applicatif

ThousandEyes a pu montrer que les échecs applicatifs coïncidaient avec des problèmes de résolution DNS. Akamai a pu identifier une mise à jour de configuration et l'inverser. Un dossier d'incident complet doit connecter ces vues.

Au moins cinq couches de preuve importent.

Lacouche de changementenregistre la configuration demandée, la représentation normalisée, le diff, le réviseur, le moment d'activation, la portée de distribution et la version précédente.

Lacouche de serviceenregistre quelles instances de serveur de noms ou nœuds de composant ont accepté la mise à jour, quelle version chacun servait, leur santé et leurs codes de réponse.

Lacouche DNSenregistre le succès des requêtes faisant autorité, la latence, SERVFAIL, le timeout et la cohérence des réponses à travers les noms, types d'enregistrement, chemins anycast et réseaux.

Lacouche de résolveurenregistre l'état du cache, le comportement de réponse obsolète, les nouvelles tentatives et les effets de mise en cache négative.

Lacouche applicativeenregistre si les réponses renvoyées ont conduit à des transactions TLS et applicatives réussies.

Si ces couches utilisent des identifiants et des horloges sans relation, l'analyse de cause racine devient plus lente et la responsabilité plus faible. Un ID de changement devrait être traçable jusqu'à une version de composant, une population de service, un résultat de sonde et une chronologie d'incident. Le système devrait préserver cette corrélation même après rollback, lorsque l'état en direct ne reproduit plus la défaillance.

La mesure externe reste essentielle. L'anycast peut router les sondes internes différemment des utilisateurs. Les domaines clients peuvent exercer des chemins de code qu'un nom de santé générique ne fait pas. Le comportement récursif varie. La surveillance d'un opérateur devrait inclure des tests de l'extérieur utilisant des résolveurs, réseaux, noms et transactions applicatives représentatifs.

Le dossier public illustre le bénéfice. L'heure de mise à jour d'Akamai à 15h45 et les échecs observés par ThousandEyes à 15h38 ne sont pas identiques, mais ensemble ils exposent une limite qui mérite investigation. La propagation a-t-elle commencé avant le déclencheur enregistré? L'horodatage de mesure reflétait-il un symptôme plus précoce? L'horloge ou la précision de publication différait-elle? Le paquet de sources ne répond pas. Un enregistrement interne corrélé le pourrait.

La communication devrait préserver les mêmes distinctions de couche. « Réseau sain » est trop large. Un message de statut utile peut dire que les réponses faisant autorité récupèrent, que le rollback se propage, que l'accessibilité applicative s'améliore, et que les caches de résolveurs résiduels peuvent continuer à montrer des échecs. Les clients peuvent alors comparer leurs propres preuves avec celles de l'opérateur.

La déclaration d'Akamai était concise et incluait le déclencheur, le rollback, la durée, la limite de non-cyberattaque et la correction de portée ultérieure. Ce sont des faits initiaux solides. L'écart de responsabilité n'est pas que l'entreprise n'a rien dit. C'est que le dossier public ne contient pas les preuves techniques nécessaires pour évaluer la validation, le confinement du déploiement et la réparation durable.

La responsabilité suit le contrôle, la capacité et la preuve

La responsabilité est parfois réduite à la faute: Akamai a changé une configuration, donc Akamai est responsable. C'est directionnellement vrai mais analytiquement incomplet. Une allocation utile identifie quel acteur contrôlait quel risque et quelles preuves chacun devrait conserver.

Ingénierie plateforme et réseau d'Akamai

Akamai contrôlait le composant qui a reçu la mise à jour, l'interface logicielle et de configuration, la validation, la topologie de déploiement, la surveillance, le rollback et la réparation post-incident. Son devoir était proportionnel à la portée du composant. Si un changement pouvait affecter de nombreux sites clients, le pipeline avait besoin de contrôles conçus pour ce rayon d'explosion partagé.

Les preuves pertinentes incluent un diff normalisé, des tests, des résultats canari, des accusés de réception de déploiement, des métriques de santé, des journaux de rollback et des résultats de régression. La déclaration publique établit la cause et la récupération de haut niveau mais pas ces artefacts. [1]

Propriétaires de produit et de changement chez Akamai

Les propriétaires de produit contrôlaient comment l'urgence de la mise à jour, l'impact client et l'approbation étaient représentés. Ils déterminaient si un changement était routinier, si une exception pouvait contourner le staging et quels engagements de niveau de service s'appliquaient. Ils contrôlaient aussi si les clients recevaient des informations d'architecture et de correction suffisantes pour évaluer leurs propres plans de continuité.

Ce rôle n'est pas la même chose que blâmer un manager. Il reconnaît que les limites de rayon d'explosion et les exigences de preuve sont des décisions produit autant que des décisions logicielles.

Clients d'Akamai

Les clients contrôlaient certaines parties de la diversité des fournisseurs, de la délégation DNS, des TTL, des certificats, de la connectivité d'origine, de la portabilité applicative et des tests de basculement. Leur devoir dépendait de la criticité du service et des ressources pratiques. Une banque, une compagnie aérienne ou un service public peut raisonnablement exiger des chemins indépendants plus forts qu'un site à faible impact.

Les clients ne contrôlaient pas la mise à jour interne d'Akamai. Ne pas acheter un deuxième fournisseur ne transfère pas la cause racine. Cela modifie l'exposition et les options de récupération du client.

Opérateurs de résolveurs récursifs

Les opérateurs de résolveurs contrôlaient les nouvelles tentatives, la mise en cache des échecs, la politique de réponse obsolète et la surveillance. Leurs implémentations pouvaient modifier la durée et les symptômes visibles. Ils devraient suivre les normes actuelles, éviter l'amplification nocive des nouvelles tentatives et exposer suffisamment de télémétrie pour distinguer l'échec faisant autorité de l'état de cache local. [14][18][19][20]

Ils ne pouvaient pas inventer en toute sécurité des données faisant autorité actuelles. Serve-stale est une atténuation limitée, pas un substitut à une autorité saine.

Registraires et fournisseurs DNS secondaires

Là où les clients les utilisaient, les registraires et fournisseurs secondaires contrôlaient la délégation et les chemins de service alternatifs. L'exploitation multi-fournisseurs nécessitait des enregistrements cohérents, une coordination DNSSEC, une autorité de changement et un basculement testé. [12][16]

Organismes de normalisation et de mesure

L'IETF a défini le comportement protocolaire et les conseils opérationnels. ThousandEyes a fourni des mesures indépendantes. Ni l'un ni l'autre n'exploitait le composant d'Akamai. Leur rôle était de rendre les mécanismes de défaillance et les preuves publiques plus lisibles.

Cette carte empêche deux erreurs. La première est la concentration totale du blâme sur la dernière personne qui a activé un changement. La seconde est une diffusion si large qu'aucun acteur n'a de devoir concret. Le contrôle pratique donne à chaque devoir une limite.

L'affirmation de réparation nécessite un test de défaillance reproductible

Akamai a dit qu'il examinait son processus de mise à jour logicielle pour prévenir de futures perturbations. [1]

Cet engagement est sensé, mais « a examiné le processus » n'est pas un résultat technique. La question durable est de savoir si l'organisation peut reproduire la classe de défaillance et montrer que des contrôles indépendants la contiennent maintenant.

Un programme de réparation solide commencerait par un modèle d'incident exact:

  • la plus petite configuration qui déclenche le bug;
  • le composant et la version qui l'interprètent;
  • la population de service exposée;
  • la défaillance DNS observable;
  • l'état de rollback;
  • les signaux de surveillance qui l'identifient.

L'étape suivante est un test négatif. Introduire la classe déclencheuse dans la pré-production et confirmer que la nouvelle validation la rejette ou qu'un canari échoue sans atteindre la flotte plus large. Le test devrait affirmer non seulement qu'une entrée spécifique est bloquée, mais que des entrées sémantiquement équivalentes et des variantes mal formées ne peuvent pas contourner le contrôle.

La troisième étape est l'indépendance. Si la réparation ajoute un autre validateur, démontrer qu'il utilise une représentation, un analyseur ou une source de vérité différente du composant défaillant. Si elle ajoute un canari, prouver que le canari reçoit la même configuration compilée que la production et que la promotion s'arrête automatiquement en cas d'échec DNS ou applicatif.

La quatrième étape est le confinement du domaine de défaillance. Démontrer qu'une mise à jour dangereuse ne peut pas atteindre chaque domaine de service faisant autorité avant que les preuves ne soient évaluées. Les domaines peuvent être définis par cloud anycast, cohorte logicielle, région, groupe client ou composant de service, mais ils doivent être opérationnellement significatifs.

La cinquième étape est le rollback dans des conditions dégradées. Désactiver ou isoler une partie du chemin de contrôle ordinaire et montrer que les opérateurs peuvent toujours réactiver un état connu comme bon. Confirmer la convergence depuis plusieurs réseaux externes.

La sixième étape est un résultat visible pour le client. Publier suffisamment d'informations pour que les clients puissent cartographier la correction à leur dépendance. Cela peut inclure la classe de défaillance, le mécanisme de confinement, la portée du test et la date sans divulguer de détails exploitables.

La septième étape est la surveillance de récurrence. Suivre les configurations rejetées, les avortements canari, les tests de rollback et les erreurs DNS liées à la configuration dans le temps. Une réparation qui réussit une fois et se dégrade silencieusement n'est pas durable.

La documentation actuelle d'Akamai décrit des listes de modifications, des diffs, des versions, l'état de propagation et la réactivation. Ce sont des éléments de construction utiles pour la preuve. L'article ne peut pas prétendre qu'ils ont été ajoutés à cause de l'incident de 2021 ou qu'ils s'appliquent au même composant. Il peut dire que des artefacts équivalents sont le standard par lequel une affirmation de réparation devrait être évaluée. [7][8]

Ce que le dossier public ne peut pas prouver

L'ensemble de sources est assez fort pour établir un cas réel d'infrastructure réseau et assez faible pour exiger de la retenue.

Il ne peut pas prouver la valeur exacte de la configuration. Il ne peut pas identifier le bug. Il ne peut pas montrer si la mise à jour était globale à l'activation ou est devenue large par propagation. Il ne peut pas indiquer le nombre de clients affectés. Il ne peut pas établir quels clouds anycast ou processus de serveur de noms ont échoué. Il ne peut pas montrer si les serveurs de noms à entrée différée du document systèmes d'Akamai étaient pertinents. Il ne peut pas identifier le réviseur, l'approbateur ou l'opérateur individuel. Il ne peut pas quantifier les pertes ou attribuer des dommages contractuels.

Le dossier ne peut pas non plus prouver que chaque client utilisant plusieurs fournisseurs est resté disponible, ou que chaque client à fournisseur unique a échoué. ThousandEyes fournit des exemples et des observations agrégées depuis son point de mesure, pas un recensement universel. [2][4]

Les RFC établissent le contexte protocolaire et opérationnel. Elles ne créent pas une conclusion factuelle qu'Akamai a violé une norme. La RFC 9199 et la RFC 9520 sont postérieures à l'incident et ne doivent pas être présentées comme des obligations qui régissaient la mise à jour de 2021. [15][20]

L'absence de ces faits n'efface pas la responsabilité. Elle définit la frontière entre une conclusion soutenue et la spéculation. La conclusion soutenue est qu'une mise à jour de configuration partagée a déclenché un bug dans un composant DNS, a causé des échecs d'accessibilité significatifs et a nécessité un rollback. Le devoir de preuve est de montrer comment l'autorité de configuration est maintenant contrainte et comment la récupération est vérifiée.

Un test réutilisable de responsabilité d'accessibilité

L'incident soutient un test pratique pour tout fournisseur exploitant un DNS faisant autorité, un steering CDN, une gestion de trafic ou un autre plan de contrôle réseau partagé.

1. Nommer la surface de contrôle indispensable.
Identifier si les utilisateurs dépendent du DNS faisant autorité, du BGP, de l'anycast, de la politique de routage, des certificats, de la sélection d'origine ou d'un autre mécanisme. Ne pas appeler l'événement une panne générique.

2. Séparer le changement prévu de l'autorité effective.
Enregistrer ce que le changement était censé faire et calculer quels services, utilisateurs et domaines de défaillance il pourrait réellement affecter.

3. Valider la signification indépendamment.
Utiliser des contrôles qui comparent le comportement normalisé, la portée autorisée et l'infrastructure protégée, pas deux copies de la même hypothèse d'analyseur.

4. Déployer en phases à travers de vrais domaines de défaillance.
Canari l'entrée compilée exacte et arrêter la propagation automatiquement lorsque les preuves DNS, de routage ou applicatives se dégradent.

5. Préserver un chemin indépendant connu comme bon.
Garder un chemin de service ou de gestion qui ne consomme pas la nouvelle entrée immédiatement et peut restaurer l'état antérieur.

6. Mesurer de l'extérieur.
Sonder les réponses faisant autorité, les résultats des résolveurs et les transactions applicatives depuis plusieurs réseaux. La santé anycast ne peut pas être déduite d'un seul emplacement.

7. Prouver la convergence du rollback.
Montrer quels destinataires ont régressé, quelles réponses sont revenues et quelles applications ont récupéré. Un message de succès du plan de contrôle ne suffit pas.

8. Tester les alternatives client de bout en bout.
La diversité des fournisseurs doit inclure la délégation, le DNSSEC, les certificats, les origines, la capacité, l'état et l'autorité opérationnelle.

9. Publier la portée corrigée.
Quand une investigation réduit ou modifie une affirmation initiale, préserver la correction de manière proéminente et identifier quelles conclusions ont changé.

10. Lier la réparation à la défaillance reproduite.
Démontrer que la classe originale et les variantes sémantiques sont rejetées, contenues ou récupérées sans impact utilisateur large.

Ce test alloue la responsabilité sans prétendre que chaque acteur a un pouvoir égal. Le fournisseur porte le fardeau principal pour la plateforme partagée. Les clients et les résolveurs portent des devoirs limités pour les contrôles qu'ils possèdent réellement. La preuve publique permet d'évaluer ces devoirs.

Conclusion

Akamai a rétabli le service rapidement le 22 juillet 2021. Sa déclaration publique a identifié une mise à jour de configuration, un bug déclenché, un rollback, une durée d'une heure maximum et une limite de non-cyberattaque. Sa correction du lendemain a réduit le système affecté à un composant DNS du CDN Edge sécurisé. ThousandEyes a fourni des preuves indépendantes que la perturbation s'est manifestée par des échecs d'accessibilité DNS et applicative sur de nombreux sites et utilisateurs. [1][2]

La leçon plus profonde n'est pas que le DNS distribué a échoué malgré de nombreux serveurs. C'est que la distribution de service et l'indépendance de configuration sont des propriétés différentes. L'anycast peut répartir le service à travers les réseaux et les continents tandis qu'une entrée de contrôle partagée préserve un mode de défaillance commun. Les caches de résolveurs et la diversité client peuvent atténuer l'effet, mais ils ne peuvent pas substituer un pipeline de mise à jour faisant autorité sûr.

Le risque suit l'autorité qu'un changement peut exercer. La responsabilité suit qui peut contraindre cette autorité, l'arrêter, observer ses conséquences et prouver la réparation. Pour une plateforme qui se trouve avant la connexion applicative, ce sont des devoirs d'infrastructure réseau, pas simplement des préférences de processus logiciel.

Sources

  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