WIKI Retour au Portfolio

Dernière mise à jour : 25 juin 2026

6 — Storage Security (AZ-500)

Sécuriser un compte de stockage = verrouiller les trois plans (control / data / network), forcer l'identité Entra plutôt que les clés, et protéger la donnée (chiffrement, immutabilité, soft delete, menaces).


A. Modèle d'autorisation : le plan de données avant tout

Cross-ref AZ-104/305 : tu connais le compte, les blobs/files/queues/tables. Angle AZ-500 = qui peut lire/écrire la donnée et avec quelle preuve d'identité. Trois méthodes d'autorisation du data plane, par ordre de préférence sécurité :

Méthode Secret Révocable ? Quand Verdict 500
Entra ID + RBAC (OAuth) Aucun (token) Oui (retrait rôle) Apps, users, MI ✅ Préféré (pas de clé à fuiter)
User Delegation SAS Clé de délégation (Entra) Oui (révoque la user delegation key) Délégation temporaire quand SAS imposé ✅ Le « moins pire » des SAS
Service / Account SAS Account key Difficile (Stored Access Policy ou régén clé) Legacy, Files REST ⚠️ Basé sur account key
Shared Key (account key) Account key Régén clé seulement À éviter / désactiver 🚨 Accès total au compte
Anonymous / public blob Aucun Jamais (sauf static site $web) 🚨 Désactiver

🚨 Account key = accès total au compte ET capacité à générer des SAS. La compromission d'une clé = compromission de toute la donnée. 🚨 Les rôles ARM (Owner/Contributor/Storage Account Contributor) ne donnent pas accès data via Entra, MAIS ils incluent listkeys/action → ils peuvent récupérer l'account key et tout lire. Le contrôle « plan de gestion » ≠ « plan de données ».

Authorize access to data — MS Learn · SAS overview

B. RBAC data plane : les rôles à connaître

Distinguer rôles control plane (gèrent la ressource) des rôles data plane (lisent/écrivent la donnée) — c'est un piège classique.

Rôle Plan Effet
Storage Blob Data Reader Data Lecture blobs
Storage Blob Data Contributor Data Lecture/écriture/suppression blobs
Storage Blob Data Owner Data + gestion POSIX ACL (ADLS Gen2)
Storage File Data SMB Share Reader/Contributor/Elevated Contributor Data Files via SMB identity-based
Storage Account Contributor Control Gère le compte + listkeys (→ account key)
Reader and Data Access Hybride Lecture config + listkeys

🚨 generateUserDelegationKey (action Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey) est requis pour créer une User Delegation SAS. Les permissions effectives d'une UD-SAS = intersection RBAC du principal ∩ permissions du token SAS.

C. Désactiver Shared Key → forcer Entra

Propriété compte : AllowSharedKeyAccess = false → rejette toute requête signée par account key. Seules les requêtes Entra (et User Delegation SAS, qui est Entra) passent. Service/Account SAS → refusés (basés sur account key).

AllowSharedKeyAccess=false Comportement
Entra ID (RBAC) ✅ Autorisé
User Delegation SAS ✅ Autorisé (Entra-signée)
Service SAS / Account SAS ❌ Refusé (Shared Key)

🚨 Prérequis Conditional Access : pour appliquer une policy CA (MFA, device) au storage, il faut d'abord désactiver Shared Key. Une account key ignore CA. 🚨 Impact Azure Files / Cloud Shell : le portail utilise Shared Key par défaut pour Files ; désactiver sans RBAC correct casse l'accès aux file shares et au Cloud Shell (qui persiste dans un file share). Migrer/autoriser avant. 🚨 AllowSharedKeyAccess est null par défaut → traité comme true. Le « non configuré » n'est PAS « désactivé ».

Prevent Shared Key authorization

D. Access keys du compte : rotation & Key Vault

Deux clés (key1/key2) pour rotation sans coupure : régénérer key2 pendant que les apps utilisent key1, basculer, régénérer key1.

  • Si on doit utiliser des clés (connection strings legacy) : les stocker dans Key Vault, jamais en clair / hardcodées.
  • Key Vault managed storage account keys (auto-rotation) : KV stocke les deux clés comme versions d'un même secret et régénère automatiquement la clé alternée via Event Grid SecretNearExpiry → Function App (rôle Storage Account Key Operator Service). Zéro-touch.

🚨 La meilleure « gestion de clés » reste de ne pas en avoir : Entra + Managed Identity. KV-managed keys est un palliatif pour les workloads qui exigent une connection string.

Manage storage account keys — protect · Auto-rotation tutorial

E. Azure Files : choisir la méthode d'accès

Files n'est pas Blob : SMB → Kerberos / NTFS, pas RBAC data plane sur les objets. Modèle à deux couches : RBAC share-level (qui monte le share) puis NTFS/Windows ACL (permissions fichier/dossier).

Identity source Hébergement DC Identités Connectivité DC requise Cas
AD DS (on-prem) Client (on-prem/VM) Hybrides (sync Entra) Oui (ligne de vue AD) File server lift-and-shift
Microsoft Entra Domain Services Managé Microsoft Entra (= EDS) Oui (DC dans Azure) Lift-and-shift sans AD propre
Entra Kerberos (hybride/cloud-only) Aucun (Entra émet tickets) Hybrides ou cloud-only Non (accès via Internet) VM Entra-joined, accès distant
Storage key 🚨 À éviter (accès total)
  • Share-level RBAC : rôles Storage File Data SMB Share Reader/Contributor/Elevated Contributor, ou default share permission pour tous les authentifiés.
  • NTFS : configuré via File Explorer / icacls (AD DS, EDS, Entra Kerberos hybride) ou portail/PowerShell RestSetAcls (Entra Kerberos).
  • AES-256 Kerberos requis (AES-128 non supporté). Identity-based non supporté sur shares NFS.

🚨 Hybride : il faut synchroniser users ET groupes (Entra Connect Sync / Cloud Sync) — le share-level se résout contre l'identité Entra, le NTFS contre l'AD DS ; même utilisateur hybride des deux côtés.

Files identity-based auth overview · Assign share-level permissions

F. Réseau : firewall, Private Endpoint, public access

Stratégie : zéro accès public, autoriser de façon incrémentale.

Contrôle Effet sécurité
Public network access = Disabled Coupe l'endpoint public ; accès via Private Endpoint uniquement
Selected networks (firewall) Autorise VNets (service endpoints) + plages IP ; refuse le reste
Private Endpoint IP privée du VNet par service (blob/file/…) ; trafic backbone, pas d'Internet ; anti-exfiltration
Trusted Microsoft services exception Laisse passer Defender, File Sync, Backup… quand firewall actif
Secure transfer required (HTTPS) Rejette HTTP (défaut activé)
Min TLS 1.2 Refuse TLS 1.0/1.1
AllowBlobPublicAccess = false Interdit l'accès anonyme au niveau compte (override containers)

🚨 Créer un Private Endpoint ne bloque pas automatiquement l'endpoint public — il faut explicitement désactiver/firewaller le public. 🚨 AllowBlobPublicAccess=false n'affecte pas le container $web (static site, toujours public). 🚨 Combiner avec un Resource Manager lock (CanNotDelete) : empêche la suppression du compte (pas la donnée).

Storage network security overview · Use private endpoints · Disallow anonymous access

G. Protection de la donnée : soft delete, versioning, immutabilité

Défense contre suppression accidentelle/malveillante et ransomware.

Feature Portée Rôle sécurité
Soft delete blob/container Blob, container, snapshot Restauration pendant rétention (récup ransomware)
Soft delete share Azure Files Idem pour file shares
Versioning Blob Conserve versions ; prérequis version-level WORM
Immutable storage (WORM) Blob (block/append) Time-based retention + Legal hold → write/delete bloqués
Backups Vault Copie indépendante (immutable vault, MUA)

Immutabilité WORM — deux saveurs :

  • Container-level WORM : policy au container (time-based + legal hold) ; aucun prérequis.
  • Version-level WORM : policy account/container/version ; versioning requis ; précédence Blob → Container → Account.

États time-based retention :

  • Unlocked : protège write/delete MAIS modifiable/supprimable → test seulement.
  • Locked : conforme SEC 17a-4(f) / FINRA / CFTC ; on peut étendre la rétention, jamais la réduire ni supprimer. Verrouiller < 24 h après test.

🚨 Activer soft delete AVANT les policies d'immutabilité (protection supplémentaire). Un blob déjà soft-deleted sera purgé à expiration malgré WORM. 🚨 WORM incompatible avec point-in-time restore et last-access tracking ; non supporté sur NFS/SFTP ; version-level pas (encore) sur hierarchical namespace (ADLS).

Immutable storage overview · Security recommendations Blob — data protection

H. Chiffrement : SSE, CMK (BYOK), double encryption

Toute donnée at-rest est chiffrée par défaut (SSE, AES-256, FIPS 140-2, Microsoft-managed keys). Angle 500 = qui contrôle la clé.

Niveau Clé Quand
SSE Microsoft-managed Microsoft Défaut, rotation gérée par MS
CMK / BYOK (service-level) Toi (Key Vault / Managed HSM) Contrôle, audit, révocation, rotation auto
Infrastructure encryption (double) Microsoft (clé séparée) 2e couche AES-256, à activer à la création
  • CMK : Key Vault + Managed Identity (system/user-assigned) pour que le compte accède à la clé. KV/HSM peut être dans tenant/région/abonnement différent.
  • Auto-rotation CMK : si on configure CMK sans préciser la version, Azure prend la nouvelle version sous 24 h (combiner avec KV key autorotation). Si version figée → rotation manuelle.
  • Infrastructure encryption = double chiffrement (service + infra, 2 algos, 2 clés). Ne s'active qu'à la création du compte ou de l'encryption scope.

🚨 Prérequis KV pour CMK : soft delete + purge protection activés (sinon perte de clé = perte d'accès donnée). Attendre 24 h avant de désactiver l'ancienne version. 🚨 Disk Encryption (ADE) ne s'applique pas ici — c'est pour les disques VM, pas les comptes de stockage.

Customer-managed keys overview · Infrastructure encryption

I. Microsoft Defender for Storage (détection menaces)

Couche de détection Azure-native (Defender for Cloud). Voir fiche 9 pour Defender for Cloud global.

  • Agentless, activable au niveau abonnement (tous comptes) ou par compte ; pas besoin d'activer les resource logs (analyse data + control plane telemetry).
  • Activity monitoring : anomalies (IP malicieuses, Tor, SAS compromis/fuités, exfiltration, suppression de masse, blob-hunting).
  • Malware scanning (add-on, payant/GB, MDAV) : on-upload + on-demand ; détecte ransomware/virus dans les blobs.
  • Sensitive data threat detection : priorise les alertes selon sensibilité (Sensitive Data Discovery / Purview SITs).
  • Hash reputation analysis : tous plans, compare hash aux signatures connues (mais pas SMB Files, pas Put Block).

🚨 Defender for Storage détecte, ne prévient pas — il complète (pas remplace) le durcissement (Entra, no-public, WORM). Alertes → Sentinel/SIEM.

What is Defender for Storage


🏢 Scénarios d'entreprise (CAF/WAF)

Scénario 1 : Bancaire — rétention réglementaire WORM des relevés

Contexte business : Une banque doit garder 7 ans de relevés en « écriture unique » (WORM), prouvable à un auditeur. Même un admin ne doit pas pouvoir les modifier ou les supprimer avant terme. Choix architectural : Verrouiller chaque version du blob en WORM pendant 7 ans, et n'autoriser l'accès que via Entra ID (plus de clés de compte). Architecture / pattern :

  • Versioning activé → WORM version-level, rétention 7 ans, policy verrouillée (Locked) après test
  • Soft delete activé d'abord : filet contre les suppressions accidentelles avant le verrouillage
  • Clés de compte désactivées (AllowSharedKeyAccess=false)
  • Accès des apps via Entra ID + Managed Identity Trade-offs assumés :
  • Gain : inaltérabilité prouvable à l'auditeur, aucune clé partagée à voler
  • Perte : une fois Locked, on ne peut plus réduire la durée ; stockage payé 7 ans Pièges à éviter :
  • Verrouiller sans phase de test (Unlocked) : une mauvaise durée devient impossible à corriger
  • Oublier le versioning : le WORM version-level en dépend
  • Couper AllowSharedKeyAccess avant d'avoir migré les apps vers Entra → apps legacy cassées 📐 Réf. CAF/WAF — WAF Security, service guide Blob Storage : « Protect critical objects: apply immutability policies… for legal, compliance, or other business purposes. » Lien

Scénario 2 : SaaS — storage accessible au backend seul, zéro clé

Contexte business : Un SaaS multi-tenant veut zéro secret et zéro storage exposé sur Internet, mais doit parfois laisser un client télécharger un fichier. Choix architectural : Storage privé (pas d'accès public + Private Endpoint), accès backend par Managed Identity, et téléchargement client par lien temporaire (SAS court). Architecture / pattern :

  • Public network access = Disabled + Private Endpoint par service
  • Shared Key désactivée → seul Entra ID autorisé
  • Backend via Managed Identity + RBAC Storage Blob Data Contributor scopé au conteneur
  • Téléchargement client → User Delegation SAS court (+ SAS expiration policy)
  • Defender for Storage + scan malware à l'upload des fichiers utilisateurs Trade-offs assumés :
  • Gain : aucun secret à gérer, storage invisible depuis Internet, menaces détectées sur les uploads
  • Perte : réseau plus complexe (DNS privé, un PE par service), surcoût Defender + scan facturé au Go Pièges à éviter :
  • Private Endpoint sans DNS privé correct → la connexion retombe sur l'IP publique, qui est bloquée
  • User Delegation SAS basée sur une identité trop large → grosse fuite si le token est volé
  • Oublier le PE du bon sous-service (blob, file, dfs) : chacun a son propre endpoint 📐 Réf. CAF/WAF — MCSB Data Protection (security baseline Storage) : DP-2 « Defender for Storage continually analyzes the telemetry stream… security alerts are generated. » Lien

Scénario 3 : Santé — file share hybride + clés du client

Contexte business : Un hôpital migre un file server NTFS. Il veut garder ses droits d'accès AD existants et chiffrer avec ses propres clés (souveraineté). Choix architectural : Azure Files avec authentification AD DS, droits sur deux niveaux (share + NTFS), et chiffrement avec clé client (CMK) + double chiffrement. Architecture / pattern :

  • Azure Files AD DS identity-based (Kerberos AES-256)
  • Share-level RBAC (qui peut monter le partage) + NTFS ACL (qui accède à quoi), mêmes identités hybrides
  • CMK dans Key Vault (soft delete + purge protection), accédée par Managed Identity
  • Infrastructure encryption (double chiffrement) activée à la création
  • Soft delete du share activé Trade-offs assumés :
  • Gain : mêmes droits AD qu'avant, clés maîtrisées et révocables, double chiffrement at-rest
  • Perte : si Key Vault tombe ou la clé est révoquée, le share devient inaccessible ; double chiffrement non activable après coup Pièges à éviter :
  • Vouloir activer l'infrastructure encryption après création : impossible, c'est à la création du compte
  • CMK sans purge protection : une clé supprimée = données irrécupérables
  • Confondre share-level RBAC et NTFS ACL → droits effectifs mal calculés 📐 Réf. CAF/WAF — WAF Security, service guide Blob Storage (encryption) : « Consider using your own encryption key… store encryption keys in Key Vault and automatically rotate them. » Lien

DEMO — chemins portail

1. Désactiver Shared Key + anonymous (forcer Entra)

Storage accountSettingsConfigurationAllow Blob anonymous access = Disabled, Allow storage account key access = DisabledSave. (Vérifier au préalable que les apps utilisent Entra/MI, sinon coupure Files/Cloud Shell.)

2. Verrouiller le réseau (firewall + Private Endpoint)

Storage accountSecurity + networkingNetworking → onglet Firewalls and virtual networks : Public network access = Disabled (ou Enabled from selected networks, cocher Allow trusted Microsoft services) → Save. Puis onglet Private endpoint connections+ Private endpoint → choisir Target sub-resource (blob/file…), VNet/subnet, DNS privé → Create.

3. Activer soft delete + immutabilité WORM

Storage accountData managementData protection → cocher Enable soft delete for blobs / containers / file shares (définir rétention) + Enable versioning. Pour WORM : conteneur → Access policyAdd policy (Time-based retention, jours) → tester en UnlockedLock policy quand prêt.

4. Chiffrement CMK (BYOK) + infrastructure encryption

À la création : Create storage account → onglet EncryptionEncryption type = Customer-managed keys, sélectionner Key Vault + clé + Managed Identity ; cocher Enable infrastructure encryption (double). (Infra encryption impossible après création.) Sur compte existant : Security + networkingEncryption → CMK uniquement.

5. Activer Microsoft Defender for Storage

Microsoft Defender for CloudEnvironment settings → abonnement → plan Storage = OnSettings : activer Malware scanning (cap GB/mois) + Sensitive data threat detection. Ou par compte : Storage accountSecurity + networkingMicrosoft Defender for CloudEnable.