1 — Identity & Access Controls (AZ-500)
Sécuriser l'accès aux ressources Azure via RBAC, rôles personnalisés, accès privilégié juste-à-temps (PIM), MFA et Conditional Access, selon les principes Zero Trust et le moindre privilège.
A. Azure RBAC — angle sécurité
Bases du modèle (héritage de scope, role assignment = principal + role definition + scope) → AZ-104. Ici on cible la séparation des devoirs et le qui peut élever.
Les 5 rôles fondamentaux + rôles sécurité clés :
| Rôle | Peut assigner des rôles ? | Notes sécurité |
|---|---|---|
| Owner | ✅ Oui (Microsoft.Authorization/*) |
Le plus dangereux. ID 8e3af657-…. À mettre sous PIM systématiquement. |
| Contributor | ❌ Non | Gère tout sauf l'autorisation. ID b24988ac-…. 🚨 Ne peut PAS lire les secrets KV mais peut s'auto-attribuer un accès via access policy (modèle legacy). |
| Reader | ❌ Non | Lecture control plane uniquement. |
| Role Based Access Control Administrator | ✅ Oui | Gère les role assignments MAIS PAS via Azure Policy. Inclut */read. Préférable à User Access Admin (moindre privilège). |
| User Access Administrator | ✅ Oui (Microsoft.Authorization/*) |
Gère l'accès utilisateur. Peut s'auto-attribuer Owner. |
| Security Admin (Defender for Cloud) | ❌ (control plane Defender) | Gère les politiques de sécurité, peut modifier les recommandations/alertes Defender. |
| Security Reader | ❌ | Lecture seule de la posture de sécurité (secure score, alertes). |
Points de décision :
- Qui peut assigner un rôle ? Seulement Owner, RBAC Administrator, User Access Administrator (et rôles dédiés type Reservations Admin). Contributor ne peut pas.
- RBAC Administrator vs User Access Administrator : RBAC Admin = juste les role assignments (plus restreint) ; UAA = tout
Microsoft.Authorization. Choisir RBAC Admin si on veut déléguer l'attribution sans donner la gestion des policies/deny assignments. - 🚨 Les classic administrators (Co-Administrator / Service Administrator) sont retirés : depuis déc. 2025 Azure a auto-attribué Owner aux comptes restants, retraite complète en mai 2026. Sur l'exam, traiter comme obsolète → tout passe par RBAC.
- 🚨 Key Vault : avec le modèle Access Policy (legacy), tout porteur de
Microsoft.KeyVault/vaults/write(Contributor, KV Contributor) peut se créer une access policy et accéder aux secrets. → Basculer sur le modèle de permissions RBAC pour séparer plan de gestion et plan de données.
📌 Elevate access : un Global Administrator Entra peut s'élever pour gérer toutes les souscriptions (User Access Administrator à la racine /) — utile pour découvrir/nettoyer les assignations orphelines, à révoquer après usage.
Azure built-in roles · rôles Privileged · Security
B. Rôles personnalisés (Azure RBAC) vs rôles personnalisés Entra
Deux systèmes distincts à ne pas confondre — c'est un piège classique AZ-500.
B.1 — Azure custom roles (plan de gestion des ressources Azure)
Structure JSON :
{
"Name": "Custom VM Operator",
"Description": "Monitor + start/restart VMs",
"Actions": ["*/read", "Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action"],
"NotActions": ["*/write"],
"DataActions": ["Microsoft.Storage/.../blobs/read"],
"NotDataActions": [],
"AssignableScopes": ["/subscriptions/xxxxxxxx-..."]
}
| Propriété | Rôle |
|---|---|
| Actions | Opérations control plane autorisées (gérer la ressource). |
| NotActions | Soustraites des Actions → calcul des effective actions (n'est PAS un deny absolu). |
| DataActions | Opérations data plane (ex. lire un blob). Sépare gestion vs données. |
| NotDataActions | Soustraites des DataActions. |
| AssignableScopes | Où le rôle est assignable (mgmt group / souscription / RG). Obligatoire, IDs explicites. |
- 1 seul management group autorisé dans AssignableScopes ; racine
/non supportée. - Limite : 5000 custom roles / tenant (2000 pour 21Vianet).
- ABAC conditions (
Condition+ConditionVersion2.0) : raffine les permissions ; aujourd'hui sur Storage Blob Data Owner/Contributor/Reader notamment. - 🚨 Un custom role doit contenir exactement un objet permission lors de la création (l'API n'en accepte qu'un).
B.2 — Microsoft Entra custom roles (gestion du répertoire)
- Prérequis : Entra ID P1/P2 + rôle Privileged Role Administrator pour créer/assigner.
- Permissions au format
microsoft.directory/...(ex.microsoft.directory/applications/credentials/update), choisies dans une liste préfixée. - Création-assignation = 2 étapes :
unifiedRoleDefinitionpuisunifiedRoleAssignment. - Scopes : tenant-wide (
/), administrative unit, ou objet unique (app registration, enterprise app, groupe). Scope sur conteneur = porte sur les objets contenus, pas le conteneur lui-même. - 🚨
microsoft.directory/applications/create(ne décompte pas du quota 250 du créateur, pas owner) vscreateAsOwner(créateur = owner, décompte). Lecreateprime si les deux sont assignés → à manier avec prudence.
| Azure custom role | Entra custom role | |
|---|---|---|
| Cible | Ressources Azure (ARM) | Objets du répertoire Entra |
| Licence | Aucune (RBAC gratuit) | P1 minimum |
| Format permission | Microsoft.Compute/... |
microsoft.directory/... |
| Qui crée | Owner / UAA | Privileged Role Administrator |
Azure custom roles · Entra custom role
C. PIM — Privileged Identity Management pour ressources Azure
Élimine l'accès permanent (standing access) : on rend les rôles éligibles, activés juste-à-temps (JIT). Nécessite Entra ID P2 / Governance.
Eligible vs Active :
| Type | Comportement |
|---|---|
| Eligible | L'utilisateur doit activer avant usage. Peut imposer MFA, justification, approbation. C'est l'état JIT recherché. |
| Active | Privilèges disponibles immédiatement (assignation classique). MFA à l'activation impossible (déjà actif) → seulement MFA/justification à la création de l'assignation. |
🚨 Une assignation ne peut pas durer < 5 min, ni être retirée < 5 min après création.
Role settings (PIM policies) — par rôle ET par ressource :
| Paramètre | Détail exam |
|---|---|
| Activation maximum duration | Slider 1 à 24 h. |
| On activation, require MFA | Force MFA avant activation (rôle éligible). |
| Require Conditional Access authentication context | Plus fort que MFA simple : impose une politique CA (ex. device Intune-compliant + authentication strength). Fenêtre de réauth de 10 min partagée Entra/Azure/Groups. |
| Require justification | Justification métier à l'activation. |
| Require ticket information | N° de ticket — informatif uniquement, non corrélé à un ITSM. |
| Require approval to activate | ≥ 1 approbateur (recommandé ≥ 2). L'approbateur n'a pas besoin d'un rôle. |
| Assignment duration | Eligible/Active : permanent autorisé OU expiration forcée (start/end date). |
🚨 Pas d'héritage des settings : un réglage au niveau Souscription n'est PAS hérité au niveau Resource Group. Configurer à chaque scope.
📌 Activation : portail Entra (My roles > Azure resources) OU directement depuis le blade Subscriptions (« View eligible subscriptions ») / Access control (IAM) (« View my access »). Aussi via ARM API (roleAssignmentScheduleRequests, requestType = SelfActivate).
Access reviews PIM : revues récurrentes (weekly→annually) des assignations Owner/UAA. Scope par type (eligible only / active only / all), reviewers (selected / self / manager + fallback), Upon completion → Auto apply retire les utilisateurs refusés. Créer une review Azure resource = être Owner ou UAA sur la ressource.
Alertes PIM : détectent l'activité suspecte (ex. trop d'Owners, assignation hors PIM, rôles activés trop souvent) avec remédiation guidée.
PIM overview · Role settings · Assign · Access reviews · Alerts
D. MFA pour l'accès aux ressources Azure
3 façons d'activer la MFA — par ordre de maturité :
| Mécanisme | Licence | Granularité | Pour qui |
|---|---|---|---|
| Security Defaults | Gratuit | Tout-ou-rien (tous users, force MFA, bloque legacy auth + device code flow, protège l'accès au portail Azure) | Tenants simples, pas de P1 |
| Per-user legacy MFA | Entra Free | Par utilisateur (Enabled/Enforced) | Dernier recours, déconseillé |
| Conditional Access | P1+ | Conditionnelle (signaux) | Toute org avec exigences réelles |
- Méthodes : Microsoft Authenticator (push/code), Windows Hello for Business, Passkey FIDO2, certificate-based auth, OATH tokens, SMS/voix (à éviter). Phishing-resistant = FIDO2 / WHfB / CBA.
- 🚨 Security Defaults ⇄ Conditional Access mutuellement exclusifs : impossible d'activer SD si une seule politique CA existe (même en Off/Report-only), et vice versa.
- 🚨 Legacy authentication (IMAP/POP3/SMTP, Office 2010) ne supporte pas la MFA → un attaquant la contourne. SD et CA bloquent ces protocoles.
- Registration : portail myprofile / combined registration (MFA + SSPR). Sécuriser l'enrôlement lui-même via une CA sur l'action Register security information.
Security defaults · MFA best practices identity
E. Conditional Access pour les ressources cloud Azure
Moteur de politique Zero Trust : Signaux → Conditions → Décision (Grant / Session).
Anatomie d'une politique :
| Bloc | Contenu |
|---|---|
| Assignments — Users | Include (All users / groups / rôles) + Exclude (break-glass, service principals). |
| Target resources | « All resources » (ex-All cloud apps), app spécifique, ou authentication context. Pour protéger la gestion Azure → cibler Microsoft Azure Management. |
| Conditions | Sign-in risk, user risk, named locations, device platform, client apps (legacy), risk-based. |
| Grant | Block, ou Require MFA / authentication strength / compliant device / Hybrid Entra joined / Require one of the selected. |
| Session | Sign-in frequency, persistent browser, app-enforced restrictions. |
Points de décision clés :
- Require MFA vs Require authentication strength : authentication strength = plus fin (impose Phishing-resistant MFA / Passwordless MFA). 🚨 Mais incompatible avec External Authentication Methods (EAM) → dans ce cas, garder le grant « Require multifactor authentication ».
- Risk-based (lien Entra ID Protection, P2) : sign-in risk = probabilité que cette connexion ne soit pas du propriétaire ; user risk = compte probablement compromis. Politique type : sign-in risk High+Medium → Require MFA ; user risk High → block / change password. ID Protection envoie les signaux de risque, CA applique la décision.
- Named locations : marquer les plages VPN/bureau comme trusted améliore le calcul de risque et réduit les faux positifs.
🚨 Pièges majeurs :
- Toujours exclure les comptes break-glass / emergency access de chaque politique → sinon lockout total du tenant.
- Les service principals / managed identities ne sont pas bloqués par une CA ciblant des utilisateurs → utiliser CA for workload identities pour les couvrir.
- Toujours déployer en Report-only d'abord : évalue l'impact dans les sign-in logs avant de passer On.
CA overview · Risk-based sign-in · Report-only · Emergency access accounts
🏢 Scénarios d'entreprise (CAF/WAF)
Scénario 1 : Finance — Accès administrateur sans privilèges permanents
Contexte business : une banque est auditée (PCI-DSS / ISO 27001). 14 comptes sont Owner en permanence sur la prod. Objectif : plus aucun droit admin permanent.
Choix architectural : on rend les droits Owner « temporaires à la demande » via PIM (activation avec approbation + MFA).
Architecture / pattern :
- Repérer les Owners permanents (PIM Discovery) → les passer en éligibles (droits dormants).
- Sur Owner : activation 1 h max, MFA obligatoire, 2 approbateurs, justification écrite.
- Revues d'accès trimestrielles (retrait auto des droits inutiles).
- Comptes de secours (break-glass) hors PIM, surveillés séparément.
Trade-offs assumés :
- Gain : un compte volé n'a des droits que 1 h max ; tout est tracé et conforme.
- Perte : chaque intervention demande activation + approbation ; il faut un approbateur dispo 24/7 ; licence P2 par admin.
Pièges à éviter :
- Les réglages PIM d'une souscription ne descendent pas automatiquement sur ses RG.
- Mettre le compte break-glass sous PIM → blocage total si l'approbateur est absent.
- Un seul approbateur → goulot et risque de complicité.
📐 Réf. CAF/WAF — MCSB PA-2 (Avoid standing access) : utiliser un mécanisme JIT (PIM) pour attribuer l'accès privilégié temporairement plutôt que des privilèges permanents ; PIM génère aussi des alertes de sécurité. Lien
Scénario 2 : Santé — Conditional Access conforme HIPAA pour la gestion Azure
Contexte business : un hôpital héberge des données patients dans Azure. L'accès au portail/ARM doit exiger une MFA résistante au phishing, un appareil géré, et refuser les connexions anormales.
Choix architectural : un socle de règles Conditional Access (Zero Trust) ciblant la gestion Azure, complété par le risque de connexion (ID Protection).
Architecture / pattern :
- Admins → MFA anti-phishing + appareil conforme (Intune).
- Tout le monde → MFA exigée sur les ressources.
- Blocage de l'authentification legacy (sans MFA possible).
- Risque élevé (P2) : forcer MFA, voire bloquer.
- Sites/VPN connus marqués « de confiance » ; break-glass et identités applicatives exclus.
- Tester en Report-only avant d'activer pour de vrai.
Trade-offs assumés :
- Gain : accès adapté au contexte, anomalies géographiques bloquées, legacy auth éliminée.
- Perte : nécessite Intune + P1/P2 ; gérer les exclusions est délicat ; faux positifs possibles pour le personnel en déplacement.
Pièges à éviter :
- Ne pas exclure le break-glass → blocage total.
- Une règle sur les utilisateurs ne couvre pas les identités applicatives (règle workload identities à part).
- Activer sans avoir testé en Report-only.
- Authentication strength est incompatible avec les EAM (fournisseurs externes).
📐 Réf. CAF/WAF — MCSB IM-7 (Restrict resource access based on conditions) : déployer Entra Conditional Access pour un contrôle granulaire et adaptatif (MFA admin, blocage legacy auth, devices conformes, locations de confiance, blocage des sign-ins risqués). Lien
Scénario 3 : SaaS / startup — Délégation au moindre privilège sans rôles built-in trop larges
Contexte business : un éditeur SaaS donne Contributor sur toute la souscription à ses équipes DevOps « pour aller vite ». Une erreur peut tout casser. Objectif : ne donner que le strict nécessaire.
Choix architectural : Reader par défaut + rôles ciblés/custom limités au resource group, et déléguer l'attribution via RBAC Administrator (pas User Access Administrator).
Architecture / pattern :
- Reader par défaut partout (on voit, on ne modifie pas).
- Rôles précis (VM Contributor, Storage Account Contributor) au lieu de Contributor global.
- Custom role minimal limité au RG du produit, pas à la souscription.
- Un lead peut attribuer des rôles via RBAC Administrator (attribution seule).
- Key Vault passé en mode RBAC (fin des access policies).
Trade-offs assumés :
- Gain : une erreur reste limitée au RG ; séparation claire des responsabilités.
- Perte : créer/maintenir des custom roles demande du travail (max 5000/tenant) et de connaître les opérations des resource providers.
Pièges à éviter :
- Confondre custom role Azure et custom role Entra (formats/licences différents).
- Mettre toute la souscription dans AssignableScopes au lieu du seul RG.
- Donner User Access Administrator quand RBAC Administrator suffit (UAA peut se promouvoir Owner).
- Laisser Key Vault en Access Policy (Contributor donne alors accès aux secrets).
📐 Réf. CAF/WAF — MCSB AM-4 (Limit access to asset management) : Reader par défaut, rôles Contributor spécifiques au service, custom roles à permissions minimales, scoping au RG/ressource pour réduire le blast radius, et PIM pour les rôles élevés. Lien
DEMO — chemins portail
1. Créer un Azure custom role (portail, Start from JSON)
- Access control (IAM) du scope (souscription/RG) → Add → Add custom role.
- Onglet Basics → Baseline permissions = Start from JSON, charger le fichier (avec
Actions,NotActions,AssignableScopes). - Onglet Permissions → ajouter/exclure (les exclusions deviennent
NotActions/NotDataActions). - Onglet Assignable scopes → ajouter le RG/souscription (1 seul mgmt group max).
- Onglet JSON → éditer/valider → Review + create.
CLI :
az role definition create --role-definition @role.json
2. Rendre un rôle Owner éligible via PIM
- Entra admin center → ID Governance > Privileged Identity Management > Azure resources → sélectionner la souscription.
- Roles > Add assignments → rôle Owner → sélectionner le membre.
- Onglet Settings → Assignment type = Eligible → définir l'expiration → Assign.
- (Auth requise : être Owner ou User Access Administrator sur la ressource.)
3. Configurer les role settings PIM (MFA + approbation)
- PIM > Azure resources > la ressource > Settings.
- Sélectionner le rôle (ex. Owner) → Edit.
- Activation : max duration 1 h, cocher Require MFA, Require justification, Require approval (ajouter ≥ 1 approbateur).
- Assignment : Expire eligible assignment after → durée voulue → Update.
4. Créer une politique Conditional Access « Require MFA » en Report-only
- Entra admin center → Entra ID > Conditional Access > New policy (nom explicite).
- Users : Include = All users ; Exclude = comptes break-glass.
- Target resources : Microsoft Azure Management (ou All resources).
- Grant : Grant access → Require multifactor authentication.
- Enable policy = Report-only → Create. Vérifier les Sign-in logs (onglet Conditional Access) puis basculer On.
5. Lancer une access review PIM sur Owner/UAA
- PIM > Azure resources > la souscription > Access reviews > New.
- Nom, Start date, Frequency = Quarterly, durée.
- Users scope → Review role membership : Owner + User Access Administrator ; assignment type = all active and eligible.
- Reviewers = Selected users (ou Manager + fallback).
- Upon completion : Auto apply results = Enable, If reviewers don't respond = Remove access → Start.