4 — App Security
Concevoir l'identité et la sécurité applicative → secrets/clés/certificats (Key Vault), authn/authz (Entra ID, Managed Identity, RBAC) et gouvernance (Management Groups, tags, conformité).
A. Azure Key Vault
A.1 C'est quoi
Service managé Azure pour stocker secrets, clés, et certificats avec accès auditable. Centralise la gestion des creds et évite le hardcoding dans le code/config.
A.2 Les 3 variantes de Key Vault
| Variante | Quoi | FIPS | Coût | Use case |
|---|---|---|---|---|
| Vault Standard | Keys software-protected (logiciel) | 140-2 Level 1 | Bas | Dev/test, secrets app, certs |
| Vault Premium | Keys HSM-backed (Marvell LiquidSecurity, multitenant) | 140-3 Level 3 | Moyen | Prod régulée, CMK SQL/Storage |
| Managed HSM | HSM dédié single-tenant (cluster privé) | 140-3 Level 3 | Élevé (~$5/h) | Compliance ultra-stricte (PCI HSM, defense, gov, BYOK strict) |
🚨 Précision FIPS (firmware Marvell mis à jour) : Premium ET Managed HSM sont désormais FIPS 140-3 Level 3. Le vrai critère de choix n'est donc plus le niveau FIPS mais : Managed HSM = single-tenant + key sovereignty + root of trust client + security domain + local RBAC (un Owner de sub ne voit pas les clés) + compliance PCI DSS/3DS. Premium = multitenant, root of trust Microsoft.
🎯 Mémo 305 :
- "Secrets app + CMK PaaS standard" → Vault Standard ou Premium
- "Compliance PCI DSS HSM / FedRAMP High / défense / key sovereignty" → Managed HSM
- "BYOK ultra-strict avec contrôle physique HSM dédié single-tenant" → Managed HSM
A.3 Contenu d'un Key Vault — 3 types d'objets
| Type | Quoi | Cas |
|---|---|---|
| Secrets | Strings opaques (connection strings, passwords, API keys) | App Service @Microsoft.KeyVault(SecretUri=...) |
| Keys | Clés cryptographiques (RSA, EC) pour wrap/unwrap, signature | CMK pour TDE, Storage SSE, encryption envelope |
| Certificates | Certs x.509 (key + chain) | TLS cert pour App Gateway, Front Door, App Service |
🚨 Managed HSM stocke Keys only (pas de Secrets/Certificates).
A.4 RBAC vs Access Policies (data plane)
Le piège classique 305 : KV a 2 modèles d'autorisation pour le data plane (lecture/écriture des secrets/keys/certs).
| Access Policies (legacy) | Azure RBAC | |
|---|---|---|
| Type | Modèle natif KV | Modèle Azure unifié |
| Grain | Per-secret/key/cert permissions | Rôles Azure standards |
| Centralisation | Limité à KV | Centralisé via Azure RBAC |
| Audit/PIM | Limité | Intégré PIM, Deny Assignments |
| Rôles typiques | get, list, set perms |
Key Vault Secrets User, Key Vault Crypto Officer, etc. |
| Recommandation MS | ❌ Legacy | ✅ Recommandé (default pour KV créés avec API 2026-02-01+) |
🚨 Piège classique : "Access Policies vs RBAC" → RBAC est recommandé (sécurité renforcée, intégration PIM). Access Policies = legacy.
💡 Subtilité Managed HSM : utilise Azure RBAC pour control plane mais un Managed HSM local RBAC pour le data plane (isolation totale, même un sub admin ne peut pas accéder aux keys).
A.5 Soft-delete + Purge Protection — anti-bourde + anti-malveillant
| Feature | Quoi | Default | Obligatoire pour CMK |
|---|---|---|---|
| Soft-delete | Suppression réversible (90j de récup possible) | ✅ Activé par défaut | ✅ |
| Purge protection | Empêche le purge même en soft-deleted (irréversible !) | ❌ Optionnel | ✅ Obligatoire |
🚨 Piège 305 : pour utiliser CMK sur Azure SQL TDE / Storage / Disk encryption, le KV doit avoir soft-delete + purge protection activés. Sinon, échec config.
A.6 Identité d'accès — Managed Identity
- Best practice : MI sur l'app (App Service, VM, Function, AKS) + rôle RBAC sur le KV → zero secret stocké.
- Auditing : Diagnostic Settings → Log Analytics → Sentinel.
A.7 Pièges KV 305
- 🚨 RBAC > Access Policies (recommandation MS moderne).
- 🚨 Purge protection IRRÉVERSIBLE : une fois activée, tu ne peux plus la désactiver. Le KV ne peut pas être purgé pendant la rétention.
- 🚨 Same region : pour CMK SQL/Storage, key vault dans même région que la ressource (sinon failover Geo-DR cassé).
- 🚨 Vault Standard ≠ HSM : pour HSM-backed → Vault Premium ou Managed HSM.
- 🚨 Managed HSM = cluster single-tenant dédié, pricing élevé, justifié uniquement pour compliance ultra.
- 🚨 Managed HSM stocke Keys only (pas de Secrets/Certificates).
B. Pattern : Push Container to ACR via KV Secret
[GitHub Actions / Azure DevOps]
│ (Federated OIDC ou MI)
▼
[Key Vault] ─── secret = ACR password / SP creds
│
▼
[ACR] ◄── docker push
│
▼
[AKS/App Service/ACI] ─── docker pull (via MI + AcrPull)
Bonnes pratiques :
- MI sur cible (AKS/App Service) → pas besoin de stocker creds ACR.
- OIDC Federated Credentials côté CI/CD → zero secret stored.
- KV soft-delete + purge protection obligatoire prod.
C. Entra Permissions & Consent (Delegated vs Application)
🎯 Niveau AZ-305 = le concept de décision (delegated vs application, user vs admin consent). Flows OAuth détaillés, claims de token, code MSAL = AZ-204, hors scope.
C.1 Delegated vs Application — le concept
- Delegated = "Je suis ton avocat, j'agis en ton nom" → limité par les droits de l'user.
- Application = "Je suis un robot autonome, j'ai mes propres permissions" → aucun humain derrière.
| Delegated (avocat) | Application (robot) | |
|---|---|---|
| User devant l'écran ? | ✅ Oui | ❌ Non |
| Scope effectif | MIN(droits user, droits app) | Permissions app directement |
| Use case | Web/mobile/SPA | Daemon, batch, webhook backend |
| Consent | User OU Admin (selon perm) | Admin OBLIGATOIRE |
C.2 Règle de décision
Y a-t-il un user qui se logge devant l'écran ?
├─ OUI → Delegated (web app, mobile, SPA)
└─ NON → Application (batch nocturne, webhook, MI sur VM)
🚨 Mots-clés exam :
- "service-to-service", "background job", "scheduled", "no user" → Application
- "user signs in", "on behalf of", "web app for users" → Delegated
D. Protection des secrets
| Méthode | Note |
|---|---|
| Managed Identity | Best : zero secret, rotation auto |
| Federated Credentials (OIDC) | CI/CD GitHub/GitLab : token OIDC → token Entra, zero secret stored |
| Certificate | Recommandé si MI impossible (rotatable, fort) |
| Client Secret | OK mais expiration manuelle, stocker en KV |
Pattern CI/CD moderne
GitHub Actions → Federated Credentials (OIDC) → token Entra court → Azure access. Aucun secret stocké.
E. Identity Design (Authentication + Identity Management)
E.1 Modèle hybride Entra
| Méthode | Quand l'utiliser |
|---|---|
| Cloud-only | Greenfield, pas d'AD on-prem |
| PHS | Default hybride, simple, fallback si AD down |
| PTA | Compliance "no password in cloud" — agent on-prem |
| Federation (ADFS) | Legacy, MS pousse migration vers PHS+SSO |
Entra Cloud Sync (vs Entra Connect Sync legacy) pour nouveaux déploiements.
🎯 "Réduire helpdesk reset mdp hybride" → SSPR + Password Writeback. 🎯 "Apps legacy exigent AD sans gérer DC" → Azure AD DS (Domain Services) dans VNet.
E.2 External Identities
| Scenario | Choix |
|---|---|
| Partenaires (1-1) | B2B Collaboration (guest user) |
| Org-to-org Teams Shared Channels | B2B Direct Connect (trust mutuel) |
| Customers grand public | Entra External ID for Customers (B2C legacy) |
| Apps SaaS tierces | Enterprise Apps (galerie ou multi-tenant) |
E.3 Authentication design (prod)
- Conditional Access (P1) = pierre angulaire :
- Exclure compte break-glass
- Démarrer Report-only → tester What-if → Enable
- Combine MFA + compliant device + named locations
- Passwordless : FIDO2 / Windows Hello / Authenticator passwordless
- PIM (P2) : rôles privilégiés Eligible vs Active permanent
F. Authorization Design
F.1 Authorize Azure resources — RBAC + PIM
| Outil | Quoi |
|---|---|
| Azure RBAC | Rôles built-in (Owner/Contributor/Reader) ou custom, assignés à un scope (MG → sub → RG → ressource), héritage descendant |
| Custom roles | Quand built-in trop larges (least privilege fin) |
| PIM Eligible vs Active | Roles privilégiés : Eligible (à activer JIT avec MFA + approval) vs Active (permanent — à éviter) |
| Deny Assignments | Exception : empêcher quelqu'un d'accéder même si RBAC dit oui |
| Resource Locks | CanNotDelete / ReadOnly — garde-fou anti-erreur |
🎯 Mémo : RBAC pour qui peut quoi · PIM pour roles privilégiés JIT · Locks pour anti-bourde.
F.2 Authorize on-premises resources — App Proxy
Azure AD Application Proxy : reverse proxy managé qui publie une app on-prem vers Internet via Entra (sans VPN, sans ouvrir port entrant).
[User Internet] → Entra (auth + CA) → App Proxy Cloud → Connector on-prem (outbound 443) → App on-prem
Use cases :
- Publier une app on-prem (SharePoint, intranet web, RDP) via Entra SSO + Conditional Access.
- Authentification pre-auth Entra avant que la requête atteigne l'app.
- Modes : OIDC / SAML / Header-based / IWA-Kerberos KCD / Passthrough.
🚨 Piège classique 305 : "App SaaS cloud + SSO Entra + restriction compliant device" → App Registration + Conditional Access (pas App Proxy). App Proxy = pour apps on-prem, pas pour apps cloud SaaS déjà accessibles publiquement. 🎯 Mnémo : App on-prem → App Proxy / App cloud SaaS → App Reg + CA.
G. Identity Governance
Sous-objectif officiel : "Recommend a solution for identity governance".
| Feature (Entra P2) | Quoi | Use case |
|---|---|---|
| Access Reviews | Revue périodique des accès (groupes, apps, rôles, guests) | Compliance annuelle, nettoyage guests dormants |
| Entitlement Management | Access packages self-service avec workflow approbation + expiration auto | Onboarding prestataires/partenaires, accès projet temporaire |
| PIM (Privileged Identity Management) | JIT activation rôles privilégiés (Eligible) avec MFA + approval + audit | Admin Global, Contributor sub, etc. |
| Lifecycle Workflows | Automatiser onboarding/offboarding (créer user, assigner groupes, désactiver à la sortie) | RH integration |
| Identity Protection | Detection risques user/sign-in (impossible travel, leaked credentials, anonymous IP) + remediation auto | Security ops |
H. Governance Design
H.1 Hiérarchie management (Enterprise-Scale Landing Zones)
Tenant Root MG
├─ Platform MG (équipe centrale)
│ ├─ Management sub (logs, monitoring)
│ ├─ Identity sub (DCs, Entra Connect)
│ └─ Connectivity sub (hub VNet, vWAN, ER)
├─ Landing Zones MG (workloads)
│ ├─ Corp MG (apps internes)
│ └─ Online MG (apps internet-facing)
├─ Sandbox MG (POC, dev libre)
└─ Decommissioned MG (retraits)
H.2 Subscription strategy
| Pattern | Use case |
|---|---|
| 1 sub par env (dev/test/prod) | Petites orgs |
| 1 sub par BU + env | Orgs moyennes, billing BU |
| N subs par workload critique | Grandes orgs : isolation limites + blast radius |
| 1 sub par compliance scope | PCI-DSS / HIPAA isolés |
💡 Limites soft par sub : cores VM/famille, public IPs, role assignments (~4000), VNets (1000), SAs (250). Multi-subs pour scale. Ticket MS ou quota pour augmenter.
H.3 Resource organization + Tagging
- Resource Groups : 1 RG = 1 lifecycle (créé/supprimé ensemble).
- Tagging strategy : enforced via Azure Policy
- Owner / CostCenter / Environment / Project / Compliance
- Tag inheritance via Policy : propage tags MG → sub → RG → ressource (réduit oubli).
H.4 Azure Policy compliance at scale
Initiatives built-in à appliquer racine MG :
- Azure Security Benchmark v3 (baseline)
- CIS / ISO 27001 / NIST SP 800-53 / PCI DSS v4 / HIPAA HITRUST
Effects à privilégier :
- Audit au démarrage (mesurer baseline 1-2 semaines)
- Deny quand prêt (enforcement)
- DeployIfNotExists pour auto-remediation (ex : AMA + DCRs sur toutes VMs)
- Exemptions avec date d'expiration obligatoire
H.5 Cost governance
| Outil | Quand |
|---|---|
| Budgets + Action Groups (Logic App shutdown auto) | Limiter dépassements |
| Reservations (1-3 ans) + Savings Plans | Workloads stables 24/7 (-72%) |
| Azure Hybrid Benefit (AHB) | Réutiliser licences Win/SQL on-prem |
| Tag inheritance via Policy | Allocation coûts par BU |
| Azure Advisor Cost | Recos right-sizing, RIs, idle |
I. Decision trees AZ-305
Hybride identité
AD on-prem ?
├─ Greenfield → Cloud-only Entra
├─ Hybride simple → PHS + SSO + Entra Cloud Sync
├─ "No password in cloud" → PTA
└─ Existant ADFS → Migrer vers PHS + SSO
Authorize on-prem vs cloud
App à exposer ?
├─ App on-prem → vers Internet → App Proxy + Entra CA
├─ App cloud SaaS existante → App Registration + Conditional Access
└─ App custom Azure native → MI + RBAC
Identity governance
Besoin governance ?
├─ Revue périodique accès → Access Reviews
├─ Onboarding prestataires self-service → Entitlement Management (Access Packages)
├─ Rôles privilégiés JIT → PIM Eligible
├─ Automate joiner/leaver → Lifecycle Workflows
└─ Détecter sign-in risks → Identity Protection
Governance hiérarchique
Organisation taille ?
├─ Petite (1-5 subs) → 1 sub par env
├─ Moyenne → 1 sub par BU + env + MG hierarchy basique
└─ Grande / >5 subs / multi-BU → Enterprise-Scale Landing Zones (ALZ Bicep/TF)
Policy enforcement
Scope policy ?
├─ Baseline → Azure Security Benchmark v3
├─ Régulé (PCI/HIPAA/ISO/NIST) → Initiatives MS built-in correspondantes
└─ Standards internes → Custom initiative
J. Scénarios 305 → solution
| Scénario business | Réponse |
|---|---|
| "Stocker secrets app + accès via MI" | KV Secrets + Managed Identity + RBAC |
| "CMK TDE SQL DB / Storage compliance HIPAA" | KV Premium (HSM-backed) + soft-delete + purge protection |
| "Compliance PCI DSS HSM / FedRAMP / défense" | Managed HSM (FIPS 140-3 Level 3) |
| "Cert TLS App Gateway avec rotation auto" | KV Certificate + MI sur AGW |
| "App on-prem accessible via Entra SSO + CA sans VPN" | App Proxy + Entra CA |
| "App SaaS cloud restrict compliant device" | App Registration + Conditional Access |
| "Hybride simple PHS + résilience si AD down" | PHS + SSO + Entra Cloud Sync |
| "Compliance no password in cloud" | PTA + agent on-prem |
| "Customers grand public" | Entra External ID for Customers (B2C legacy) |
| "Partenaires invités (1-1)" | B2B Collaboration (guest user) |
| "Teams Shared Channels cross-org" | B2B Direct Connect |
| "Roles admin JIT MFA + approbation" | PIM Eligible (P2) |
| "Revue trimestrielle accès guests" | Access Reviews (P2) |
| "Self-service prestataires + expiration auto" | Entitlement Management Access Packages (P2) |
| "Détecter impossible travel / leaked creds" | Identity Protection (P2) |
| "Automate user joiner/leaver" | Lifecycle Workflows (P2) |
| "Service-to-service backend, no user" | Application permissions + admin consent |
| "Web app user sign-in" | Delegated permissions |
| "CI/CD zero secret stored" | Federated Credentials (OIDC) GitHub/GitLab |
| "Org grande multi-BU multi-subs structurée" | Enterprise-Scale Landing Zones (ALZ) |
| "Réduire helpdesk reset mdp hybride" | SSPR + Password Writeback |
| "App legacy exige AD sans gérer DC" | Azure AD DS (Domain Services) dans VNet |
| "Enforcement compliance PCI sub" | Initiative Azure Policy PCI DSS v4 + Deny effect |
| "Auto-remediation AMA + DCRs sur toutes VMs" | Azure Policy DeployIfNotExists |
| "Allocation coûts par BU" | Tag inheritance via Policy + Cost Management |
🏢 Scénarios d'entreprise (CAF/WAF)
Scénario 1 : Santé (Hôpital régional) — CMK HIPAA pour TDE SQL + Storage
Contexte business : Plateforme de dossiers patients sur Azure SQL + Storage. L'audit HIPAA exige des clés gérées par le client (CMK), récupérables, et non purgeables par un admin compromis. Le failover Geo-DR ne doit jamais casser à cause d'un problème de clé. Choix architectural : Key Vault Premium (HSM-backed) + soft-delete + purge protection + CMK pour TDE SQL et Storage, accès par Managed Identity + RBAC. → CMK conforme sans aller jusqu'au Managed HSM. Architecture / pattern :
- KV dans la même région que SQL et Storage (sinon le failover Geo-DR casse).
- CMK avec auto-rotation (rotation policy KV).
- Logs KV → Log Analytics → alertes sur restauration/suppression de clé.
- 1 Key Vault par app + environnement (dev/prod séparés) pour limiter le blast radius. Trade-offs assumés :
- Gain : conformité HIPAA, contrôle du cycle de vie des clés, anti-purge même contre un insider.
- Perte : purge protection irréversible (pas de recréation d'un vault homonyme avant fin de rétention) ; clé même région = contrainte multi-région. Pièges à éviter :
- Oublier la purge protection → la config CMK SQL/Storage échoue (prérequis).
- Stocker le cert TLS « comme un secret » → utiliser le type Certificate (auto-rotation).
- KV dans une autre région que la ressource → failover impossible. 📐 Réf. WAF — Security pillar, service guide Azure Key Vault : appliquer soft-delete + purge protection, une instance KV par application/région/environnement, et l'auto-rotation des clés/secrets/certs comme baseline de protection des données. Lien
Scénario 2 : Services financiers (Banque) — Souveraineté des clés PCI DSS avec Managed HSM
Contexte business : Émetteur de cartes soumis PCI DSS / 3DS. Exigence : matériel single-tenant, souveraineté des clés (root of trust contrôlé par la banque), et isolation telle qu'aucun admin Azure ne puisse voir les clés. Choix architectural : Key Vault Managed HSM (single-tenant) avec security domain détenu par la banque, local RBAC pour le data plane, BYOK depuis un HSM on-prem. Architecture / pattern :
- Security domain téléchargé hors-bande au provisioning, avec quorum (≥ 3 key holders).
- Séparation stricte : Azure RBAC (control plane) ≠ local RBAC (data plane) → un Owner de sub ne voit pas les clés.
- Private endpoints sur le Managed HSM (accès VNet only) + purge protection + backups géo-redondants. Trade-offs assumés :
- Gain : single-tenant, souveraineté des clés, conformité PCI DSS/3DS, isolation totale.
- Perte : coût élevé (à l'heure), complexité (gestion du security domain et du quorum ; le perdre = perdre les clés). Pièges à éviter :
- Choisir entre Premium et Managed HSM sur le FIPS : les deux sont 140-3 L3. Le vrai critère = single-tenant + souveraineté des clés.
- Vouloir y stocker secrets/certs → Managed HSM = Keys only.
- Perdre le security domain → récupération impossible (DR cassé). 📐 Réf. — How to choose the right Azure key management solution : Managed HSM se justifie quand single tenancy, key sovereignty et root of trust client sont requis (PCI DSS/3DS), là où AKV Premium suffit pour CMK standard sans souveraineté. Lien
Scénario 3 : Industrie (manufacturier hybride) — Identité hybride + accès on-prem sans VPN
Contexte business : Industriel avec AD on-prem et apps intranet legacy, en migration cloud-first. Besoin : sync d'identité résiliente, et exposer les apps on-prem aux employés distants via Entra SSO + MFA, sans port entrant ni VPN. Choix architectural : Entra Cloud Sync (PHS + SSO) pour l'identité + Application Proxy pour publier les apps on-prem + Conditional Access (MFA + compliant device). Architecture / pattern :
- Cloud Sync (agents légers, multi-actifs, failover auto) plutôt que Connect Sync legacy ; PHS avec fallback si AD down.
- App Proxy connector on-prem en outbound 443 only → aucun port entrant ouvert.
- Pre-auth Entra + CA appliqués avant que la requête atteigne l'app.
- Compte break-glass exclu des policies CA ; démarrage en Report-only. Trade-offs assumés :
- Gain : zéro port entrant, SSO + MFA centralisés sur apps legacy, sync résiliente (multi-agents).
- Perte : Cloud Sync a des limites (150K objets/domaine, pas de Hybrid Azure AD Join) ; certaines topologies complexes exigent encore Connect Sync. Pièges à éviter :
- App Proxy pour une app cloud SaaS déjà publique → c'est App Registration + CA qu'il faut (App Proxy = on-prem only).
- « Require MFA » sur All users sans exclure le break-glass → lock-out total possible.
- Choisir Connect Sync par habitude alors que Cloud Sync suffit → migration future évitable. 📐 Réf. CAF — Identity and access management : migration Connect→Cloud Sync : pour les nouveaux déploiements hybrides, Cloud Sync est la direction stratégique (cloud-managed, multi-agents, failover) ; vérifier le comparatif de capacités avant de retenir Connect Sync. Lien
DEMO
Demo Portail — App Registration (Delegated permissions, web app)
Microsoft Entra ID > App registrations > + New registration- Name :
myapp-web, Single tenant (ou Multitenant si SaaS) - Redirect URI : Web →
https://myapp.com/auth/callback - Register → noter Application (client) ID + Directory (tenant) ID
App Reg > API permissions > + Add a permission > Microsoft Graph > Delegated permissions- Cocher
User.Read,Mail.Send→ Add permissions - (Si admin consent requis) Bouton **Grant admin consent for tenant
- Code app (MSAL) = AZ-204 territory, pas couvert ici
Demo Portail — App Registration (Application permissions, daemon)
App registrations > + New registration→ Namemyapp-daemon→ RegisterAPI permissions > + Add a permission > Microsoft Graph > Application permissions- Cocher
User.Read.All(ou autre) - Grant admin consent for tenant (OBLIGATOIRE pour Application)
- Auth : MI (préférée) ou Certificate (KV) ou Client Secret (KV)
Demo Portail — Federated Credentials OIDC GitHub
Microsoft Entra ID > App registrations > + New registration→ Namegithub-cicd→ Register (noter client ID + tenant ID)- App Reg →
Certificates & secrets > Federated credentials > + Add credential - Scenario : GitHub Actions deploying Azure resources :
- Organization :
myorg - Repository :
myrepo - Entity type : Branch →
main - Name :
github-main
- Organization :
Resource groups > rg > IAM > + Add role assignment→ RoleContributor→ Membergithub-cicd- Côté GitHub Actions :
azure/login@v2avec client-id + tenant-id + subscription-id (zero password)
CLI équivalent (pour IaC) :
az ad app federated-credential create --id $APP_ID --parameters '{
"name":"github-main","issuer":"https://token.actions.githubusercontent.com",
"subject":"repo:myorg/myrepo:ref:refs/heads/main",
"audiences":["api://AzureADTokenExchange"]}'
Demo Portail — Conditional Access policy
Microsoft Entra ID > Security > Conditional Access > + New policy- Name :
Require MFA for All Users - Users : All users (exclure compte break-glass)
- Cloud apps : All cloud apps
- Conditions : configurer si besoin (named locations, device platforms)
- Grant : Require multi-factor authentication + Require compliant device
- Enable policy : démarrer en Report-only 1-2 semaines → analyser dans Sign-in logs → puis On
Demo Portail — PIM activation rôle Eligible
Microsoft Entra ID > Identity Governance > Privileged Identity Management > Azure resources(ou Microsoft Entra roles)- Sélectionner sub / rôle → Assignments > + Add assignments
- Selected role :
Contributor/ Members : user / Assignment type : Eligible (pas Active) - Settings (sur le rôle) : durée max activation, MFA required, approbation workflow, justification obligatoire, notification email
- Côté user :
My roles > Eligible assignments > Activate→ MFA + justification → JIT