WIKI Retour au Portfolio

Dernière mise à jour : 23 juin 2026

14 — Pièges & Commandes

À relire avant l'exam : les pièges les plus fréquents + les commandes clés.


PARTIE 1 — Pièges récurrents (par thème)

Identity / Entra / RBAC

  • 🚨 App Registration ≠ Enterprise App : App Reg = définition de l'app ; Enterprise App = instance/Service Principal. App SaaS tierce = Enterprise App seule.
  • 🚨 Managed Identity SA vs UA : SA supprimée avec la ressource (1:1) ; UA indépendante, partageable, persiste.
  • 🚨 Cocher "roles can be assigned to the group" = uniquement à la création, irréversible, P1 requis. Idem Restricted Management AU.
  • 🚨 Pas de licence sans Usage Location sur l'user. UsageLocation = attribut Entra-only (modifiable même pour users hybrid synced) ; Department/Job Title = on-prem only.
  • 🚨 Groupe dynamique ne mixe pas users + devices (un seul type).
  • 🚨 Tenant Root : un Global Admin n'a pas accès auto aux ressources Azure → activer Access management for Azure resources.
  • 🚨 Azure RBAC ≠ Entra Roles : RBAC = ressources Azure ; Entra Roles = objets Entra (users/groupes/apps).
  • 🚨 Owner = Contributor + gestion des accès. Contributor ne gère NI les accès NI les locks.
  • 🚨 NotActions ≠ Deny (simple exclusion de l'allow). Permissions cumulatives (union). Deny assignment > Role assignment (rare).
  • 🚨 Custom RBAC role → Owner/User Access Admin. Custom Entra role → P1 + Global/Privileged Role Admin.
  • 🚨 Least-privilege FinOps/IaC : Resource Policy Contributor (Policy), Cost Management Contributor, Reservation Administrator ≠ Contributor plein.
  • 🚨 Security Defaults ↔ Conditional Access mutuellement exclusifs (activer une CAP désactive Security Defaults). Toujours exclure un compte break-glass des CAP.
  • Licences : P1 = CA, SSPR, Dynamic Groups, AU, group-licensing, custom roles · P2 = +Identity Protection, PIM, Access Reviews.

Network (VNet / NSG / Peering / SE-PE)

  • 🚨 5 IPs réservées par subnet (/24 = 251 utilisables). Noms réservés exacts : GatewaySubnet, AzureBastionSubnet, AzureFirewallSubnet, RouteServerSubnet.
  • 🚨 NSG NIC + NSG Subnet en série, le plus restrictif gagne. Inbound : Subnet→NIC ; Outbound : NIC→Subnet. Stateful (retour auto).
  • 🚨 Default rules non supprimables (65000+). ASG = NICs même VNet uniquement. Pas de Service Tag custom.
  • 🚨 Peering NON transitif (A↔B + B↔C ≠ A↔C → hub-spoke NVA ou vWAN). Bilatéral (config A→B ET B→A). Non chiffré par défaut.
  • 🚨 Private Endpoint sans Private DNS Zone → résout l'IP publique. Toujours intégrer la zone (privatelink.<service>).
  • 🚨 Service Endpoint = niveau subnet, tous comptes du type, pas d'IP privée, pas d'accès on-prem. Private Endpoint = 1 ressource, IP privée, accès on-prem via VPN/ER.
  • 🚨 UDR > BGP > System routes (la plus spécifique gagne). NVA = IP forwarding activé sur la NIC. Route table associée au subnet.
  • 🚨 Standard Public IP = Static obligatoire + inbound bloqué par défaut. NAT GW recommandé pour outbound (default outbound retiré pour nouveaux VNets après 31 mars 2026).
  • Private DNS auto-registration = 1 seul VNet par zone. Import zone file = CLI + Portail uniquement.

VM (Disks / AS-AZ / Encryption)

  • 🚨 Stopped vs Deallocated : Stopped (OS) = compute payé ; Deallocated (bouton/az vm deallocate) = compute non payé, storage payé.
  • 🚨 Deallocated consomme TOUJOURS le quota vCPU. Libérer le quota = delete la VM.
  • 🚨 Inchangeables : nom, VNet, region. Cross-region = pas de move direct (ASR/snapshot+recreate). Resize = stoppe la VM.
  • 🚨 OS Disk resize = vers le haut uniquement, VM deallocated. Temp Disk (D:) non persistant. Gen 2 requis (Trusted Launch / Confidential).
  • 🚨 Ultra Disk & Premium SSD v2 = Data disks only. Convert type = VM stoppée. CMK = DES + KV (soft-delete + purge protection).
  • 🚨 AS et AZ ne se combinent pas. VM existante NE PEUT être ajoutée à un AS. FD/UD non modifiables après création. AS = même region + RG.
  • 🚨 VMSS mode (Uniform/Flexible) immuable. Resize 1 instance Uniform = redémarre toutes. Flexible = recommandé MS.
  • 🚨 Encryption at Host = feature à registrer sur la sub. SSE = always-on, gratuit. ADE+KEK → access policy sur le RP Azure Disk Encryption.

Storage (SAS / Redundancy / Tiers / Immutable)

  • 🚨 HNS (Data Lake Gen2) = coché à la création, irréversible.
  • 🚨 Archive tier = rehydratation (1-15h) avant lecture. Min retention : Cool 30j, Cold 90j, Archive 180j (early deletion fees).
  • 🚨 Premium Block Blob = pas d'access tiers. Append blob ne supporte pas les tiers.
  • 🚨 Anonymous public access désactivé par défaut (nov 2023).
  • 🚨 Object Replication ≠ GRS : GRS = regional pair imposé ; Object Replication = region spécifique (compliance). Prérequis OR : Versioning + Change Feed, SA GPv2/Premium Block Blob. Pas de réplication des blobs Archive.
  • 🚨 Failover Storage = passe en LRS (perd le geo). Immutable Time-based Locked = irréversible.
  • 🚨 ContributorStorage Blob Data Contributor : control plane (gère le SA) vs data plane (accès blobs).
  • 🚨 User Delegation SAS recommandé (ne dépend pas de l'access key). Max 5 stored access policies. Désactiver Shared Key en prod.
  • 🚨 AzCopy auth = SAS ou Entra uniquement (pas Kerberos/API key). NFS share = FileStorage + privé obligatoire.
  • 🚨 Azure Files identity = 3 méthodes exclusives (AD DS / Entra DS / Entra Kerberos). File Sync : 1 sync group = 1 cloud endpoint ; 1 server = max 1 endpoint par sync group.

App Service

  • 🚨 Slots à partir de Standard (Std=5, Pv3=20). Plan = même région, ne mixe pas Linux+Windows. PE sur slots non supporté (slot prod uniquement).
  • 🚨 VNet Integration = subnet dédié + délégué Microsoft.Web/serverFarms, /27 min. Hybrid Connections = TCP via 443 uniquement.
  • 🚨 WAF absent d'App Service → App Gateway v2 WAF ou Front Door WAF Premium devant. Slot settings (sticky) = restent dans leur slot au swap.

Containers (AKS / ACR)

  • 🚨 HPA AKS nécessite Metrics Server (pas Dashboard, pas Cluster Autoscaler = scale nodes ≠ pods). CNI Overlay préféré à Kubenet.
  • 🚨 ACR Premium requis pour geo-replication, Private Endpoint, Content Trust, CMK. Premium→Standard : supprimer geo-rep + PE d'abord.
  • 🚨 ACI = pas de scale/LB/stateful natif. ACA = scale-to-zero, pas d'accès K8s direct. ACA subnet : workload profiles /27, consumption /23 (type figé à la création).

Load Balancing (LB / AppGW / FD / Bastion)

  • 🚨 Standard LB outbound bloqué par défaut → outbound rule ou NAT GW. SKU LB doit matcher SKU Public IP + VMs backend.
  • 🚨 App Gateway = subnet dédié /27 min. AzureBastionSubnet /26 min.

Governance (Policy / KV / Locks / Cost)

  • 🚨 Tags PAS hérités par défaut (RG ne descend pas). Inheritance : Cost Mgmt (billing only) ou Azure Policy Inherit a tag from RG (modifie réellement). Max 50 tags.
  • 🚨 Locks : le plus restrictif gagne, hérités, ne bloquent PAS le data plane (ReadOnly Storage = upload blob OK). Contributor ne modifie pas les locks.
  • 🚨 Budget = alerte uniquement, n'arrête rien. Policy Modify/DINE = Managed Identity + remediation task pour ressources existantes.
  • 🚨 ARM mode Complete = DANGEREUX (supprime non listées). Incremental = default safe. What-if = simule.
  • 🚨 6 niveaux de MGs max. Move resources cross-region = pas natif. RBAC/Locks non déplacés ; Tags conservés ; source+dest locked pendant le move.
  • 🚨 Key Vault : API 2026-02-01 → nouveaux KV en Azure RBAC par défaut. Soft-delete non désactivable. Purge protection irréversible. CMK = soft-delete + purge protection. Owner/Contributor ≠ accès data.

Backup / DR (RSV / MARS / ASR)

  • 🚨 Backup ≠ ASR : Backup = données ; ASR = continuité (VM up ailleurs). DR cross-region → ASR (pas Backup).
  • 🚨 RSV redundancy verrouillée après 1ère protection. RSV régional (même région). MARS passphrase perdue = backups perdus.
  • 🚨 ASR exige managed disks (convertir unmanaged d'abord). Test failover = VNet isolé (pas le prod).
  • 🚨 ASR failover réel (3 actions) : Verify protected/healthy → Run failover → Reprotect. CRR requiert vault GRS.

Monitoring (LAW / Alerts / Flow logs)

  • 🚨 Diagnostics extension dépréciée 31 mars 2026 → AMA + DCRs. MMA déjà retiré (août 2024).
  • 🚨 NSG Flow Logs → VNet Flow Logs (création NSG FL bloquée juin 2025).
  • 🚨 Service Health = panne MS ; Resource Health = ta ressource. App Insights : Agent (no-code) vs SDK (code), Profiler = slow requests.
  • Rétentions : Activity Log 90j · Metrics 93j · LAW 30j gratuit (730j max). 5 diagnostic settings max par ressource.

Confusions classiques (X vs Y)

Service Endpoint Private Endpoint
Niveau Subnet Ressource
IP privée dans VNet
Accès on-prem ✅ (VPN/ER)
Contributor Storage Blob Data Contributor
Plane Control (gère le SA) Data (accès blobs)
Backup ASR
Rôle Sauvegarde données Continuité (VM up ailleurs)
Cross-region DR

Dates de retraite à connaître

Feature Date
Basic Public IP / Basic LB retiré 30 sept 2025
Legacy MFA per-user / SSPR auth methods 30 sept 2025
VpnGw1-5 (non-AZ) création bloquée 1 nov 2025
BlobStorage legacy création bloquée 3 mars 2026
Default outbound access (nouveaux VNets) 31 mars 2026
Diagnostics extension dépréciée 31 mars 2026
App Gateway v1 28 avr 2026
VPN GW Standard/High Perf 30 juin 2026
Standard HDD 1 sept 2026
GPv1 13 oct 2026
Identity Protection legacy policies 1 oct 2026
NSG Flow Logs 30 sept 2027
ADE (→ Encryption at Host) 15 sept 2028

PARTIE 2 — Commandes essentielles (CLI az + PowerShell Az)

Login & contexte

az login                                    # browser
az login --identity                         # MI System-Assigned
az login --identity --username <client-id>  # MI User-Assigned
az account set --subscription "My Sub"

PowerShell : Connect-AzAccount · Connect-AzAccount -Identity · Set-AzContext -Subscription "My Sub"

Identity / RBAC (az ad / az role)

az role assignment create --assignee [email protected] --role "Virtual Machine Contributor" --scope /subscriptions/<sub>
az role assignment list --assignee [email protected] --all -o table
az role definition create --role-definition ./customrole.json   # Owner/User Access Admin requis

PowerShell : New-AzRoleAssignment -SignInName [email protected] -RoleDefinitionName "Reader" -ResourceGroupName myrg Graph (Entra) : Connect-MgGraph -Scopes "User.ReadWrite.All" · New-MgUser · New-MgGroupMember -GroupId <gid> -DirectoryObjectId <uid>

Network (vnet / nsg / peering / private-endpoint)

az network vnet create -g myrg -n myvnet --address-prefix 10.0.0.0/16 --subnet-name s1 --subnet-prefix 10.0.1.0/24
az network nsg rule create -g myrg --nsg-name mynsg -n AllowSSH --priority 100 --access Allow \
  --protocol Tcp --source-address-prefixes Internet --destination-port-ranges 22
az network vnet subnet update -g myrg --vnet-name myvnet -n s1 --network-security-group mynsg
az network public-ip create -g myrg -n myip --sku Standard --allocation-method Static --zone 1 2 3
az network vnet peering create -g myrg -n a-to-b --vnet-name vnet-a --remote-vnet vnet-b --allow-vnet-access
az network route-table route create -g myrg --route-table-name myrt -n def \
  --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address 10.0.0.4
az network private-endpoint create -g myrg -n mype --vnet-name myvnet --subnet s1 \
  --private-connection-resource-id <sa-id> --group-id blob --connection-name conn

VM / VMSS

az vm create -g myrg -n myvm --image Ubuntu2204 --size Standard_B2s \
  --admin-username azureuser --generate-ssh-keys --public-ip-sku Standard
az vm deallocate -g myrg -n myvm            # ❌ compute (≠ az vm stop = payé)
az vm resize -g myrg -n myvm --size Standard_D4s_v5
az vm run-command invoke -g myrg -n myvm --command-id RunShellScript --scripts "uptime"  # sans SSH/RDP
az disk update -g myrg -n mydisk --size-gb 256        # resize vers le haut, VM deallocated
az vmss create -g myrg -n myvmss --orchestration-mode Flexible --image Ubuntu2204 --instance-count 3
az vmss scale -g myrg -n myvmss --new-capacity 5

PowerShell : Stop-AzVM ... -Force (deallocate) · Stop-AzVM ... -StayProvisioned (stopped, payé)

Storage

az storage account create -g myrg -n mysa --sku Standard_GRS --kind StorageV2 \
  --allow-blob-public-access false --min-tls-version TLS1_2
az storage blob upload -f ./f.txt -c c1 -n f.txt --account-name mysa --auth-mode login
az storage blob set-tier -c c1 -n f.txt --tier Cool --account-name mysa --auth-mode login
az storage container generate-sas -n c1 --permissions r --expiry 2026-12-31 \
  --account-name mysa --auth-mode login --as-user      # User Delegation SAS

AzCopy : azcopy login · azcopy copy "./folder" "https://mysa.blob.core.windows.net/c1/" --recursive · azcopy sync ...

App Service (az webapp)

az appservice plan create -g myrg -n myplan --sku S1                 # slots à partir de Standard
az webapp create -g myrg -p myplan -n myapp --runtime "NODE:20-lts"
az webapp deployment slot create -g myrg -n myapp --slot staging
az webapp deployment slot swap -g myrg -n myapp --slot staging --target-slot production
az webapp vnet-integration add -g myrg -n myapp --vnet myvnet --subnet integ-subnet  # /27 délégué

Containers (az aks / az acr)

az aks create -g myrg -n myaks --node-count 2 --enable-managed-identity --enable-aad
az aks get-credentials -g myrg -n myaks
az aks update -g myrg -n myaks --attach-acr myacr
az acr create -g myrg -n myacr --sku Standard
az acr build --registry myacr --image app:v1 .
az acr update -n myacr --sku Premium                                 # geo-rep / PE / CMK
az containerapp create -g myrg -n myapp --environment myenv --image nginx --target-port 80 --ingress external

kubectl : kubectl get pods -A · kubectl scale deployment myapp --replicas=5 · kubectl rollout undo deployment/myapp

Governance (az group / az policy / az lock)

az group create -n myrg -l eastus
az policy assignment create --name require-tag --policy <policy-id> --scope /subscriptions/<sub>
az policy state trigger-scan --resource-group myrg
az lock create -n protect --lock-type CanNotDelete -g myrg
az resource move --destination-group target-rg --ids <resource-id>
# Deploy (Incremental par défaut ; Complete = dangereux)
az deployment group create -g myrg --template-file main.bicep --parameters @params.json
az deployment group what-if -g myrg --template-file main.bicep
az bicep build --file main.bicep

PowerShell : Test-AzResourceGroupDeployment ... (validate) · New-AzResourceGroupDeployment ...

Key Vault

az keyvault create -g myrg -n myvault --enable-rbac-authorization --enable-purge-protection
az keyvault secret set --vault-name myvault -n mysecret --value "x"
az keyvault list-deleted ; az keyvault recover --name myvault ; az keyvault purge --name myvault

Backup / ASR (az backup)

az backup vault create -g myrg -n myvault -l eastus
az backup protection enable-for-vm -g myrg -v myvault --vm myvm --policy-name DefaultPolicy
az backup protection backup-now -g myrg -v myvault --container-name myvm --item-name myvm \
  --backup-management-type AzureIaasVM

Monitor & feature register

az monitor diagnostic-settings create --name diag --resource <id> --workspace <law-id> --logs '[...]'
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
az provider register --namespace Microsoft.Compute

Généraliser une VM avant capture

# Windows : C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown
sudo waagent -deprovision+user && sudo shutdown now   # Linux (+user supprime aussi les comptes)

PARTIE 3 — Quick wins (mémorisation)

Limites par défaut

Élément Valeur
IPs réservées / subnet 5
Tags / ressource 50
Diagnostic settings / ressource 5
Stored access policies 5
App Service slots Std 5, Pv3 20
AS Fault / Update Domains FD 3, UD 20
Soft-delete RSV / blob 14j / 7j

Subnets nommés (spelling exact + taille min)

GatewaySubnet /27 · AzureBastionSubnet /26 · AzureFirewallSubnet /26 · RouteServerSubnet /27

Subnets délégués

App Service VNet integration → Microsoft.Web/serverFarms · DNS Private Resolver → Microsoft.Network/dnsResolvers · ACI → Microsoft.ContainerInstance/containerGroups · NetApp → Microsoft.NetApp/volumes

Ports

443 HTTPS / Hybrid Connections · 3389 RDP · 22 SSH · 80 HTTP · 1433 SQL · 5671/5672 AMQP (Service Bus)

Network Watcher → use case

Outil Use case
IP Flow Verify NSG bloque-t-il ce flux ?
Next Hop Où va le trafic (UDR debug) ?
Connection Troubleshoot Test bout-en-bout one-shot
Connection Monitor Surveillance continue
Packet Capture Capture pcap distante

Workflow réflexes

  • VM ne démarre pas → Boot diagnostics (screenshot/serial)
  • Connexion bloquée → IP Flow Verify
  • DR cross-region → ASR (pas Backup)
  • App on-prem → internet sans VPN → Application Proxy
  • App Azure → DB privée dans VNet → VNet Integration
  • App Azure → 1 host on-prem précis → Hybrid Connections
  • Onboarding identité externe → B2B Collaboration · Trust org-to-org Teams → B2B Direct Connect · Grand public → External ID for Customers (ex B2C)