Module 4 : Stockage Azure

Types de stockage Azure


+----------------------------------------------------------+
|                    SERVICES DE STOCKAGE                   |
+----------------------------------------------------------+
|                                                           |
|   Storage Account                                         |
|       |                                                   |
|       +-- Blob Storage (objets, fichiers)                |
|       +-- File Storage (partages SMB/NFS)                |
|       +-- Queue Storage (files de messages)              |
|       +-- Table Storage (NoSQL simple)                   |
|                                                           |
|   Data Lake Storage Gen2 = Blob + Hierarchical Namespace |
|                                                           |
+----------------------------------------------------------+
            

Azure Data Lake Storage Gen2

ADLS Gen2 est la référence pour les plateformes data :
  • Hierarchical Namespace (vrais dossiers)
  • Permissions ACL granulaires
  • Performance optimisée pour Big Data
  • Compatible Hadoop/Spark
# Créer un Storage Account ADLS Gen2 (PowerShell)
az storage account create --name stfolabdev001 --resource-group rg-folab-dev --location westeurope --sku Standard_LRS --kind StorageV2 --hns true --enable-hierarchical-namespace true --tags Project=FOLAB Env=Dev

# Créer un container (filesystem)
az storage fs create --name datalake --account-name stfolabdev001 --auth-mode login

# Créer des répertoires
az storage fs directory create --name raw --file-system datalake --account-name stfolabdev001 --auth-mode login

az storage fs directory create --name curated --file-system datalake --account-name stfolabdev001 --auth-mode login

az storage fs directory create --name semantic --file-system datalake --account-name stfolabdev001 --auth-mode login
Version Bash (cliquez pour afficher)
# Créer un Storage Account ADLS Gen2
az storage account create \
    --name stfolabdev001 \
    --resource-group rg-folab-dev \
    --location westeurope \
    --sku Standard_LRS \
    --kind StorageV2 \
    --hns true \
    --enable-hierarchical-namespace true \
    --tags Project=FOLAB Env=Dev

# Créer un container (filesystem)
az storage fs create \
    --name datalake \
    --account-name stfolabdev001 \
    --auth-mode login

# Créer des répertoires
az storage fs directory create \
    --name raw \
    --file-system datalake \
    --account-name stfolabdev001 \
    --auth-mode login

az storage fs directory create \
    --name curated \
    --file-system datalake \
    --account-name stfolabdev001 \
    --auth-mode login

az storage fs directory create \
    --name semantic \
    --file-system datalake \
    --account-name stfolabdev001 \
    --auth-mode login

Architecture Medallion dans ADLS


stfolabdev001/datalake/
|
+-- raw/                    # BRONZE - Données brutes
|   +-- esg/
|   |   +-- 2025/01/15/esg_scores.json
|   +-- portfolios/
|   |   +-- 2025/01/15/positions.csv
|   +-- market_data/
|       +-- 2025/01/15/prices.csv
|
+-- curated/                # SILVER - Données nettoyées
|   +-- esg/
|   |   +-- year=2025/month=01/part-00000.parquet
|   +-- portfolios/
|       +-- year=2025/month=01/part-00000.parquet
|
+-- semantic/               # GOLD - Données métier
    +-- kpis/
    |   +-- daily_performance.parquet
    +-- reports/
        +-- esg_summary.parquet
            

Niveaux d'accès (Tiers)

Tier Latence Cout stockage Cout accès Usage
Hot Faible Élevé Faible Données actives
Cool Faible Moyen Moyen Acces occasionnel (30j+)
Cold Faible Bas Élevé Acces rare (90j+)
Archive Heures Tres bas Tres eleve Archivage long terme

Lifecyclé Management

# Politique de cyclé de vie (JSON)
{
  "rules": [
    {
      "name": "move-to-cool",
      "type": "Lifecyclé",
      "definition": {
        "filters": {
          "blobTypes": ["blockBlob"],
          "prefixMatch": ["datalake/raw/"]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": {"daysAfterModificationGreaterThan": 30},
            "tierToArchive": {"daysAfterModificationGreaterThan": 180},
            "delete": {"daysAfterModificationGreaterThan": 365}
          }
        }
      }
    }
  ]
}

# Appliquer la politique (PowerShell)
az storage account management-policy create --account-name stfolabdev001 --resource-group rg-folab-dev --policy @lifecyclé-policy.json
Version Bash (cliquez pour afficher)
# Appliquer la politique
az storage account management-policy create \
    --account-name stfolabdev001 \
    --resource-group rg-folab-dev \
    --policy @lifecyclé-policy.json

ACL (Access Control Lists)

Permissions fines au niveau fichier/dossier dans ADLS Gen2 :

# Définir les ACL sur un dossier (PowerShell)
az storage fs accèss set --acl "user::rwx,group::r-x,other::---,user:jean@mycompany.com:rwx" --path raw/esg --file-system datalake --account-name stfolabdev001 --auth-mode login

# Voir les ACL
az storage fs accèss show --path raw/esg --file-system datalake --account-name stfolabdev001 --auth-mode login

# ACL par défaut (hérités par les nouveaux fichiers)
az storage fs accèss set --acl "default:user::rwx,default:group::r-x,default:other::---" --path raw --file-system datalake --account-name stfolabdev001 --auth-mode login
Version Bash (cliquez pour afficher)
# Définir les ACL sur un dossier
az storage fs accèss set \
    --acl "user::rwx,group::r-x,other::---,user:jean@mycompany.com:rwx" \
    --path raw/esg \
    --file-system datalake \
    --account-name stfolabdev001 \
    --auth-mode login

# Voir les ACL
az storage fs accèss show \
    --path raw/esg \
    --file-system datalake \
    --account-name stfolabdev001 \
    --auth-mode login

# ACL par défaut (hérités par les nouveaux fichiers)
az storage fs accèss set \
    --acl "default:user::rwx,default:group::r-x,default:other::---" \
    --path raw \
    --file-system datalake \
    --account-name stfolabdev001 \
    --auth-mode login

Sécurité du stockage

Checklist sécurité stockage :
  • Désactiver l'accès par clé (utiliser Azure AD)
  • Activer le pare-feu et limiter les IPs/VNets
  • Utiliser des Private Endpoints
  • Activer le chiffrement (par défaut)
  • Activer la suppression logique (soft delete)
# Désactiver l'accès par clé de stockage (PowerShell)
az storage account update --name stfolabdev001 --resource-group rg-folab-dev --allow-shared-key-accèss false

# Activer le pare-feu
az storage account update --name stfolabdev001 --resource-group rg-folab-dev --default-action Deny

# Autoriser un VNet
az storage account network-rule add --account-name stfolabdev001 --resource-group rg-folab-dev --vnet-name vnet-folab-dev --subnet snet-data
Version Bash (cliquez pour afficher)
# Désactiver l'accès par clé de stockage
az storage account update \
    --name stfolabdev001 \
    --resource-group rg-folab-dev \
    --allow-shared-key-accèss false

# Activer le pare-feu
az storage account update \
    --name stfolabdev001 \
    --resource-group rg-folab-dev \
    --default-action Deny

# Autoriser un VNet
az storage account network-rule add \
    --account-name stfolabdev001 \
    --resource-group rg-folab-dev \
    --vnet-name vnet-folab-dev \
    --subnet snet-data