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