Temps de lecture : 5 minutes

Source
https://mc.merill.net/message/MC1448379

Source Cette information a été reprise également dans la documentation Microsoft Learn, qui affiche désormais un avertissement.

Le 3 novembre 2026, Entra ID arrête de recalculer les règles dynamiques qui utilisent memberOf. Pas d’erreur, pas d’alerte : les groupes concernés se figent. Voici le script PowerShell que j’utilise pour les recenser, voir ce qu’ils alimentent et préparer leur remplacement, sans rien modifier dans le tenant.

Ce qui change

L’opérateur memberOf construit un groupe dynamique à partir des membres d’autres groupes :

user.memberof -any (group.objectId -in ['3f1c...'])

Resté en préversion, il ralentit le calcul de tous les groupes dynamiques du tenant. Microsoft y met fin le 3 novembre 2026 (MC1448379) pour les groupes dynamiques, les unités administratives dynamiques et les affectations automatiques d’Entitlement Management.

Le vrai risque

Rien n’est supprimé : les membres restent figés au dernier calcul. Les arrivants n’obtiennent pas leurs accès, les partants gardent les leurs, et personne n’est prévenu.

Trouver les règles prend une ligne de PowerShell. Le travail, c’est de savoir ce que chaque groupe alimente pour corriger dans le bon ordre.

Où un groupe est-il utilisé ?

Pour chaque groupe ou unité administrative concerné, le script liste tous ses usages. La couleur de chaque ligne est celle qu’on retrouve dans le rapport.

UsageCe qui est remontéCriticité
LicencesLicences attribuées par le groupeCritique
Accès conditionnelStratégies où le groupe est inclus ou exclu, avec leur étatCritique
Rôles EntraRôles actifs ou éligibles PIM, administrateurs délégués sur une AUCritique
MFAMéthodes d’authentification et campagne d’inscriptionCritique
IntuneProfils, conformité, sécurité, scripts, applications, Autopilot, mises à jour, MAMÉlevée
ApplicationsApplications d’entreprise affectées au groupeÉlevée
TeamsÉquipe du groupe, avec son lienÉlevée
SharePointSite du groupe, avec son adresseÉlevée
ExchangeBoîte aux lettres et calendrier du groupeMoyenne
Règles chaînéesAutres groupes dynamiques construits sur celui-ciÉlevée
Packages d’accèsRessources distribuées, demandeurs, approbateursÉlevée
AutresAccès B2B, imbrication de groupes, revues d’accèsMoyenne

Comment travaille le script

  1. InventaireGroupes, unités administratives et stratégies EM dont la règle contient memberOf.
  2. SourcesGroupes cités dans chaque règle : issus de l’AD ou du cloud, dynamiques ou non.
  3. UsagesTout ce que chaque objet alimente, classé par criticité.
  4. RapportUn classeur Excel et une page HTML, avec une piste de remplacement par objet.

Le script n’envoie que des requêtes de lecture. S’il reçoit un jeton avec des droits d’écriture, il le signale.

Prérequis

PowerShell5.1 ou 7
ModulesMicrosoft.Graph.Authentication et ImportExcel. Excel n’a pas besoin d’être installé. S’ils manquent, le script propose de les installer.
CompteRôle Lecteur général, activé au préalable s’il est éligible dans PIM
ApplicationPour une tâche planifiée : inscription avec certificat et 16 permissions Graph en lecture, détaillées sur GitHub

Lancer l’audit

Avant de se connecter, le script explique ce qu’il va faire, vérifie PowerShell, les modules et les droits, puis demande confirmation.

Écran de lancement du script : présentation, contrôle de PowerShell, des modules et des permissions, puis demande de confirmation
Avant toute connexion : ce que fait le script, l’état des modules et les permissions demandées.
# Interactif
.\Invoke-EntraMemberOfAudit.ps1

# Première passe rapide, sans Intune
.\Invoke-EntraMemberOfAudit.ps1 -SkipIntune

# Tâche planifiée (application et certificat)
.\Invoke-EntraMemberOfAudit.ps1 -TenantId contoso.onmicrosoft.com `
  -ClientId <AppId> -CertificateThumbprint <Empreinte> -Unattended

Ce que l’on obtient

Les captures qui suivent viennent d’un vrai tenant de production, anonymisé : 10 groupes dynamiques, dont 3 utilisent memberOf, pour 24 usages.

Le classeur Excel

SynthèseChiffres clés et jours restants, à partager tel quel
Vue par objetUne ligne par groupe, une colonne par usage : on voit d’un coup d’œil où il est utilisé
Groupes, AU, EMRègle, membres, sources et piste de remplacement
DépendancesUn usage par ligne, trié par criticité : la liste de contrôle après correction
Onglet Vue par objet du classeur Excel : une ligne par groupe, une colonne par type d'usage
Le groupe qui réunit tous les utilisateurs porte une stratégie d’accès conditionnel et 22 applications.

La page HTML

Chaque groupe y a sa fiche : son nom en étiquette, sa règle, ses sources, puis ses usages reliés chacun par un cordon de couleur. Les liens mènent directement à l’équipe Teams et au site SharePoint.

Fiches par objet : règle, groupes sources, usages classés par type et piste de remplacement pour chaque groupe
Un groupe sans aucun usage trouvé mérite une vérification : il peut être lu par un outil tiers, hors de portée de l’audit.

La carte montre l’ensemble : groupes sources, groupes concernés et ce qu’ils alimentent. Une stratégie d’accès conditionnel partagée par trois groupes n’apparaît qu’une fois, reliée aux trois.

Carte des dépendances : chaque groupe concerné avec ses groupes sources en pointillés et ses usages en couleur
En pointillés, les groupes sources ; en couleur, ce que chaque groupe alimente.

Remplacer memberOf

Le plus souvent, le groupe intermédiaire ne sert à rien : on peut brancher les services directement sur les groupes sources.

UsageSolution sans nouveau groupe
Accès conditionnel, IntuneCibler les groupes sources, ou les imbriquer dans un groupe assigné : ces services suivent l’imbrication
Licences, applicationsAffecter chaque groupe source : l’imbrication n’est pas suivie, mais une personne présente dans deux groupes ne compte qu’une fois
Stratégies administrateursCondition « Rôles d’annuaire » de l’accès conditionnel, sans groupe

Quand il faut vraiment un groupe à plat (équipe Teams, unité administrative) :

Groupes sourcesSolution
Synchronisés depuis l’ADUne règle sur un attribut déjà renseigné (service, société, suffixe d’UPN), ou un attribut AD (extensionAttribute1 à 15) répliqué par Entra Connect
DynamiquesReprendre leurs critères dans la règle, combinés par -or
Assignés dans le cloudConvertir en groupe assigné, ou passer par un package d’accès
# Avant
user.memberof -any (group.objectId -in ['<Id GG-Siege>'])

# Après
user.extensionAttribute5 -eq "SIEGE"
Avant de convertir

Passer un groupe dynamique en groupe assigné supprime tous ses membres. Exportez la liste avant la conversion et réinjectez-la juste après, sinon licences et stratégies tombent pour tout le monde.

Dans l’ordre : traiter d’abord les objets critiques, tester chaque nouvelle règle sur un groupe de test, comparer les membres, basculer, vérifier les usages, puis relancer l’audit jusqu’à ce qu’il ne trouve plus rien.

Ce que le script ne voit pas

Microsoft Graph n’expose pas tout. À contrôler à part : droits SharePoint donnés directement à un groupe de sécurité, stratégies Teams, Purview, Defender, Exchange (règles de transport, délégations) et RBAC Azure.

Télécharger

Le script, sa documentation et son historique sont sur github.com/BouCloud/MyEntra_Audit_dynamicgroup_memberof.

Référence : Microsoft 365 Message Center MC1448379.