Les groupes dynamiques Entra ID sont très pratiques lorsqu’il s’agit d’automatiser l’ajout à un groupe et les déploiements qui s’en suivent.
Bien que les possibilités soient nombreuses (Autopilot, fabricant, attributs AD, ExtensionAttribute, etc.), il n’y a aucun moyen d’utiliser nativement les groupes dynamiques avec les attributs personnalisés (custom attributes) macOS d’Intune (pour l’instant ?).

Vous avez créé vos Custom Attributes et tout fonctionne parfaitement. Vous avez réussi à monitorer vos données préférées (architecture du processeur, état de la batterie, statut de l’EDR, utilisateur root, espace de stockage restant).
Vous aimeriez ajouter automatiquement vos appareils à des groupes en fonction des résultats de ces Custom Attributes ? Vous êtes au bon endroit !
Mes réflexions m’ont mené vers l’un de mes outils favoris pour automatiser des actions : Power Automate.
Note : J’utilise Power Automate, mais vous constaterez que ce sont des API Graph que vous pouvez exploiter via PowerShell ou d’autres outils comme les pipelines Azure DevOps ou des scripts PowerShell personnalisés.
Choisissez votre Custom Attribute
Dans cet exemple, j’ai créé un script pour surveiller l’architecture de l’OS. L’appareil possède-t-il une puce Intel ou Apple :

Il est déployé sur mon groupe d’appareils macOS. Vous pouvez également cibler votre attribut sur des utilisateurs.
Voici le résultat dans les rapports d’attributs :

La colonne Result est celle que nous allons utiliser.
Comprendre le résultat avec Graph Explorer
Tout d’abord, récupérez l’identifiant (ID) de votre attribut personnalisé dans votre navigateur Web (barre d’URL ou inspecteur d’éléments) :

Ouvrez Graph Explorer et recherchez les attributs personnalisés en étendant (expand) managedDevice pour obtenir les informations de l’appareil (vous me remercierez plus tard) : https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/customattribueid/deviceRunStates?$expand=managedDevice

Vous voyez ? C’est le résultat que nous recherchons. Ouvrons Power Automate !
Création d’un flux
Choisissez le déclencheur (trigger) que vous souhaitez. J’ai choisi un simple déclencheur planifié toutes les 30 minutes, mais n’hésitez pas à concevoir un déclencheur plus avancé.



Récupérer le résultat des attributs personnalisés
Choisissez l’étape suivante et recherchez HTTP.
Vous reconnaissez l’URI ? Eh oui, c’est l’URI de l’attribut personnalisé que nous avons vu plus haut.

Qu’en est-il de l’authentification ? Eh bien, c’est à vous de décider.
Utilisez-vous une application enregistrée ? Si oui, renseignez le Tenant ID, l’audience et le Client ID de l’application avec le certificat ou le secret associé.
Si vous vous appuyez sur un certificat, vous devez convertir la clé privée en Base64. Pour ce faire, j’ai utilisé quelques cmdlets PowerShell telles que :
$pass = ConvertTo-SecureString -String ‘pass’ -Force -AsPlainText$$
$Get-ChildItem -Path Cert:\LocalMachine\My\yourthumbprint | Export-PfxCertificate -FilePath C:\private.pfx -Password $pass$$
$privatekey = get-content ‘c:\certificate.pfx’ -Encoding Byte$$
$base64 = [System.Convert]::ToBase64String($privatekey)$$
Note : Assurez-vous d’avoir lié le bon certificat dans votre application enregistrée. Comparer les empreintes (thumbprints) peut vous aider.
Analyser le JSON
Comme le résultat de votre attribut personnalisé s’affiche au format JSON, l’analyse (parsing) est utilisée pour que vous puissiez exploiter les données plus tard dans votre flux. Pas besoin de variable, l’analyse fera l’affaire. Vous pourrez ainsi utiliser chaque champ du fichier.
Créez une étape suivante et choisissez Analyse JSON (Parse JSON) :

Choisissez le Body (Corps) de votre message de résultat comme contenu.
Ensuite, le Schéma. Cliquez sur « Utiliser l’échantillon pour générer le schéma » afin de pouvoir y insérer un exemple de JSON. Power Automate construira un modèle générique (schéma) à partir de ce que vous avez mis dans l’échantillon.
Que pouvez-vous mettre dedans ? Eh bien, retournez dans Graph Explorer, copiez et collez le résultat affiché dans l’invite d’échantillon, puis cliquez sur Terminé. Vous obtiendrez ainsi le schéma approprié, et Power Automate vous offrira ensuite la possibilité d’utiliser n’importe quel champ.


Obtenir l’ID d’appareil Azure AD
Étape cruciale, car c’est le lien entre Entra ID et Intune pour un appareil donné.
Pour ajouter un appareil à un groupe, vous utilisez l’ID d’objet Azure AD (Object ID), que vous pouvez trouver grâce à l’ID d’appareil Azure AD (Device ID), lui-même trouvable dans Intune via l’ID d’appareil Intune. Je vous promets qu’il n’y aura plus d’autres ID… ou pas ?
Créez une nouvelle étape après l’analyse JSON et choisissez à nouveau HTTP :

Méthode : GET
Pour l’URI, je vous suggère d’utiliser la suivante : https://graph.microsoft.com/beta/deviceManagement/managedDevices?$filter=azureADDeviceId eq ‘yourintunedeviceid’&?$select=id
C’est ici que l’ID précédemment analysé est utilisé !
Choisissez le bon ID dans le contenu dynamique de la requête HTTP, car il existe également un ID pour le résultat des attributs personnalisés…
Ne vous souciez pas de la boucle Apply to each, elle sera créée automatiquement.

Note : Vous pouvez voir les deux ID différents dans Graph Explorer. C’est la raison pour laquelle j’ai étendu (expand) managedDevice dans l’URI, afin que vous puissiez obtenir directement les informations de l’appareil.

Analyser l’ID d’appareil Azure AD et l’utiliser pour trouver l’ID d’objet Azure AD
Même procédure que pour l’analyse précédente : récupérez l’URI, allez sur Graph Explorer pour copier/coller le résultat affiché et construisez le schéma.
Une fois que vous avez l’ID d’appareil Azure AD, vous pouvez interroger Entra ID pour obtenir l’Object ID (l’identifiant unique du membre) nécessaire pour l’ajout au groupe. Utilisez une requête HTTP GET vers : https://graph.microsoft.com/v1.0/devices?$filter=deviceId eq ‘azureADDeviceId’
C’est cet Object ID final qui servira de référence pour automatiser l’adhésion au groupe cible.


Maintenant que vous avez l’ID d’appareil Azure AD (Device ID), ajoutez une autre étape HTTP pour trouver l’ID d’objet Azure AD (Object ID) :

Voici l’API que vous recherchez pour obtenir l’ID d’objet Azure AD. Notez que vous n’exploitez pas une API managedDevice mais l’API devices : https://graph.microsoft.com/beta/devices?$filter=deviceid eq ‘yourazureaddeviceid’
À nouveau, analysez le résultat en copiant/collant la sortie de la requête HTTP GET depuis Graph Explorer :


Condition sur le resultMessage
Je souhaite ajouter mon appareil à un groupe Entra ID (Azure AD) en fonction de la valeur de resultMessage.
En résumé : si mon resultMessage contient « Apple », j’ajoute l’appareil à mon groupe Entra ID (non dynamique) qui contiendra mes appareils macOS avec une architecture Apple. Si mon resultMessage ne contient pas « Apple », je considère qu’il s’agit d’une architecture Intel et je l’ajoute à un autre groupe.

Si c’est oui (If yes), je crée une autre requête HTTP, avec la méthode POST cette fois-ci.

L’URI contient l’ID d’objet de mon groupe et le corps (body) contient mon ID d’objet Azure AD. Retrouvez la documentation de l’API ici.
Note : Votre application enregistrée pourrait nécessiter des permissions supplémentaires.
Si ma condition est fausse, j’utilise exactement la même requête HTTP POST, à l’exception de l’URI qui contient l’ID d’objet de mon groupe Azure AD pour les appareils Intel :

RUN
It works !


Confirmez dans votre groupe Entra ID :

Vous souhaiterez peut-être améliorer le flux pour éviter les erreurs lorsque l’appareil est déjà membre du groupe. Une condition placée au bon endroit pourrait vous aider.
Profitez de l’automatisation. Les possibilités sont infinies avec l’API Graph et Power Automate !