<!DOCTYPE html>
<html lang="fr" data-theme="light">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Module 05 — PIM &amp; Gouvernance · Formation Entra ID · Atoo Next</title>
  <meta name="description" content="Privileged Identity Management, Access Reviews, Entitlement Management (Entra ID P2).">
  <meta name="color-scheme" content="light dark">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&display=swap">
  <link rel="stylesheet" href="assets/shared.css">
</head>
<body class="layout-module">
  <a href="#main-content" class="skip-link">Aller au contenu principal</a>

  <!-- Sprite SVG (inline pour file://) -->
  <svg xmlns="http://www.w3.org/2000/svg" style="display:none" aria-hidden="true">
    <symbol id="icon-home" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></symbol>
    <symbol id="icon-book-open" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 7v14"/><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/></symbol>
    <symbol id="icon-trending-up" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 7 13.5 15.5 8.5 10.5 2 17"/><polyline points="16 7 22 7 22 13"/></symbol>
    <symbol id="icon-award" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M15.477 12.89 17 22l-5-3-5 3 1.523-9.11"/><circle cx="12" cy="8" r="6"/></symbol>
    <symbol id="icon-settings" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/></symbol>
    <symbol id="icon-help-circle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></symbol>
    <symbol id="icon-menu" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></symbol>
    <symbol id="icon-key-round" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"/></symbol>
    <symbol id="icon-shield-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></symbol>
    <symbol id="icon-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></symbol>
    <symbol id="icon-check-circle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></symbol>
    <symbol id="icon-x" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><line x1="18" x2="6" y1="6" y2="18"/><line x1="6" x2="18" y1="6" y2="18"/></symbol>
    <symbol id="icon-refresh-cw" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10"/></symbol>
    <symbol id="icon-chevron-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"/></symbol>
    <symbol id="icon-arrow-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><line x1="19" x2="5" y1="12" y2="12"/><polyline points="12 19 5 12 12 5"/></symbol>
    <symbol id="icon-arrow-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><line x1="5" x2="19" y1="12" y2="12"/><polyline points="12 5 19 12 12 19"/></symbol>
    <symbol id="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"/></symbol>
    <symbol id="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/></symbol>
    <symbol id="icon-alert-triangle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></symbol>
    <symbol id="icon-info" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></symbol>
    <symbol id="icon-lightbulb" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></symbol>
    <symbol id="icon-sparkles" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"/><path d="M20 3v4"/><path d="M22 5h-4"/><path d="M4 17v2"/><path d="M5 18H3"/></symbol>
    <symbol id="icon-server" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2"/><rect width="20" height="8" x="2" y="14" rx="2"/><line x1="6" x2="6.01" y1="6" y2="6"/><line x1="6" x2="6.01" y1="18" y2="18"/></symbol>
    <symbol id="icon-graduation-cap" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M22 10v6M2 10l10-5 10 5-10 5z"/><path d="M6 12v5c3 3 9 3 12 0v-5"/></symbol>
    <symbol id="icon-flask-conical" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"/><path d="M6.453 15h11.094"/><path d="M8.5 2h7"/></symbol>
    <symbol id="icon-target" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></symbol>
    <symbol id="icon-clock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></symbol>
    <symbol id="icon-list" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><line x1="8" x2="21" y1="6" y2="6"/><line x1="8" x2="21" y1="12" y2="12"/><line x1="8" x2="21" y1="18" y2="18"/><line x1="3" x2="3.01" y1="6" y2="6"/><line x1="3" x2="3.01" y1="12" y2="12"/><line x1="3" x2="3.01" y1="18" y2="18"/></symbol>
    <symbol id="icon-external-link" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" x2="21" y1="14" y2="3"/></symbol>
    <symbol id="icon-users" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></symbol>
    <symbol id="icon-user-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><polyline points="16 11 18 13 22 9"/></symbol>
    <symbol id="icon-package" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 9.4 7.55 4.24"/><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><path d="M3.27 6.96 12 12.01l8.73-5.05"/><path d="M12 22.08V12"/></symbol>
  </svg>

  <button class="hamburger-btn" aria-label="Ouvrir le menu">
    <svg width="24" height="24"><use href="#icon-menu"/></svg>
  </button>

  <aside class="sidebar-icons" role="navigation" aria-label="Menu principal">
    <a href="javascript:void(0)" class="sidebar-icons__logo" aria-label="Accueil Atoo Next">
      <img src="assets/atoo-next-logo.svg" alt="Atoo Next">
    </a>
    <nav class="sidebar-icons__nav" aria-label="Navigation principale">
      <a href="javascript:void(0)" class="sidebar-icons__item" aria-label="Tableau de bord" title="Tableau de bord"><svg><use href="#icon-home"/></svg></a>
      <a href="#module-content" class="sidebar-icons__item is-active" aria-label="Ce module" title="Ce module"><svg><use href="#icon-book-open"/></svg></a>
      <a href="javascript:void(0)" class="sidebar-icons__item" aria-label="Progression" title="Progression"><svg><use href="#icon-trending-up"/></svg></a>
      <a href="javascript:void(0)" class="sidebar-icons__item" aria-label="Certificat" title="Certificat"><svg><use href="#icon-award"/></svg></a>
    </nav>
    <div class="sidebar-icons__footer">
      <a href="#" class="sidebar-icons__item" aria-label="Aide" title="Aide"><svg><use href="#icon-help-circle"/></svg></a>
      <a href="#" class="sidebar-icons__item" aria-label="Paramètres" title="Paramètres"><svg><use href="#icon-settings"/></svg></a>
    </div>
  </aside>

  <main class="module-main" id="main-content">
    <header class="module-topbar">
      <a href="javascript:void(0)" class="back-link">
        <svg><use href="#icon-arrow-left"/></svg>
        Retour au tableau de bord
      </a>
      <div class="module-topbar__actions">
        <button id="theme-toggle" class="btn-icon" aria-label="Basculer thème" aria-pressed="false">
          <svg width="20" height="20"><use href="#icon-moon"/></svg>
        </button>
      </div>
    </header>

    <div class="module-layout" id="module-content">
      <article class="module-content">
        <header class="module-header">
          <div class="module-header__visual module-header__visual--lavender">
            <span class="module-header__number-huge">05</span>
            <div class="module-header__icon-large"><svg><use href="#icon-key-round"/></svg></div>
          </div>
          <div class="module-header__meta">
            <span class="module-header__label">MODULE 05 · COURS</span>
            <h1 class="module-header__title">PIM &amp; Gouvernance des identités</h1>
            <p class="module-header__subtitle">Just-In-Time, Access Reviews, Entitlement Management (Entra ID P2).</p>
            <div class="module-header__stats">
              <div class="stat-mini"><span class="stat-mini__value">5h</span><span class="stat-mini__label">durée</span></div>
              <div class="stat-mini"><span class="stat-mini__value" id="module-sections-count">12</span><span class="stat-mini__label">sections</span></div>
              <div class="stat-mini"><span class="stat-mini__value">10</span><span class="stat-mini__label">questions</span></div>
            </div>
          </div>
        </header>

        <!-- OBJECTIFS -->
        <section class="module-section module-section--objectifs" data-section-id="s-objectifs">
          <div class="section-header">
            <div class="icon-circle icon-circle--lg icon-circle--lavender"><svg><use href="#icon-target"/></svg></div>
            <div class="section-header__content">
              <span class="section-header__label">OBJECTIFS</span>
              <h2 class="section-header__title">Ce que vous saurez faire</h2>
              <p class="section-header__meta">5 objectifs · ~5 min</p>
            </div>
          </div>
          <ul class="task-list">
            <li class="task-list__item"><span><strong>Expliquer</strong> la différence rôle <strong>éligible</strong> vs rôle <strong>actif</strong> et le principe du Just-In-Time (JIT).</span></li>
            <li class="task-list__item"><span><strong>Configurer</strong> PIM sur un rôle (Global Admin) : activation avec MFA, justification, approbation, durée limitée.</span></li>
            <li class="task-list__item"><span><strong>Créer</strong> une Access Review sur un rôle ou un groupe et interpréter ses résultats.</span></li>
            <li class="task-list__item"><span><strong>Décrire</strong> l'Entitlement Management (access packages, catalogues) et son usage.</span></li>
            <li class="task-list__item"><span><strong>Positionner</strong> ces briques dans une stratégie de moindre privilège.</span></li>
          </ul>
          <div class="content-block animate-on-scroll" style="margin-top:var(--space-6)">
            <h3>Compétences transférées depuis l'AD classique</h3>
            <div class="table-wrapper">
              <table>
                <thead><tr><th>L'admin AD réutilise</th><th>L'admin AD doit désapprendre</th></tr></thead>
                <tbody>
                  <tr><td>Souci de limiter les comptes « Domain Admins »</td><td>« Admin un jour = admin en permanence » — ici : JIT, activation temporaire</td></tr>
                  <tr><td>Revue périodique des groupes à privilèges (manuelle)</td><td>La revue manuelle : Access Reviews l'automatise</td></tr>
                  <tr><td>Notion d'approbation informelle</td><td>Aucun équivalent AD à l'activation approuvée + tracée du rôle</td></tr>
                </tbody>
              </table>
            </div>
          </div>
        </section>

        <!-- COURS -->
        <section class="module-section module-section--cours">
          <div class="section-header">
            <div class="icon-circle icon-circle--lg icon-circle--sky"><svg><use href="#icon-book-open"/></svg></div>
            <div class="section-header__content">
              <span class="section-header__label">COURS</span>
              <h2 class="section-header__title">Du permanent à l'éligible</h2>
              <p class="section-header__meta">5 sections · lecture ~40 min</p>
            </div>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-cours-1">
            <h3>1. Le problème des rôles permanents</h3>
            <div class="section-hook">
              <span class="section-hook__label">Contexte</span>
              Un audit vient de tomber : votre tenant compte 8 Global Administrators, dont 3 « au cas où » et 1 dont plus personne ne se souvient. Chaque compte est une cible à valeur maximale — <strong>en continu</strong>. Le principe qui vient corriger ça s'appelle Just-In-Time. C'est le fil de tout ce module.
            </div>
            <p>En AD, combien de comptes sont membres permanents de « Domain Admins » ? Souvent trop, et pour toujours. Chaque compte admin permanent est une cible : s'il est compromis, l'attaquant a les <strong>pleins pouvoirs, en permanence</strong>.</p>
            <p>Le principe moderne est le <strong>Just-In-Time (JIT)</strong> : personne n'est admin <strong>en permanence</strong>. On est <strong>éligible</strong> à un rôle, et on l'<strong>active</strong> temporairement, quand on en a besoin, avec contrôles. C'est ce que fournit <strong>PIM</strong> (Privileged Identity Management), une fonctionnalité <strong>Entra ID P2</strong>.</p>
            <div class="ad-entra-grid">
              <div class="ad-entra-card ad-entra-card--ad">
                <div class="ad-entra-card__label"><svg width="14" height="14"><use href="#icon-server"/></svg> AD CLASSIQUE</div>
                <div class="ad-entra-card__body"><p>L'appartenance à un groupe à privilèges est <strong>binaire et permanente</strong>.</p></div>
              </div>
              <div class="ad-entra-card ad-entra-card--entra">
                <div class="ad-entra-card__label"><svg width="14" height="14"><use href="#icon-key-round"/></svg> ENTRA + PIM</div>
                <div class="ad-entra-card__body"><p>L'appartenance devient <strong>conditionnelle et temporaire</strong>. Le rôle ne « vaut » quelque chose que pendant l'activation.</p></div>
              </div>
            </div>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-cours-2">
            <h3>2. Rôles éligibles vs actifs</h3>
            <div class="table-wrapper">
              <table>
                <thead><tr><th></th><th>Éligible</th><th>Actif</th></tr></thead>
                <tbody>
                  <tr><td><strong>Signification</strong></td><td>Peut activer le rôle quand nécessaire</td><td>Détient le rôle maintenant</td></tr>
                  <tr><td><strong>Droits au repos</strong></td><td>Aucun (le rôle n'est pas « porté »)</td><td>Les droits du rôle</td></tr>
                  <tr><td><strong>Durée</strong></td><td>Permanent ou limité (assignment)</td><td>Limitée (ex : 8h max), puis expire</td></tr>
                  <tr><td><strong>Risque au repos</strong></td><td>Faible (rien à voler)</td><td>Élevé pendant la fenêtre d'activation</td></tr>
                </tbody>
              </table>
            </div>
            <p>Idée : basculer un maximum d'assignations de rôle de <strong>actif permanent</strong> vers <strong>éligible</strong>. Le rôle ne « vaut » quelque chose que <strong>pendant</strong> l'activation.</p>
            <aside class="callout callout--warning">
              <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
              <div class="callout__content">
                <span class="callout__label">PIÈGE FRÉQUENT</span>
                <p>Laisser des assignations <strong>actives permanentes</strong> sur Global Admin « pour la commodité ». C'est exactement ce que PIM sert à éliminer.</p>
              </div>
            </aside>
            <div class="reveal-card">
              <button class="reveal-card__trigger" aria-controls="ade-cours2">
                <div class="icon-circle icon-circle--sm icon-circle--sky"><svg><use href="#icon-server"/></svg></div>
                <span class="reveal-card__title">Équivalent AD DS</span>
                <svg class="reveal-card__chevron" width="20" height="20"><use href="#icon-chevron-right"/></svg>
              </button>
              <div class="reveal-card__content" id="ade-cours2" role="region"><p>Aucun équivalent natif. On simulait avec des comptes admin séparés (« adm-jdoe ») et des procédures manuelles. PIM industrialise et trace tout cela.</p></div>
            </div>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-cours-3">
            <h3>3. Activation d'un rôle</h3>
            <div class="section-hook">
              <span class="section-hook__label">À retenir</span>
              L'activation, c'est le moment où PIM prouve son utilité : plusieurs contrôles peuvent y être imposés, et <strong>tout est tracé</strong>.
            </div>
            <p>Quand un utilisateur éligible active un rôle, PIM peut imposer :</p>
            <ul>
              <li><strong>MFA</strong> au moment de l'activation.</li>
              <li><strong>Justification</strong> (texte obligatoire : pourquoi j'active).</li>
              <li><strong>Approbation</strong> par un ou plusieurs approbateurs désignés.</li>
              <li><strong>Ticket</strong> (numéro d'incident / change) optionnel.</li>
              <li><strong>Durée maximale</strong> (ex : 1 à 8h), après quoi le rôle <strong>se désactive automatiquement</strong>.</li>
            </ul>
            <p>Tout est <strong>tracé</strong> (qui a activé quoi, quand, pourquoi, approuvé par qui) → audit natif.</p>

            <figure class="mermaid-container animate-on-scroll" data-mermaid-source='sequenceDiagram
  participant U as Utilisateur éligible
  participant P as PIM
  participant A as Approbateur
  participant R as Rôle Entra
  U->>P: 1. Demande d&#39;activation<br>(MFA + justification)
  P->>A: 2. Notification d&#39;approbation
  A-->>P: 3. Approuve (ou refuse)
  P->>R: 4. Assigne le rôle<br>(durée limitée : 4h)
  R-->>U: 5. Rôle actif
  Note over R: T+4h : désactivation<br>automatique + trace'>
              <div class="mermaid-render"><em class="text-muted">Chargement du schéma…</em></div>
              <figcaption class="mermaid-caption">Cycle d'activation PIM : demande, MFA, justification, approbation, expiration.</figcaption>
            </figure>

            <div class="quickquestion animate-on-scroll" data-id="qq-pim-controle">
              <div class="quickquestion__label"><svg width="14" height="14"><use href="#icon-sparkles"/></svg> Question rapide</div>
              <p class="quickquestion__question">Un admin doit activer Global Admin pour une opération sensible. Quels contrôles PIM combinez-vous ?</p>
              <button class="btn btn--soft-violet quickquestion__btn" type="button">Voir la réponse</button>
              <div class="quickquestion__answer">
                <strong>MFA + justification + approbation + durée courte.</strong>
                <p class="quickquestion__explanation">Sur un rôle aussi puissant que Global Admin, chaque garde-fou compte : MFA vérifie l'identité au moment de l'activation, la justification force à écrire le pourquoi (audit), l'approbation par un pair introduit un 4-eyes, et la durée courte (1 à 4h) réduit la fenêtre d'exposition. Le ticket est optionnel mais utile pour lier au change management.</p>
              </div>
            </div>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-cours-4">
            <h3>4. Access Reviews</h3>
            <p>Une <strong>Access Review</strong> demande <strong>périodiquement</strong> : « ces personnes doivent-elles <strong>encore</strong> avoir cet accès ? » Elle cible :</p>
            <ul>
              <li>les membres / éligibles d'un <strong>rôle</strong> (ex : qui est éligible Global Admin ?),</li>
              <li>les membres d'un <strong>groupe</strong>,</li>
              <li>l'accès à une <strong>application</strong>,</li>
              <li>les <strong>invités</strong> (B2B).</li>
            </ul>
            <p>Les réviseurs (le responsable, l'intéressé lui-même, ou un désigné) approuvent ou retirent. On peut <strong>auto-appliquer</strong> le résultat : révocation automatique des accès non confirmés.</p>
            <div class="ad-entra-grid">
              <div class="ad-entra-card ad-entra-card--ad">
                <div class="ad-entra-card__label"><svg width="14" height="14"><use href="#icon-server"/></svg> AD CLASSIQUE</div>
                <div class="ad-entra-card__body"><p>Revue des groupes à privilèges à la main, export CSV, rarement.</p></div>
              </div>
              <div class="ad-entra-card ad-entra-card--entra">
                <div class="ad-entra-card__label"><svg width="14" height="14"><use href="#icon-user-check"/></svg> ENTRA (P2)</div>
                <div class="ad-entra-card__body"><p>Access Reviews : planifie, notifie, collecte, applique. <strong>Automatique et tracé.</strong></p></div>
              </div>
              <div class="ad-entra-card ad-entra-card--danger">
                <div class="ad-entra-card__label"><svg width="14" height="14"><use href="#icon-alert-triangle"/></svg> PIÈGE</div>
                <div class="ad-entra-card__body"><p>Créer des accès sans jamais les revoir. Le « privilege creep » (accumulation) est le principal ennemi ; l'Access Review est l'antidote.</p></div>
              </div>
            </div>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-cours-5">
            <h3>5. Entitlement Management (access packages)</h3>
            <p>L'<strong>Entitlement Management</strong> industrialise l'attribution d'accès pour des populations, via des <strong>access packages</strong>.</p>
            <ul>
              <li>Un <strong>access package</strong> regroupe des ressources (groupes, apps, sites SharePoint) qu'on obtient ensemble.</li>
              <li>Publié dans un <strong>catalogue</strong>, il peut être <strong>demandé</strong> par les utilisateurs éligibles (self-service), avec <strong>workflow d'approbation</strong>, <strong>durée</strong>, et <strong>revue</strong> intégrée.</li>
              <li>Idéal pour l'<strong>onboarding</strong> (un nouveau commercial demande le package « Commercial » et reçoit tout d'un coup) et le <strong>B2B</strong> (accès packagé pour partenaires).</li>
            </ul>
            <aside class="callout callout--warning">
              <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
              <div class="callout__content">
                <span class="callout__label">PIÈGE FRÉQUENT</span>
                <p>Confondre <strong>access package</strong> (gouvernance d'accès à des ressources) et <strong>groupe</strong> (le contenant). Un access package <strong>peut inclure</strong> des groupes, mais apporte le workflow autour.</p>
              </div>
            </aside>
            <div class="content-block" style="margin-top:var(--space-4)">
              <h4>Positionnement — synthèse</h4>
              <div class="table-wrapper">
                <table>
                  <thead><tr><th>Brique</th><th>Question à laquelle elle répond</th><th>Licence</th></tr></thead>
                  <tbody>
                    <tr><td><strong>PIM</strong></td><td>Qui peut devenir admin, quand, sous quelles conditions ?</td><td>P2</td></tr>
                    <tr><td><strong>Access Reviews</strong></td><td>Ces accès sont-ils encore justifiés ?</td><td>P2</td></tr>
                    <tr><td><strong>Entitlement Mgmt</strong></td><td>Comment distribuer / gouverner des accès à grande échelle ?</td><td>P2</td></tr>
                  </tbody>
                </table>
              </div>
              <p>Toutes <strong>incluses dans la cible E3 + Entra ID P2</strong>.</p>
            </div>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-cours-sources">
            <h3>Sources Microsoft Learn</h3>
            <ul>
              <li><a href="https://learn.microsoft.com/entra/id-governance/privileged-identity-management/pim-configure" target="_blank" rel="noopener">PIM — vue d'ensemble <svg width="12" height="12" style="display:inline"><use href="#icon-external-link"/></svg></a></li>
              <li><a href="https://learn.microsoft.com/entra/id-governance/privileged-identity-management/pim-how-to-add-role-to-user" target="_blank" rel="noopener">Configurer un rôle Entra dans PIM <svg width="12" height="12" style="display:inline"><use href="#icon-external-link"/></svg></a></li>
              <li><a href="https://learn.microsoft.com/entra/id-governance/access-reviews-overview" target="_blank" rel="noopener">Access Reviews <svg width="12" height="12" style="display:inline"><use href="#icon-external-link"/></svg></a></li>
              <li><a href="https://learn.microsoft.com/entra/id-governance/entitlement-management-overview" target="_blank" rel="noopener">Entitlement Management <svg width="12" height="12" style="display:inline"><use href="#icon-external-link"/></svg></a></li>
              <li><a href="https://learn.microsoft.com/entra/identity/role-based-access-control/security-emergency-access" target="_blank" rel="noopener">Comptes d'accès d'urgence (à articuler avec PIM) <svg width="12" height="12" style="display:inline"><use href="#icon-external-link"/></svg></a></li>
            </ul>
            <p class="text-muted" style="font-size:var(--fs-sm);margin-top:var(--space-3)"><em>Rappel : en cas d'écart entre ce support et le portail, le portail fait foi.</em></p>
          </div>
        </section>

        <!-- LAB -->
        <section class="module-section module-section--lab">
          <div class="section-header">
            <div class="icon-circle icon-circle--lg icon-circle--mint"><svg><use href="#icon-flask-conical"/></svg></div>
            <div class="section-header__content">
              <span class="section-header__label">LAB</span>
              <h2 class="section-header__title">Configurer PIM sur Global Admin + Access Review</h2>
              <p class="section-header__meta">3 parties · TP guidé ~2h30 · Portail : entra.microsoft.com</p>
            </div>
          </div>

          <aside class="callout callout--license animate-on-scroll">
            <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--lavender"><svg><use href="#icon-key-round"/></svg></div></div>
            <div class="callout__content">
              <span class="callout__label">LICENCES REQUISES EN PRODUCTION</span>
              <p><strong>PIM, Access Reviews, Entitlement Management :</strong> incluses dans <strong>Entra ID P2</strong> (cible du projet). Toutes les fonctions du lab sont couvertes.</p>
              <p><strong>Prérequis MFA :</strong> les admins doivent avoir une méthode MFA enrôlée avant que PIM exige la MFA à l'activation. Sinon, blocage.</p>
            </div>
          </aside>

          <div class="content-block animate-on-scroll" data-section-id="s-lab-a">
            <h3>Partie A — Basculer un Global Admin en éligible (45 min)</h3>
            <p><strong>Portail :</strong> <code>Entra admin center &gt; Identity governance &gt; Privileged Identity Management &gt; Microsoft Entra roles</code>.</p>
            <h4>1. Repérer les assignations actives permanentes</h4>
            <p>Liste des rôles &gt; <em>Global Administrator</em> &gt; onglet <strong>Assignments</strong>. Identifiez les « Active permanent ».</p>
            <h4>2. Convertir en éligible</h4>
            <p>Sélectionnez une assignation, action <strong>Update</strong> ou <strong>Remove + Add</strong> en type <em>Eligible</em>. Le compte perd le rôle au repos.</p>
            <h4>3. Configurer les paramètres du rôle</h4>
            <p><code>Role settings &gt; Global Administrator &gt; Edit</code>. Activez : <strong>MFA on activation</strong>, <strong>Justification required</strong>, <strong>Approval required</strong> (désignez un approbateur), <strong>Maximum activation duration = 4 hours</strong>.</p>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-lab-b">
            <h3>Partie B — Activer le rôle (30 min)</h3>
            <p>Avec un compte éligible : <code>My roles &gt; Eligible assignments &gt; Global Administrator &gt; Activate</code>.</p>
            <ol>
              <li>Reason (justification) : « Configuration d'une politique de conformité pour audit XYZ ».</li>
              <li>Durée : 2 heures.</li>
              <li>MFA challenge → validation.</li>
              <li>L'approbateur reçoit une notification, approuve.</li>
              <li>Le rôle devient <strong>actif pour 2h</strong>.</li>
            </ol>
            <p>Ouvrez <code>PIM &gt; Activity &gt; Directory roles audit</code> : chaque étape (demande, MFA, approbation, expiration) apparaît tracée.</p>
          </div>

          <div class="content-block animate-on-scroll" data-section-id="s-lab-c">
            <h3>Partie C — Créer une Access Review sur les éligibles Global Admin (45 min)</h3>
            <p><strong>Portail :</strong> <code>Identity governance &gt; Access Reviews &gt; New access review</code>.</p>
            <ul>
              <li><strong>Type :</strong> Microsoft Entra role.</li>
              <li><strong>Rôle :</strong> Global Administrator.</li>
              <li><strong>Scope :</strong> Eligible + active assignments.</li>
              <li><strong>Réviseurs :</strong> les utilisateurs eux-mêmes (self-review) + un secondaire.</li>
              <li><strong>Récurrence :</strong> trimestrielle.</li>
              <li><strong>Auto-apply :</strong> ON (retirer les accès non confirmés).</li>
              <li><strong>Justification requise pour continuer.</strong></li>
            </ul>
            <aside class="callout callout--info">
              <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--sky"><svg><use href="#icon-info"/></svg></div></div>
              <div class="callout__content">
                <span class="callout__label">RÉSULTAT ATTENDU</span>
                <ul style="margin:var(--space-2) 0 0">
                  <li>Un Global Admin bascule d'actif permanent à éligible.</li>
                  <li>L'activation exige MFA + justification + approbation + durée 4h.</li>
                  <li>L'audit trace toute la chaîne demande → activation → expiration.</li>
                  <li>Une Access Review trimestrielle est planifiée sur les éligibles Global Admin.</li>
                  <li>Auto-apply est activé : les éligibilités non confirmées seront retirées.</li>
                </ul>
              </div>
            </aside>
          </div>
        </section>

        <!-- PIÈGES -->
        <section class="module-section module-section--pieges" data-section-id="s-pieges">
          <div class="section-header">
            <div class="icon-circle icon-circle--lg icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div>
            <div class="section-header__content">
              <span class="section-header__label">PIÈGES CLASSIQUES</span>
              <h2 class="section-header__title">5 réflexes à corriger en gouvernance</h2>
              <p class="section-header__meta">Lecture ~10 min</p>
            </div>
          </div>

          <aside class="callout callout--warning animate-on-scroll">
            <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
            <div class="callout__content">
              <span class="callout__label">PIÈGE 1 — GARDER DES GLOBAL ADMIN ACTIFS PERMANENTS « POUR LA COMMODITÉ »</span>
              <p><strong>Le réflexe :</strong> laisser plusieurs comptes admin permanents, comme les « Domain Admins » d'AD.</p>
              <p><strong>Pourquoi c'est faux :</strong> chaque admin permanent est une cible à valeur maximale, en continu. C'est précisément ce que PIM sert à supprimer.</p>
              <p><strong>La bonne pratique :</strong> basculer en <strong>éligible</strong>, activer au besoin, viser 0 (ou 1-2) actifs permanents. Réduire aussi le <strong>nombre</strong> de personnes éligibles à Global Admin.</p>
            </div>
          </aside>

          <aside class="callout callout--warning animate-on-scroll">
            <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
            <div class="callout__content">
              <span class="callout__label">PIÈGE 2 — CONFONDRE PIM ET COMPTES BREAK-GLASS</span>
              <p><strong>Le réflexe :</strong> « avec PIM j'ai tout couvert, plus besoin de comptes d'urgence ».</p>
              <p><strong>Pourquoi c'est faux :</strong> si PIM, la MFA ou le CA tombent en panne, l'activation peut devenir impossible → verrouillage.</p>
              <p><strong>La bonne pratique :</strong> garder <strong>2 comptes break-glass</strong> hors PIM, exclus du CA, pour l'urgence. PIM gère le quotidien ; les break-glass gèrent la panne.</p>
            </div>
          </aside>

          <aside class="callout callout--warning animate-on-scroll">
            <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
            <div class="callout__content">
              <span class="callout__label">PIÈGE 3 — CRÉER DES ACCÈS SANS JAMAIS LES REVOIR</span>
              <p><strong>Le réflexe :</strong> ajouter des membres à des groupes / rôles et passer à autre chose.</p>
              <p><strong>Pourquoi c'est faux :</strong> le « privilege creep » s'accumule silencieusement. Au bout d'un an, personne ne sait plus qui a accès à quoi ni pourquoi.</p>
              <p><strong>La bonne pratique :</strong> <strong>Access Reviews récurrentes</strong> avec auto-apply, en particulier sur les rôles à privilèges et les invités B2B.</p>
            </div>
          </aside>

          <aside class="callout callout--warning animate-on-scroll">
            <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
            <div class="callout__content">
              <span class="callout__label">PIÈGE 4 — CONFONDRE ACCESS PACKAGE ET GROUPE</span>
              <p><strong>Le réflexe :</strong> « un access package, c'est juste un groupe renommé ».</p>
              <p><strong>Pourquoi c'est faux :</strong> un access package <strong>inclut</strong> des ressources (dont des groupes) mais apporte le <strong>workflow</strong> autour : demande self-service, approbation, durée, revue. Le groupe n'est que le contenant d'accès.</p>
              <p><strong>La bonne pratique :</strong> utiliser l'Entitlement Management quand il faut <strong>gouverner</strong> l'attribution (onboarding, B2B), pas seulement stocker des membres.</p>
            </div>
          </aside>

          <aside class="callout callout--warning animate-on-scroll">
            <div class="callout__icon"><div class="icon-circle icon-circle--sm icon-circle--peach"><svg><use href="#icon-alert-triangle"/></svg></div></div>
            <div class="callout__content">
              <span class="callout__label">PIÈGE 5 — OUBLIER LA MFA ET LE CA COMME PRÉREQUIS DE PIM</span>
              <p><strong>Le réflexe :</strong> activer PIM sans avoir enrôlé la MFA des admins.</p>
              <p><strong>Pourquoi c'est faux :</strong> si l'activation exige la MFA mais que l'admin n'a pas de méthode enrôlée, il ne peut pas activer son rôle → blocage.</p>
              <p><strong>La bonne pratique :</strong> enrôler la MFA des admins (module 04 / 07) <strong>avant</strong> d'exiger la MFA à l'activation PIM. PIM s'articule avec CA et MFA, il ne les remplace pas.</p>
            </div>
          </aside>
        </section>

        <!-- ÉVALUATION -->
        <section class="module-section module-section--eval" data-section-id="s-eval">
          <div class="section-header">
            <div class="icon-circle icon-circle--lg icon-circle--peach"><svg><use href="#icon-graduation-cap"/></svg></div>
            <div class="section-header__content">
              <span class="section-header__label">ÉVALUATION</span>
              <h2 class="section-header__title">Testez vos acquis</h2>
              <p class="section-header__meta">10 questions QCM · cas pratique · ~30 min</p>
            </div>
          </div>

          <div class="content-block animate-on-scroll" style="text-align:center;padding:var(--space-8)">
            <p style="font-size:var(--fs-lg);color:var(--text-secondary);margin-bottom:var(--space-3)">Une évaluation interactive qui vous donne le badge <strong>Acquis</strong> (≥60%) ou <strong>Maîtrisé</strong> (≥80%).</p>
            <div class="eval-status" style="max-width:400px;margin:0 auto var(--space-4)">Évaluation non tentée.</div>
            <button class="btn btn--primary btn--lg qcm-launcher" type="button">
              <svg width="18" height="18"><use href="#icon-sparkles"/></svg>
              Lancer l'évaluation
            </button>
          </div>

          <div class="caspratique animate-on-scroll" data-id="cp-05-pim-6-admins">
            <h3 class="caspratique__title">
              <svg width="24" height="24"><use href="#icon-graduation-cap"/></svg>
              Cas pratique — 6 Global Admin permanents
            </h3>
            <div class="caspratique__statement">
              <p><strong>Contexte :</strong> un audit de sécurité vient de rendre son rapport. Votre tenant compte <strong>6 comptes Global Administrator actifs permanents</strong>. La direction veut réduire le risque sans bloquer l'exploitation.</p>
              <p><strong>Questions :</strong></p>
              <ol>
                <li>Que proposez-vous concrètement avec PIM ?</li>
                <li>Quels contrôles imposez-vous à l'activation de Global Admin ?</li>
                <li>Comment garantir que la situation ne se re-dégrade pas dans 6 mois ?</li>
                <li>Quel garde-fou conservez-vous en dehors de PIM ?</li>
              </ol>
            </div>
            <label class="caspratique__label" for="cp-textarea">Votre réponse :</label>
            <textarea id="cp-textarea" class="caspratique__textarea" placeholder="Rédigez votre démarche ici. Elle est sauvegardée automatiquement dans votre navigateur."></textarea>
            <div class="caspratique__actions">
              <button class="btn btn--soft-peach caspratique__reveal-btn" type="button">Voir la correction type</button>
              <button class="btn btn--ghost btn--sm caspratique__clear-btn" type="button">Effacer ma réponse</button>
            </div>
            <div class="caspratique__correction">
              <h4>Démarche attendue</h4>
              <ol>
                <li><strong>Basculer</strong> les 6 Global Admin d'<strong>actif permanent</strong> vers <strong>éligible</strong> dans PIM. Ne garder aucun (ou au strict minimum) actif permanent. Chacun activera le rôle à la demande.</li>
                <li><strong>Contrôles d'activation Global Admin :</strong> MFA obligatoire, <strong>justification</strong>, <strong>approbation</strong> par un pair désigné, <strong>durée courte</strong> (ex : 1 à 4h), ticket optionnel. Tout tracé.</li>
                <li><strong>Access Review récurrente</strong> (mensuelle / trimestrielle) sur les éligibles Global Admin, avec <strong>auto-apply</strong> pour retirer les éligibilités non confirmées → combat le privilege creep.</li>
                <li><strong>Comptes break-glass</strong> (2, Global Admin cloud-only, <strong>exclus des politiques CA</strong>, hors PIM pour l'urgence) documentés et surveillés par alerte (module 09). PIM ne doit jamais pouvoir vous enfermer dehors.</li>
              </ol>
              <h4>Grille d'auto-évaluation</h4>
              <ul class="caspratique__checklist">
                <li><input type="checkbox" id="cp-1"> <label for="cp-1">A basculé les 6 GA d'actif permanent vers éligible</label></li>
                <li><input type="checkbox" id="cp-2"> <label for="cp-2">A imposé <strong>MFA + justification + approbation + durée courte</strong> à l'activation</label></li>
                <li><input type="checkbox" id="cp-3"> <label for="cp-3">A planifié une <strong>Access Review récurrente</strong> avec auto-apply</label></li>
                <li><input type="checkbox" id="cp-4"> <label for="cp-4">A conservé des <strong>break-glass hors PIM</strong>, exclus du CA</label></li>
                <li><input type="checkbox" id="cp-5"> <label for="cp-5">A évoqué la <strong>trace / audit</strong> des activations</label></li>
                <li><input type="checkbox" id="cp-6"> <label for="cp-6">A cherché à <strong>réduire le nombre</strong> d'éligibles Global Admin, pas seulement leur statut</label></li>
                <li><input type="checkbox" id="cp-7"> <label for="cp-7">A vérifié que la <strong>MFA des admins</strong> est enrôlée avant d'exiger la MFA à l'activation</label></li>
              </ul>
            </div>
          </div>
        </section>
      </article>

      <aside class="module-sidebar-right" aria-label="Progression et sommaire">
        <div class="module-progress-card">
          <div class="module-progress-card__title">Ma progression</div>
          <div class="progress-donut progress-donut--module" data-value="0">
            <svg viewBox="0 0 120 120">
              <circle class="progress-donut__track" cx="60" cy="60" r="50"/>
              <circle class="progress-donut__fill" cx="60" cy="60" r="50" stroke-dasharray="314" stroke-dashoffset="314"/>
            </svg>
            <div class="progress-donut__label">
              <span class="progress-donut__value">0</span>
              <span class="progress-donut__unit">%</span>
            </div>
          </div>
          <div class="module-progress-card__stats">
            <div><strong class="module-progress-card__count">0 / 12</strong><br><span>sections lues</span></div>
          </div>
        </div>

        <nav class="module-toc" aria-label="Sommaire du module">
          <div class="module-toc__title">Sommaire</div>
          <ul class="module-toc__list">
            <li class="module-toc__item"><a class="module-toc__link" href="#s-objectifs" data-target="s-objectifs">Objectifs</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-cours-1" data-target="s-cours-1">1. Rôles permanents</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-cours-2" data-target="s-cours-2">2. Éligibles vs actifs</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-cours-3" data-target="s-cours-3">3. Activation d'un rôle</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-cours-4" data-target="s-cours-4">4. Access Reviews</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-cours-5" data-target="s-cours-5">5. Entitlement Management</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-cours-sources" data-target="s-cours-sources">Sources</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-lab-a" data-target="s-lab-a">Lab · Basculer en éligible</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-lab-b" data-target="s-lab-b">Lab · Activer le rôle</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-lab-c" data-target="s-lab-c">Lab · Access Review</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-pieges" data-target="s-pieges">Pièges classiques</a></li>
            <li class="module-toc__item"><a class="module-toc__link" href="#s-eval" data-target="s-eval">Évaluation</a></li>
          </ul>
        </nav>

        <div class="module-actions">
          <button class="btn btn--primary btn--full qcm-launcher" type="button">
            <svg width="16" height="16"><use href="#icon-sparkles"/></svg>
            Passer l'évaluation
          </button>
          <a class="btn btn--ghost btn--full" href="javascript:void(0)" onclick="if(window.ScormAPI){ScormAPI.terminate();}try{window.parent.location.reload();}catch(e){alert('Retournez sur Moodle pour le module suivant.');}return false;">
            <svg width="16" height="16"><use href="#icon-arrow-left"/></svg>
            Module précédent
          </a>
          <a class="btn btn--soft-violet btn--full" href="javascript:void(0)" onclick="if(window.ScormAPI){ScormAPI.terminate();}try{window.parent.location.reload();}catch(e){alert('Retournez sur Moodle pour le module suivant.');}return false;">
            Module suivant
            <svg width="16" height="16"><use href="#icon-arrow-right"/></svg>
          </a>
        </div>
      </aside>
    </div>
  </main>

  <footer class="site-footer">
    <div class="site-footer__brand">
      <img src="assets/atoo-next-logo.svg" alt="Atoo Next">
      <span class="site-footer__tag">La connexion commence ici</span>
    </div>
    <div>Module 05 · Formation Microsoft Entra ID</div>
  </footer>

  <div class="modal-overlay" id="qcm-modal" role="dialog" aria-modal="true" aria-labelledby="qcm-modal-title">
    <div class="modal" tabindex="-1">
      <header class="modal__header">
        <h2 id="qcm-modal-title" style="margin:0;font-size:var(--fs-xl)">Évaluation — PIM &amp; Gouvernance</h2>
        <button class="modal__close" aria-label="Fermer"><svg><use href="#icon-x"/></svg></button>
      </header>
      <div class="modal__body"></div>
      <footer class="modal__footer"></footer>
    </div>
  </div>

  <script>window.__SCORM_CONTEXT__ = true;</script>
  <script>
    window.MODULE_ID = '05-pim-gouvernance';
    window.MODULE_NUM = '05';
    window.MODULE_STORAGE_KEY = 'formation-entra:module-05';
    window.MODULE_TITLE = 'PIM & Gouvernance';

    window.QCM_DATA = {
      module: '05-pim-gouvernance',
      titre: 'Évaluation — PIM & Gouvernance',
      seuils: { acquis: 60, maitrise: 80 },
      questions: [
        { id: 'q1', type: 'single', enonce: 'Un rôle **éligible** dans PIM signifie :', reference_cours: 'Section 2 — Éligibles vs actifs',
          choix: [
            { id: 'a', texte: 'L\'utilisateur détient le rôle en permanence', correct: false, feedback_si_choisi: 'C\'est la définition d\'un rôle actif permanent — exactement ce que PIM cherche à remplacer.' },
            { id: 'b', texte: 'L\'utilisateur peut **activer** le rôle quand nécessaire, sans le porter au repos', correct: true },
            { id: 'c', texte: 'Le rôle est désactivé', correct: false, feedback_si_choisi: 'Éligible ≠ désactivé : l\'utilisateur peut à tout moment activer son rôle, sous conditions.' },
            { id: 'd', texte: 'Le rôle est réservé aux invités', correct: false, feedback_si_choisi: 'Éligible n\'a rien à voir avec le statut invité / membre : c\'est une propriété d\'assignation de rôle.' }
          ],
          explication: 'Éligible = capacité d\'activer le rôle temporairement. Au repos, aucun privilège n\'est porté. C\'est le cœur du Just-In-Time.'
        },
        { id: 'q2', type: 'single', enonce: 'Quel est l\'intérêt de sécurité de rendre un admin **éligible** plutôt qu\'**actif permanent** ?', reference_cours: 'Section 1 + Section 2',
          choix: [
            { id: 'a', texte: 'Aucun', correct: false, feedback_si_choisi: 'L\'intérêt est structurel : la surface d\'attaque au repos disparaît.' },
            { id: 'b', texte: 'Au repos, il n\'y a aucun privilège à voler ; les droits n\'existent que pendant l\'activation limitée dans le temps', correct: true },
            { id: 'c', texte: 'Ça coûte moins cher', correct: false, feedback_si_choisi: 'Le coût de licence est le même — c\'est un bénéfice de sécurité, pas financier.' },
            { id: 'd', texte: 'Ça supprime la MFA', correct: false, feedback_si_choisi: 'Au contraire : PIM peut exiger la MFA à l\'activation, il ne la remplace jamais.' }
          ],
          explication: 'Le compte éligible n\'a aucun droit au repos. L\'attaquant qui le compromet ne récupère rien tant qu\'il n\'active pas le rôle — activation qui exige MFA, justification, approbation, et n\'est valable qu\'un temps limité.'
        },
        { id: 'q3', type: 'multi', enonce: 'Quels contrôles PIM peut-il imposer à l\'activation ? (plusieurs)', reference_cours: 'Section 3',
          choix: [
            { id: 'a', texte: 'MFA', correct: true },
            { id: 'b', texte: 'Justification', correct: true },
            { id: 'c', texte: 'Approbation', correct: true },
            { id: 'd', texte: 'Durée maximale', correct: true }
          ],
          explication: 'PIM combine ces 4 contrôles au moment de l\'activation, plus éventuellement un numéro de ticket. Tout est tracé — audit natif.'
        },
        { id: 'q4', type: 'single', enonce: 'À quoi sert une **Access Review** ?', reference_cours: 'Section 4',
          choix: [
            { id: 'a', texte: 'À créer des utilisateurs', correct: false, feedback_si_choisi: 'La création se fait dans Users, pas dans Access Reviews qui gouverne l\'existant.' },
            { id: 'b', texte: 'À vérifier périodiquement si des accès sont encore justifiés, avec révocation possible', correct: true },
            { id: 'c', texte: 'À bloquer la legacy auth', correct: false, feedback_si_choisi: 'C\'est le rôle du Conditional Access (module 04), pas d\'une Access Review.' },
            { id: 'd', texte: 'À synchroniser l\'AD', correct: false, feedback_si_choisi: 'La synchronisation est faite par Entra Connect / Cloud Sync (module 03), pas par les revues d\'accès.' }
          ],
          explication: 'Access Review = revue périodique planifiée d\'un rôle, groupe, app ou des invités. Peut auto-appliquer la révocation. C\'est l\'antidote au privilege creep.'
        },
        { id: 'q5', type: 'single', enonce: 'Quelle licence est nécessaire pour PIM et les Access Reviews ?', reference_cours: 'Section 1 + Positionnement',
          choix: [
            { id: 'a', texte: 'Free', correct: false, feedback_si_choisi: 'Free ne donne accès qu\'aux fonctionnalités de base — pas à la gouvernance des identités.' },
            { id: 'b', texte: 'P1', correct: false, feedback_si_choisi: 'P1 couvre CA et Password Protection, mais PIM et les Access Reviews sont bien P2.' },
            { id: 'c', texte: 'P2', correct: true },
            { id: 'd', texte: 'Aucune', correct: false, feedback_si_choisi: 'PIM et Access Reviews sont sous licence P2 — pas gratuits.' }
          ],
          explication: 'PIM, Access Reviews et Entitlement Management sont tous inclus dans Entra ID P2 (dans la cible E3 + P2).'
        },
        { id: 'q6', type: 'single', enonce: 'Un **access package** (Entitlement Management) permet :', reference_cours: 'Section 5',
          choix: [
            { id: 'a', texte: 'De regrouper des ressources demandables en self-service, avec approbation et expiration', correct: true },
            { id: 'b', texte: 'De remplacer le DNS', correct: false, feedback_si_choisi: 'Le DNS relève d\'Azure DNS ou du DNS on-prem, pas de la gouvernance des identités.' },
            { id: 'c', texte: 'De chiffrer les disques', correct: false, feedback_si_choisi: 'Le chiffrement de disque relève d\'Intune / BitLocker (module 06), pas de l\'Entitlement Management.' },
            { id: 'd', texte: 'De créer un contrôleur de domaine', correct: false, feedback_si_choisi: 'Rien à voir : les DC relèvent d\'AD DS. Un access package gouverne l\'accès à des ressources cloud.' }
          ],
          explication: 'Un access package regroupe groupes, apps, sites SharePoint. Publié dans un catalogue, il peut être demandé en self-service, avec workflow d\'approbation, durée et revue. Idéal pour l\'onboarding et le B2B.'
        },
        { id: 'q7', type: 'single', enonce: 'Après activation d\'un rôle avec une durée max de 4h, que se passe-t-il ?', reference_cours: 'Section 3',
          choix: [
            { id: 'a', texte: 'Le rôle reste actif pour toujours', correct: false, feedback_si_choisi: 'Ce serait revenir au mode « actif permanent » qui est justement ce que PIM combat.' },
            { id: 'b', texte: 'Le rôle se désactive automatiquement à l\'expiration', correct: true },
            { id: 'c', texte: 'Le compte est supprimé', correct: false, feedback_si_choisi: 'PIM ne supprime jamais de compte — il gère l\'activation temporaire de rôles.' },
            { id: 'd', texte: 'La MFA est désactivée', correct: false, feedback_si_choisi: 'La MFA n\'est jamais désactivée par une action PIM.' }
          ],
          explication: 'L\'expiration est automatique : la fenêtre d\'exposition est bornée dans le temps. Si l\'admin a encore besoin du rôle, il refait une activation (nouvelle MFA + justification + approbation).'
        },
        { id: 'q8', type: 'single', enonce: 'Le principal ennemi que la gouvernance des identités combat est :', reference_cours: 'Section 4 + Piège 3',
          choix: [
            { id: 'a', texte: 'Le « privilege creep » : l\'accumulation d\'accès jamais revus', correct: true },
            { id: 'b', texte: 'La lenteur du réseau', correct: false, feedback_si_choisi: 'Le réseau n\'a rien à voir avec la gouvernance — c\'est un sujet infrastructure.' },
            { id: 'c', texte: 'Les licences E3', correct: false, feedback_si_choisi: 'Les licences ne sont pas un ennemi à combattre.' },
            { id: 'd', texte: 'Le DNS interne', correct: false, feedback_si_choisi: 'Le DNS n\'a pas de rapport avec la gouvernance des rôles et des accès.' }
          ],
          explication: 'Privilege creep : accumulation silencieuse d\'accès qui ne sont jamais retirés (changement de poste, projet fini, congés prolongés). Les Access Reviews avec auto-apply sont l\'antidote.'
        },
        { id: 'q9', type: 'single', enonce: 'Vrai / Faux : avec PIM, on devrait viser un maximum d\'assignations **actives permanentes** sur Global Admin pour la commodité.', reference_cours: 'Section 2 + Piège 1',
          choix: [
            { id: 'a', texte: 'Vrai', correct: false, feedback_si_choisi: 'C\'est exactement l\'anti-pattern que PIM sert à supprimer.' },
            { id: 'b', texte: 'Faux : l\'objectif est de basculer vers l\'**éligible** et de réduire les actifs permanents', correct: true }
          ],
          explication: 'Cible : 0 (ou 1-2 max) actifs permanents sur Global Admin. Tout le reste bascule en éligible. C\'est le sens même du Just-In-Time.'
        },
        { id: 'q10', type: 'single', enonce: 'Un access package peut inclure :', reference_cours: 'Section 5',
          choix: [
            { id: 'a', texte: 'Uniquement des utilisateurs', correct: false, feedback_si_choisi: 'Un access package regroupe des ressources, pas des utilisateurs (qui en sont les demandeurs).' },
            { id: 'b', texte: 'Des groupes, des applications, des sites SharePoint (regroupés et gouvernés)', correct: true },
            { id: 'c', texte: 'Uniquement des licences', correct: false, feedback_si_choisi: 'Les licences se gèrent via l\'attribution de licences, pas via l\'Entitlement Management.' },
            { id: 'd', texte: 'Uniquement des appareils', correct: false, feedback_si_choisi: 'Les appareils relèvent d\'Intune (module 06), pas des access packages.' }
          ],
          explication: 'Un access package regroupe des ressources hétérogènes (groupes + apps + sites SharePoint) publiées dans un catalogue, gouvernées par un workflow commun.'
        }
      ]
    };
  </script>
  <script src="assets/shared.js"></script>

  <script src="scorm2004-api.js"></script>
  <script src="scorm-bridge.js"></script>
</body>
</html>
