Quatre entrepôts sur le même quai
Sur un terminal portuaire, la marchandise ne dort pas au même endroit selon ce qu'elle est. Le hangar sec reçoit les palettes qui repartent dans la semaine. Le frigorifique prend ce qui ne supporte pas l'attente. L'entrepôt sous douane garde ce dont personne ne peut disposer sans autorisation. Et au fond du site, un bâtiment d'archives conserve ce que plus personne ne consulte mais que la réglementation oblige à garder dix ans.
Le locataire du quai n'a construit aucun de ces bâtiments. Il choisit lequel il loue, pour quelle marchandise, et à quelles conditions on peut y entrer.
Le compte de stockage Azure joue ces quatre rôles à la fois. C'est la ressource la plus banale du catalogue, celle qu'on crée en trente secondes au démarrage d'un projet, et celle dont deux options cochées à ce moment-là décident du reste.
La redondance dit contre quelle panne on est couvert. Le niveau d'accès dit combien on paie pour une donnée qu'on ne relira jamais. Les deux se tranchent au début, au moment précis où personne n'a encore d'avis.
Vue d'ensemble : une ressource, quatre services
Un compte de stockage n'est pas un service, c'est un contenant qui en expose quatre, avec chacun son point de terminaison et son modèle de données.
| Service | Ce qu'il stocke | Usage typique | Niveau d'accès applicable |
|---|---|---|---|
| Blob | des objets non structurés : blobs de blocs, d'ajout, de pages | sauvegardes, médias, journaux, socle de lac de données | oui, sur les blobs de blocs |
| Fichiers | un partage réseau monté par un système, en SMB ou NFS | reprise d'un serveur de fichiers, contenu partagé entre machines | non |
| Files d'attente | des messages courts, lus et acquittés | découplage simple entre deux composants | non |
| Tables | des entités clé et attributs, sans schéma imposé | catalogue, données de référence peu coûteuses | non |
Les disques managés d'une machine virtuelle ne vivent pas là. Ce sont des ressources autonomes, avec leur propre gestion, et les confondre avec le stockage de comptes fait rater la moitié du raisonnement sur les coûts.
Trois décisions se prennent au niveau du compte et s'appliquent à tout ce qu'il contient : la redondance, la façon dont on s'y authentifie, et l'exposition réseau. Le niveau d'accès, lui, se règle par blob, avec une valeur par défaut au compte.
objets non structurés"] F["Fichiers
partage SMB ou NFS"] Q["Files d'attente
messages courts"] T["Tables
clé et attributs"] R["Redondance
décidée pour tout le compte"] A["Accès et réseau
décidés pour tout le compte"] N["Niveau d'accès
par blob de blocs"] R --> CO A --> CO CO --> B CO --> F CO --> Q CO --> T B --> N classDef racine fill:#b5651d,stroke:#8a4d16,color:#f5f2ec; classDef service fill:#d89253,stroke:#8a4d16,color:#2c3338; classDef transverse fill:#ede9e1,stroke:#8a4d16,color:#2c3338; class CO racine; class B,F,Q,T service; class R,A,N transverse;
Un compte de stockage est une frontière de configuration avant d'être un espace disque. Tout ce qu'on y range hérite de ses réglages, ce qui rend le mélange de charges hétérogènes dans un seul compte plus coûteux qu'il n'en a l'air.
Le type de compte et le niveau de performance
Le terminal propose des hangars ordinaires et des postes spécialisés, plus chers à la journée et réservés à des flux qui ne tolèrent pas l'attente. On ne loue pas le second par confort.
Azure distingue le niveau standard, qui couvre l'immense majorité des besoins, et le niveau premium, adossé à du stockage à état solide et facturé selon la capacité provisionnée plutôt que selon le volume réellement occupé.
| Type de compte | Services exposés | Profil | Redondance disponible |
|---|---|---|---|
| Usage général v2, standard | blob, fichiers, files, tables | polyvalent, facturé à la consommation | locale, de zone, géographique, et les variantes |
| Blob de blocs premium | blob de blocs et d'ajout | forte cadence de transactions, latence basse | locale ou de zone |
| Partages de fichiers premium | fichiers | partage exigeant en entrées et sorties | locale ou de zone |
| Blob de pages premium | blob de pages | accès aléatoire intensif | locale |
Deux conséquences se lisent directement dans cette table. Le premium n'offre pas de redondance géographique, ce qui déplace la couverture régionale vers un autre mécanisme. Et les comptes premium de blobs de blocs ne proposent pas la gradation chaud vers archive : leur donnée reste au même niveau tant qu'elle est là.
Certains choix se rattrapent, d'autres non. La redondance se change après coup, parfois via une conversion qui prend du temps. La région du compte et son niveau de performance se décident une fois pour toutes : en changer veut dire créer un autre compte et recopier. L'espace de noms hiérarchique se pose à la création, ou plus tard par une mise à niveau sans retour arrière.
La question à poser avant de créer le compte n'est pas « quel type prendre », c'est « qu'est-ce que je ne pourrai plus changer ». La liste est courte, et c'est justement pour ça qu'on l'oublie.
La redondance
Le port stocke la même palette en plusieurs exemplaires selon ce qu'il craint. Trois copies dans le même hangar protègent d'un chariot élévateur maladroit. Elles ne protègent de rien si le hangar brûle.
Azure décline exactement cette gradation, sur deux axes : combien d'emplacements physiques dans la région primaire, et existe-t-il une copie dans une seconde région.
| Option | Où sont les copies | Contre quoi elle couvre | Ce qu'elle laisse passer |
|---|---|---|---|
| Locale (LRS) | trois copies dans un seul emplacement physique de la région | défaillance de disque, de serveur, de baie | la perte du bâtiment ou de la zone |
| De zone (ZRS) | trois copies réparties sur trois zones de disponibilité | la perte d'une zone entière, alimentation et refroidissement compris | la perte de la région |
| Géographique (GRS) | copie locale dans la région primaire, copie locale asynchrone dans la région secondaire | la perte de la région primaire | une panne de zone sans basculement, et la lecture de la copie distante |
| Géographique de zone (GZRS) | copie de zone en primaire, copie locale asynchrone en secondaire | la perte d'une zone et la perte de la région | la lecture de la copie distante |
| Variantes à lecture secondaire | idem, plus un point de terminaison de lecture sur la copie distante | la lecture pendant l'indisponibilité de la primaire | l'écriture, qui reste sur la région primaire |
La durabilité annoncée grimpe avec la portée, de onze neuf pour la redondance locale à seize neuf pour les options géographiques sur une année donnée. Ces chiffres décrivent une probabilité de perte matérielle, pas une garantie de disponibilité, et surtout pas une protection contre une opération humaine.
La réplication géographique est asynchrone. Microsoft ne s'engage pas contractuellement sur le délai de propagation vers la région secondaire, ce qui signifie qu'un basculement non planifié peut laisser derrière lui les dernières écritures.
Le basculement lui-même se déclenche par le client. Une fois effectué, le compte se retrouve en redondance locale dans sa nouvelle région primaire, et il faut reconfigurer la redondance pour retrouver le niveau de couverture d'avant.
faut-il être couvert ?"} A["Un disque ou un serveur"] B["Un bâtiment ou une zone"] C["La région entière"] D["La région, avec lecture
pendant la panne"] E["Une suppression
ou une corruption"] LRS["Redondance locale"] ZRS["Redondance de zone"] GRS["Redondance géographique,
de zone si possible"] RA["Variante à lecture
sur la copie secondaire"] PROT["Suppression réversible,
versionnage, immuabilité,
sauvegarde"] Q1 --> A Q1 --> B Q1 --> C Q1 --> D Q1 --> E A --> LRS B --> ZRS C --> GRS D --> RA E --> PROT classDef question fill:#b5651d,stroke:#8a4d16,color:#f5f2ec; classDef cas fill:#ede9e1,stroke:#8a4d16,color:#2c3338; classDef reponse fill:#d89253,stroke:#8a4d16,color:#2c3338; classDef alerte fill:#a0413e,stroke:#8a4d16,color:#f5f2ec; class Q1 question; class A,B,C,D,E cas; class LRS,ZRS,GRS,RA reponse; class PROT alerte;
La branche de droite est celle qui coûte le plus cher aux équipes. Une réplication recopie fidèlement toutes les opérations, y compris la suppression et l'écrasement. Un fichier effacé par erreur disparaît de la copie locale, des trois zones et de la région secondaire, dans le même mouvement.
Une réplication protège contre la disparition du matériel. Elle n'a jamais protégé contre celui qui possède les droits d'écriture. Ce sont deux problèmes distincts, et le second se traite dans la section suivante.
Les niveaux d'accès
Le frigorifique coûte plus cher à la journée que le hangar sec, et l'entrepôt d'archives à l'autre bout du site coûte trois fois rien, à condition d'accepter d'attendre une demi-journée quand on veut ressortir un carton.
Les niveaux d'accès blob reproduisent cet arbitrage à l'octet près : plus le stockage est bon marché, plus la lecture est chère et lente.
| Niveau | Coût de stockage | Coût des opérations et des lectures | Durée minimale facturée | Disponibilité de la donnée |
|---|---|---|---|---|
| Chaud (hot) | le plus élevé | le plus bas | aucune | immédiate |
| Froid (cool) | inférieur | supérieur | 30 jours | immédiate |
| Froid étendu (cold) | encore inférieur | encore supérieur | 90 jours | immédiate |
| Archive | le plus bas | le plus élevé | 180 jours | hors ligne, réhydratation obligatoire |
Trois pièges reviennent systématiquement.
Le premier est la durée minimale. Descendre un blob au niveau froid puis le supprimer une semaine plus tard déclenche des frais de suppression anticipée calculés sur le reliquat de la période. Une politique de rangement trop zélée finit par coûter plus cher que l'absence de politique.
Le deuxième est le coût de lecture. Un jeu de données froid relu tous les jours par un tableau de bord revient plus cher qu'en niveau chaud, sans que la ligne de facture le dise clairement.
Le troisième est l'archive. La donnée y est hors ligne : aucune lecture n'est possible avant réhydratation, avec une priorité standard qui se compte en heures et une priorité haute plus rapide et plus chère. Un plan de reprise qui s'appuie sur des sauvegardes archivées doit intégrer ce délai dans son objectif de temps de reprise, pas le découvrir le jour J.
Le rangement se déclenche par une stratégie de cycle de vie, décrite en JSON et appliquée par la plateforme sans intervention.
{
"rules": [
{
"enabled": true,
"name": "journaux-applicatifs",
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": [ "blockBlob" ],
"prefixMatch": [ "logs/" ]
},
"actions": {
"baseBlob": {
"tierToCool": { "daysAfterModificationGreaterThan": 30 },
"tierToArchive": { "daysAfterModificationGreaterThan": 180 },
"delete": { "daysAfterModificationGreaterThan": 2555 }
},
"version": {
"delete": { "daysAfterCreationGreaterThan": 90 }
}
}
}
}
]
}
Trente jours en chaud, six mois avant l'archive, sept ans avant la suppression, et les anciennes versions purgées au bout de trois mois. La règle s'applique aux blobs préfixés logs/, ce qui suppose une convention de nommage décidée avant que le premier fichier n'arrive.
La plateforme évalue les stratégies une fois par jour : leur effet n'est pas immédiat, et une règle écrite hier ne se juge pas ce matin. Le déclenchement sur la date de dernier accès plutôt que de dernière modification est possible, à condition d'activer au préalable le suivi des accès.
La règle de cycle de vie qui fait gagner le plus d'argent n'est pas celle qui archive, c'est celle qui supprime. Encore faut-il que quelqu'un ait osé écrire une durée de conservation.
Protéger la donnée
L'entrepôt sous douane du port a une caractéristique que les autres n'ont pas : le locataire y dépose sa marchandise, et il ne peut plus la retirer avant l'échéance, même en présentant ses papiers. Ce n'est pas une contrainte subie, c'est le service rendu.
Quatre mécanismes se superposent, du plus souple au plus rigide.
La suppression réversible conserve les blobs et les conteneurs effacés pendant une fenêtre de rétention configurable, où ils restent restaurables. C'est l'assurance contre le doigt qui glisse, et elle s'active en une case.
Le versionnage crée automatiquement une version à chaque écriture, ce qui protège de l'écrasement autant que de la suppression. Sa contrepartie est directe : chaque version est facturée, d'où la règle d'expiration des anciennes versions dans la stratégie de cycle de vie ci-dessus.
La restauration dans le temps ramène un ensemble de blobs de blocs à un état antérieur, en s'appuyant sur le versionnage, le flux de modifications et la suppression réversible. Elle se prépare, elle ne s'improvise pas au moment de l'incident.
L'immuabilité applique le modèle écrire une fois, lire plusieurs fois, via une stratégie de conservation limitée dans le temps ou une conservation légale sans échéance, au niveau du conteneur ou de la version. Une stratégie verrouillée ne peut plus être raccourcie, seulement prolongée. Microsoft indique que la fonction a été évaluée par un cabinet tiers au regard d'exigences réglementaires du secteur financier américain, notamment la règle 17a-4(f) de la SEC et les règles équivalentes de la FINRA et de la CFTC.
Reste le verrou de ressource, qui empêche la suppression du compte depuis le plan de gestion. Utile, mais à ne pas confondre avec une protection des données : un verrou n'a jamais empêché quiconque d'effacer le contenu d'un conteneur avec les bons droits.
La différence entre ces mécanismes et la redondance tient en une phrase : la redondance protège la donnée du matériel, ceux-ci la protègent des opérations légitimes menées par erreur ou par malveillance.
Accéder au compte
Sur le quai, il y a la clé passe-partout du chef de terminal, le badge nominatif d'un opérateur et le bon d'enlèvement valable pour un conteneur et une journée. Les trois ouvrent une porte, aucun ne se révoque de la même façon.
| Moyen d'accès | Ce qu'il autorise | Comment on le retire |
|---|---|---|
| Clé de compte | tout, sur tous les services du compte | rotation des deux clés, ce qui casse tout ce qui les utilise |
| Signature d'accès partagé signée par une clé | une portée et une durée fixées à la signature | rotation de la clé signataire, ou stratégie d'accès stockée qu'on révoque |
| Signature de délégation d'utilisateur, signée par l'annuaire | au plus ce que l'identité signataire a le droit de faire | révocation de la clé de délégation ou retrait du rôle |
| Rôle sur les données, attribué par RBAC | des opérations précises, sur une portée pouvant descendre au conteneur | retrait de l'attribution, effectif sans redéploiement |
La progression du tableau est aussi l'ordre dans lequel on devrait migrer. Une clé de compte est un secret partagé, non traçable à un humain, et sa rotation devient d'autant plus douloureuse que le nombre d'applications qui l'utilisent grandit.
Un détail change tout dans la conception des droits : les rôles du plan de gestion et ceux du plan de données sont distincts, mais un rôle capable de lire les clés du compte donne, de fait, un accès complet à la donnée. D'où l'intérêt de désactiver l'autorisation par clé partagée une fois les applications passées aux identités managées.
Côté réseau, la position saine se pose en trois gestes : refuser l'accès public anonyme aux conteneurs au niveau du compte, basculer les règles réseau en refus par défaut, puis exposer le compte par un point de terminaison privé, un par sous-ressource utilisée. Ce dernier point ne fonctionne que si la zone DNS privée correspondante est en place et liée au bon réseau, sujet traité avec le réseau virtuel.
Le stockage exposé publiquement n'est presque jamais une décision, c'est un défaut de configuration hérité d'un compte créé rapidement. La stratégie qui refuse cette configuration coûte moins cher que l'audit qui la découvre.
Les cas voisins
Trois services partagent une frontière avec le compte de stockage et se choisissent pour des raisons différentes.
Les partages de fichiers managés exposent un système de fichiers en SMB ou en NFS, avec une authentification adossée à un annuaire, et un mécanisme de synchronisation qui permet de garder un cache local sur un serveur sur site. C'est le remplacement direct d'un serveur de fichiers, pas un stockage applicatif.
Azure NetApp Files est un service à part, provisionné en pools de capacité avec des niveaux de service, taillé pour des charges exigeantes en latence et en débit que les partages standard ne tiennent pas. Le prix suit l'exigence.
Data Lake Storage est une option du compte plutôt qu'un produit distinct : l'espace de noms hiérarchique transforme les préfixes en répertoires réels, avec renommage atomique et listes de contrôle d'accès de type POSIX. C'est ce que réclament les moteurs analytiques. L'option se décide à la création ; l'ajouter ensuite passe par une mise à niveau qui ne se défait pas.
Ces trois voisins se choisissent sur le protocole d'accès attendu par la charge, pas sur le volume. Un applicatif qui exige un chemin de fichier ne se satisfera jamais d'une API objet, quelle que soit la souplesse du stockage blob.
Scénario B : l'incendie de SBG2, mars 2021
Dans la nuit du 9 au 10 mars 2021, un incendie se déclare sur le site strasbourgeois d'OVHcloud. Le bâtiment SBG2 est entièrement détruit, SBG1 est partiellement endommagé, et l'ensemble du site est mis hors tension, y compris les bâtiments épargnés par les flammes.
L'entreprise communique publiquement pendant l'incident. Son fondateur, Octave Klaba, publie des points de situation réguliers et recommande explicitement aux clients concernés d'activer leur plan de reprise d'activité.
Une analyse publiée par Netcraft après l'incendie recense environ 3,6 millions de sites web hébergés sur les adresses touchées, répartis sur plusieurs centaines de milliers de domaines. Beaucoup redémarrent en quelques jours. D'autres jamais.
Le point qui intéresse ce billet arrive dans les heures suivantes, chez des clients qui se croyaient couverts. Certains avaient souscrit une option de sauvegarde sans voir que la copie vivait sur le site même des serveurs sauvegardés. D'autres découvrent qu'ils n'en avaient aucune.
Le parallèle avec les options de redondance est presque scolaire. Une copie dans le même bâtiment couvre la défaillance d'un disque, pas l'incendie du bâtiment. Une copie dans un autre bâtiment du même site couvre l'incendie, mais pas la coupure d'alimentation qui met tout le campus à l'arrêt. Seule une copie dans une autre région, à distance suffisante, couvre l'événement qui emporte le site entier.
C'est très exactement l'échelle que dessinent la redondance locale, la redondance de zone (dont les zones disposent d'alimentation, de refroidissement et de réseau indépendants) et la redondance géographique. Le choix ne se fait pas sur un niveau de confort, il se fait en nommant la catastrophe contre laquelle on veut tenir.
Le fournisseur avait fait son travail de fournisseur : il proposait des options situées à des échelles différentes. La question restée sans réponse chez certains clients était plus simple, et relevait d'eux seuls : où sont physiquement mes copies, et que reste-t-il si ce lieu disparaît.
Points clés
- Un compte de stockage porte quatre services, mais la redondance, l'authentification et l'exposition réseau s'appliquent à tout le compte. Mélanger des charges aux exigences différentes dans un seul compte revient à leur imposer le réglage le plus contraignant, ou le plus laxiste.
- La redondance se choisit en nommant la panne : locale contre une défaillance matérielle, de zone contre la perte d'un bâtiment, géographique contre la perte d'une région. La réplication vers la seconde région est asynchrone et le basculement ramène le compte en redondance locale.
- Aucune réplication ne protège d'une suppression. Ce rôle revient à la suppression réversible, au versionnage, à la restauration dans le temps et à l'immuabilité, qui se conçoivent séparément.
- Les niveaux d'accès s'arbitrent sur la fréquence de lecture, pas sur l'ancienneté seule : durée minimale facturée, frais de lecture et délai de réhydratation de l'archive doivent entrer dans le calcul avant d'écrire la stratégie de cycle de vie.
- L'incendie de SBG2 en mars 2021 a montré ce que vaut une sauvegarde hébergée sur le site qu'elle protège. Savoir où se trouvent physiquement ses copies fait partie de la conception, pas de l'exploitation.
Dans la série
Palier 2 : Construire les terminaux. Domaine : Stockage & données.
- Précédent : Conteneurs sur Azure : ACI, Container Apps et AKS
- Suivant : Bases relationnelles : Azure SQL, Managed Instance ou machine virtuelle
- Vue d'ensemble : Concevoir sur Azure : par où commencer
Pour aller plus loin
- Sauvegarde et reprise : Azure Backup et Site Recovery, pour la suite logique de ce billet : ce qui répare une donnée quand la redondance ne suffit pas.
- Haute disponibilité : SLA, zones, régions et basculement, pour l'arithmétique des zones et des paires de régions appliquée à toute une application.
- Redondance du stockage Azure, la page de référence sur les options locale, de zone et géographique.
- Niveaux d'accès des blobs et gestion du cycle de vie, pour le détail des durées minimales et du schéma des règles.
- Stockage immuable pour les blobs, pour les stratégies de conservation et la conservation légale.
- Autoriser l'accès aux données d'un compte de stockage, pour l'ordre de migration des clés partagées vers les rôles et les identités managées.
- Les communications publiques d'OVHcloud sur l'incendie du 10 mars 2021 et l'analyse publiée par Netcraft à cette date, pour le récit détaillé du scénario B.