Chapitre 818 minIntermédiaire
Azure Blob Storage : stockage objet, niveaux d'accès et redondance
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- distinguer stockage objet, bloc et fichier ;
- choisir un niveau d'accès et une redondance selon l'usage ;
- déposer et lire des blobs sans clé d'accès, avec Entra ID ;
- automatiser l'archivage avec une règle de cycle de vie.
4 exercices corrigés1 schéma
Azure Blob Storage est le service de stockage objet d'Azure : il conserve n'importe quel fichier (un blob) dans des conteneurs, accessibles par une API HTTPS, avec un prix au gigaoctet qui dépend du niveau d'accès choisi (chaud, froid, archive) et de la redondance (nombre et emplacement des copies). C'est l'équivalent d'Amazon S3 chez Microsoft. Ce chapitre situe le stockage objet par rapport aux disques et aux partages de fichiers, explique les niveaux d'accès, la redondance et la sécurisation des accès, puis te fait stocker et archiver les bons de livraison de Sorbier.
Objet, bloc, fichier : trois façons de stocker
| Type | Ce qu'on manipule | Protocole | Dans Azure | Usage typique |
|---|---|---|---|---|
| Bloc | Un disque brut, que le système formate | Interne à la VM, iSCSI | Disques managés | Disque système d'une VM, base de données sur VM |
| Fichier | Des dossiers et des fichiers partagés | SMB, NFS | Azure Files | Partage de fichiers d'équipe, remplacement d'un serveur de fichiers |
| Objet | Des objets (données, métadonnées, identifiant) dans des conteneurs, sans vraie arborescence | API HTTPS (REST) | Blob Storage | Documents numérisés, images, vidéos, sauvegardes, journaux, fichiers d'un site web |
Le stockage objet tient des volumes énormes à bas coût, mais on n'y modifie pas un fichier en place comme sur un disque : on écrit, on lit, on remplace un objet entier. Le cours Stockage et NAS avec TrueNAS compare les trois types côté infrastructure locale.
Compte de stockage, conteneur et blob
Les données sont rangées sur trois niveaux :
- le compte de stockage, avec un nom unique dans tout Azure, une région, une redondance et des paramètres de sécurité ;
- des conteneurs, l'équivalent des compartiments (buckets) de S3, qui regroupent des blobs et portent leurs propres droits ;
- des blobs, les objets eux-mêmes. Le nom d'un blob peut contenir des barres obliques (
2026/11/BL-2026-004512.pdf) : le portail les affiche comme des dossiers, mais ce ne sont que des préfixes.
Chaque blob a une adresse : https://<compte>.blob.core.windows.net/<conteneur>/<blob>. Les documents et fichiers ordinaires sont des blobs de blocs ; les blobs d'ajout servent aux journaux qu'on complète, les blobs de pages aux disques.
Les niveaux d'accès : chaud, froid, archive
Le prix de stockage baisse quand le niveau se refroidit, mais celui de la lecture monte, et une durée minimale de conservation s'applique. Prix relevés en novembre 2026, France Central, redondance LRS, hors taxes :
| Niveau | Pour quelles données | Stockage, par Go et par mois | Durée minimale | Délai de lecture | Disponibilité (LRS) |
|---|---|---|---|---|---|
| Chaud (hot) | Utilisées souvent | 0,0172 € | Aucune | Millisecondes | 99,9 % |
| Froid (cool) | Lues rarement, gardées au moins un mois | 0,0094 € | 30 jours | Millisecondes | 99 % |
| Très froid (cold) | Lues très rarement, gardées au moins trois mois | 0,0040 € | 90 jours | Millisecondes | 99 % |
| Archive | Conservées des années, presque jamais lues | 0,0016 € | 180 jours | Jusqu'à 15 heures | 99 % |
- La durée minimale est facturée même si tu supprimes avant : un blob archivé puis supprimé au bout de 45 jours est facturé comme s'il était resté 180 jours, soit 135 jours de plus.
- L'archive est hors ligne. Un blob archivé ne peut être ni lu ni modifié : on doit d'abord le réhydrater vers un niveau en ligne, ce qui prend jusqu'à 15 heures en priorité standard. On n'y met donc jamais une donnée dont on pourrait avoir besoin dans l'heure.
- Le niveau par défaut d'un compte est chaud, froid, très froid ou intelligent (smart tier) ; on peut fixer un autre niveau blob par blob. Le niveau intelligent, réservé aux comptes redondants entre zones (ZRS, GZRS ou RA-GZRS), déplace seul les données entre chaud, froid et très froid selon leur usage.
La redondance : LRS, ZRS, GRS, GZRS
Azure garde toujours au moins trois copies de chaque donnée. La redondance choisie dit où elles se trouvent.
| Redondance | Copies | Protège contre | Durabilité annuelle annoncée |
|---|---|---|---|
| LRS (locally redundant) | 3 copies dans un seul centre de données | La panne d'un disque ou d'un serveur | Au moins 99,999999999 % (11 « neuf ») |
| ZRS (zone-redundant) | 3 copies réparties sur 3 zones de disponibilité de la région | La perte d'un centre de données entier | Au moins 12 « neuf » |
| GRS (geo-redundant) | LRS dans la région principale, plus 3 copies dans la région appairée, copiées de façon asynchrone | La perte de toute une région | Au moins 16 « neuf » |
| GZRS | ZRS dans la région principale, plus 3 copies dans la région appairée | La perte d'une zone et d'une région | Au moins 16 « neuf » |
Pour un compte en France Central, la région appairée est France South (Marseille) : avec GRS, les données restent en France. Le niveau archive n'est possible qu'avec LRS, GRS ou RA-GRS (la variante de GRS qui permet de lire la copie secondaire).
Sécuriser l'accès aux blobs
| Méthode | Ce qu'elle donne | Recommandation |
|---|---|---|
| Entra ID et rôles RBAC de données | Un utilisateur, un groupe ou une identité managée reçoit un rôle : Storage Blob Data Reader (lecture), Storage Blob Data Contributor (lecture et écriture) | La méthode à privilégier : nominative, révocable, journalisée, sans secret à stocker |
| Clés d'accès du compte | Deux clés qui donnent tous les droits sur tout le compte | À éviter : une clé qui fuit dans un dépôt Git donne tout. On peut désactiver l'autorisation par clé partagée |
| Signature d'accès partagé (SAS) | Une URL qui donne un droit précis (lecture d'un blob, par exemple) jusqu'à une date | Pour partager un fichier avec un tiers ; de préférence une SAS de délégation d'utilisateur, signée avec un compte Entra ID, à durée courte |
| Accès public anonyme | N'importe qui lit le conteneur | Désactivé par défaut sur les nouveaux comptes ; à ne réactiver que pour des contenus réellement publics |
S'y ajoutent : le chiffrement au repos, toujours actif (AES 256 bits, avec des clés gérées par Microsoft ou par le client dans Azure Key Vault) ; le TLS 1.2 au minimum en transit ; le pare-feu du compte, qui limite les réseaux d'accès, ou un point de terminaison privé dans un réseau virtuel ; la suppression réversible (soft delete), qui garde les blobs supprimés pendant un nombre de jours fixé ; le versionnage ; et les stratégies d'immuabilité (WORM), qui interdisent toute modification ou suppression pendant une durée.
Lab : stocker et archiver les bons de livraison de Sorbier
Sorbier numérise chaque bon de livraison signé. Les bons du mois en cours sont consultés par le service client ; au bout d'un mois, presque plus personne ne les ouvre ; ils doivent être conservés dix ans, comme pièces justificatives (cours Sauvegarde et PRA).
1. Crée le compte de stockage. Choisis un nom unique : stsorbierlab suivi de tes initiales et de deux chiffres.
az group create --name rg-cloud-lab --location francecentral --tags cours=cloud
COMPTE=stsorbierlabjc42
az storage account create \
--name "$COMPTE" \
--resource-group rg-cloud-lab \
--location francecentral \
--sku Standard_LRS \
--kind StorageV2 \
--min-tls-version TLS1_2 \
--allow-blob-public-access false
2. Donne-toi le droit d'écrire des blobs, avec ton compte Entra ID plutôt qu'une clé.
MOI=$(az ad signed-in-user show --query id --output tsv)
ID_COMPTE=$(az storage account show --name "$COMPTE" --resource-group rg-cloud-lab --query id --output tsv)
az role assignment create \
--assignee-object-id "$MOI" \
--assignee-principal-type User \
--role "Storage Blob Data Contributor" \
--scope "$ID_COMPTE"
Une attribution de rôle met parfois quelques minutes à s'appliquer : si l'étape suivante répond AuthorizationPermissionMismatch, patiente un peu.
3. Crée un conteneur et dépose un bon de livraison directement au niveau froid.
az storage container create --account-name "$COMPTE" --name bons-livraison --auth-mode login
echo "Bon de livraison BL-2026-004512, signé le 05/11/2026" > BL-2026-004512.txt
az storage blob upload \
--account-name "$COMPTE" \
--container-name bons-livraison \
--name 2026/11/BL-2026-004512.txt \
--file BL-2026-004512.txt \
--tier Cool \
--auth-mode login
az storage blob list \
--account-name "$COMPTE" \
--container-name bons-livraison \
--query "[].{nom:name, niveau:properties.blobTier}" \
--output table \
--auth-mode login
Nom Niveau
-------------------------- --------
2026/11/BL-2026-004512.txt Cool
4. Archive-le, puis essaie de le lire.
az storage blob set-tier --account-name "$COMPTE" --container-name bons-livraison \
--name 2026/11/BL-2026-004512.txt --tier Archive --auth-mode login
az storage blob download --account-name "$COMPTE" --container-name bons-livraison \
--name 2026/11/BL-2026-004512.txt --file copie.txt --auth-mode login
Le téléchargement échoue avec une erreur BlobArchived : le blob est hors ligne. Pour le relire, il faudrait le réhydrater (az storage blob set-tier ... --tier Cool --rehydrate-priority Standard) et attendre jusqu'à 15 heures. C'est pour cette raison qu'on n'archive que ce qu'on ne lira presque jamais.
5. Automatise le cycle de vie. Plutôt que de changer les niveaux à la main, une règle de cycle de vie le fait chaque jour : froid après 30 jours sans modification, archive après 180 jours, suppression après 10 ans (3 650 jours).
cat > cycle-de-vie.json <<'EOF'
{
"rules": [
{
"enabled": true,
"name": "bons-livraison-dix-ans",
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": ["blockBlob"],
"prefixMatch": ["bons-livraison/"]
},
"actions": {
"baseBlob": {
"tierToCool": { "daysAfterModificationGreaterThan": 30 },
"tierToArchive": { "daysAfterModificationGreaterThan": 180 },
"delete": { "daysAfterModificationGreaterThan": 3650 }
}
}
}
}
]
}
EOF
az storage account management-policy create \
--account-name "$COMPTE" \
--resource-group rg-cloud-lab \
--policy @cycle-de-vie.json
Le filtre prefixMatch commence par le nom du conteneur : la règle ne touche que les bons de livraison.
6. Protège contre les suppressions accidentelles, puis termine le lab.
az storage account blob-service-properties update \
--account-name "$COMPTE" \
--resource-group rg-cloud-lab \
--enable-delete-retention true \
--delete-retention-days 14 \
--enable-versioning true
az group delete --name rg-cloud-lab --yes --no-wait
Exercices
Exercice 1 sur 4 Choisir le niveau d'accès Réussi À revoir
Pour chaque donnée de Sorbier, propose un niveau d'accès et justifie.
- Les photos de colis endommagés, consultées pendant les deux semaines de traitement de la réclamation, puis presque jamais.
- Les images du site de suivi (logo, icônes), lues des milliers de fois par jour.
- Les sauvegardes mensuelles de la base, gardées un an, relues seulement en cas de sinistre, avec un délai de restauration toléré de 24 heures.
- Les bons de livraison de plus d'un an, à garder dix ans.
- Un export de données qu'un auditeur doit télécharger dans l'heure, une seule fois, dans trois semaines.
Voir la réponseMasquer la réponse de l'exercice 1
- Chaud pendant le traitement, puis froid ou très froid par une règle de cycle de vie. L'archive est possible si l'on accepte de ne plus les relire avant 15 heures.
- Chaud : lectures très fréquentes, donc le prix d'accès le plus bas. (Pour un site public, on placerait en plus un réseau de diffusion de contenu, un CDN, devant le stockage.)
- Très froid, ou archive : la restauration peut attendre jusqu'à 15 heures de réhydratation, ce qui reste sous les 24 heures tolérées. Attention à la durée minimale : avec une rétention d'un an, les 180 jours de l'archive sont respectés.
- Archive : conservation longue, lecture exceptionnelle.
- Chaud : il doit être lisible immédiatement. Comme il ne restera que trois semaines, le niveau froid (30 jours minimum) ferait payer une suppression anticipée pour une économie minime. L'archive est exclue, puisqu'il faudrait jusqu'à 15 heures pour le relire.
Tu avais trouvé ?
Exercice 2 sur 4 Calculer le coût de stockage Réussi À revoir
Sorbier doit stocker 2 To (2 048 Go) de sauvegardes. Avec les prix du chapitre (France Central, LRS) :
- Calcule le coût mensuel dans chacun des quatre niveaux.
- Sorbier archive ces 2 048 Go, puis les supprime au bout de 45 jours. Quel supplément paie-t-elle pour la suppression anticipée (compte des mois de 30 jours) ?
Voir la réponseMasquer la réponse de l'exercice 2
- Chaud : 2 048 × 0,0172 = 35,23 € par mois ; froid : 2 048 × 0,0094 = 19,25 € ; très froid : 2 048 × 0,0040 = 8,19 € ; archive : 2 048 × 0,0016 = 3,28 €. L'archive coûte environ dix fois moins que le niveau chaud.
- Il manque 180 − 45 = 135 jours sur la durée minimale. Le supplément vaut 135 jours de stockage en archive : 2 048 × 0,0016 × 135 ÷ 30 = 14,75 €. Un mauvais choix de niveau peut coûter plus cher que le stockage lui-même.
Tu avais trouvé ?
Exercice 3 sur 4 Choisir la redondance Réussi À revoir
Propose une redondance pour chaque compte de stockage et justifie.
- Les fichiers temporaires d'un traitement nocturne, recalculables à partir des données sources.
- Les bons de livraison, à conserver dix ans, en France.
- Les fichiers d'une application qui doit continuer à fonctionner si un centre de données de Paris tombe.
Voir la réponseMasquer la réponse de l'exercice 3
- LRS : la moins chère ; perdre ces fichiers n'a pas de conséquence, on les recalcule.
- GRS : une copie dans la région appairée France South protège même contre la perte de la région de Paris, et les données restent en France. GRS est compatible avec le niveau archive.
- ZRS : les copies sont réparties sur trois zones de France Central, et le service continue si l'une d'elles tombe. (GZRS ajoute la copie dans une autre région.)
Tu avais trouvé ?
Exercice 4 sur 4 Revue de sécurité Réussi À revoir
Lors d'un audit, tu trouves un compte de stockage avec : l'accès public anonyme activé sur le conteneur bons-livraison, la clé d'accès du compte écrite dans le fichier config.js de l'application, aucune suppression réversible et une version minimale de TLS 1.0. Liste les risques et les corrections.
Voir la réponseMasquer la réponse de l'exercice 4
- Accès public : n'importe qui peut lire les bons de livraison, qui contiennent des noms, adresses et signatures, donc des données personnelles. C'est une violation de données au sens du RGPD. Correction : désactiver l'accès public, puis vérifier dans les journaux si des lectures anonymes ont eu lieu, et le cas échéant traiter l'incident (notification à la CNIL sous 72 heures si un risque existe pour les personnes).
- Clé dans le code : elle donne tous les droits sur le compte, et finit tôt ou tard dans un dépôt Git. Correction : faire tourner (régénérer) la clé, donner à l'application une identité managée avec le rôle Storage Blob Data Reader ou Contributor (chapitre 11), puis désactiver l'autorisation par clé partagée.
- Pas de suppression réversible : une erreur ou un rançongiciel efface définitivement. Correction : activer la suppression réversible et le versionnage, et une stratégie d'immuabilité pour les données à conserver.
- TLS 1.0 : protocole obsolète. Correction : version minimale TLS 1.2.
Tu avais trouvé ?