Automatiser les tâches de gouvernance de Microsoft Entra ID avec Azure Automation et Microsoft Graph
Azure Automation est un service cloud Azure qui vous permet d’automatiser les processus et la gestion de systèmes courants et répétitifs. Microsoft Graph est le point de terminaison de l'API unifiée de Microsoft pour les fonctions de Microsoft Entra qui gèrent les utilisateurs, les groupes, les packages d'accès, les révisions d'accès et d'autres ressources dans le répertoire. Vous pouvez gérer Microsoft Entra ID à grande échelle à partir de la ligne de commande PowerShell, à l'aide du kit de développement logiciel (SDK) Microsoft Graph PowerShell. Vous pouvez également inclure les cmdlets PowerShell Microsoft Graph à partir d'un runbook basé sur PowerShell dans Azure Automation, afin d'automatiser des tâches Microsoft Entra à partir d'un script simple.
Azure Automation et le kit de développement logiciel (SDK) Graph PowerShell prennent en charge l'authentification basée sur les certificats et les autorisations d'application, de sorte que vous pouvez authentifier des runbooks Azure Automation sur Microsoft Entra ID sans avoir besoin d'un contexte utilisateur.
Cet article vous montre comment procéder à l'utilisation d'Azure Automation pour la gouvernance de Microsoft Entra ID, en créant un simple runbook qui interroge la gestion des droits par le biais de Microsoft Graph PowerShell.
Créer un compte Azure Automation
Conseil
Les étapes décrites dans cet article pourraient varier légèrement en fonction du portail de départ.
Azure Automation fournit un environnement hébergé dans le cloud pour l’exécution de runbooks. Ces runbooks peuvent démarrer automatiquement en fonction d’une planification ou être déclenchés par des webhooks ou par Logic Apps.
L’utilisation de Azure Automation vous oblige à avoir un abonnement Azure.
Rôle prérequis : abonnement Azure ou propriétaire du groupe de ressources
Connectez-vous au portail Azure. Vérifiez que vous avez accès à l’abonnement ou au groupe de ressources où se trouve le compte Azure Automation.
Sélectionnez l’abonnement ou le groupe de ressources, puis sélectionnez Créer. Saisissez Automation, sélectionnez le service Automation Azure de Microsoft, puis sélectionnez Créer.
Une fois le compte Azure Automation créé, sélectionnez Contrôle d’accès (IAM). Sélectionnez ensuite Afficher dans Afficher l’accès à cette ressource. Ces utilisateurs et principaux de service seront par la suite en mesure d’interagir avec le service Microsoft par le biais des scripts à créer dans ce compte Azure Automation.
Passez en revue les utilisateurs et les principaux de service qui y sont répertoriés et vérifiez qu’ils sont autorisés. Supprimez tous les utilisateurs non autorisés.
Créer une paire de clés et un certificat auto-signés sur votre ordinateur
Pour qu'il puisse fonctionner sans avoir besoin de vos informations d'identification personnelles, le compte Azure Automation que vous avez créé devra s'authentifier auprès de Microsoft Entra ID à l'aide d'un certificat.
Si vous disposez déjà d'une paire de clés pour authentifier votre service auprès de Microsoft Entra ID et d'un certificat que vous avez reçu d'une autorité de certification, passez à la section suivante.
Pour générer un certificat auto-signé,
suivez les instructions de l’option 2 comment créer un certificat auto-signé, pour créer et exporter un certificat avec sa clé privée.
affichez l'empreinte du certificat.
$cert | ft Thumbprint
Une fois les fichiers exportés, vous pouvez supprimer le certificat et la paire de clés du magasin de certificats de votre utilisateur local. Dans les étapes suivantes, vous supprimez également les fichiers
.pfx
et.crt
, une fois le certificat et la clé privée chargés dans les services Azure Automation et Microsoft Entra.
Télécharger la paire de clés pour Azure Automation
Votre runbook dans Azure Automation récupère la clé privée du fichier .pfx
et l’utilise pour l’authentification auprès de Microsoft Graph.
Dans le Portail Azure pour le compte Azure Automation, sélectionnez Certificats et Ajoutez un certificat.
Télécharger le fichier
.pfx
créé précédemment et tapez le mot de passe que vous avez fourni lors de la création du fichier.Une fois la clé privée téléchargée, enregistrez la date d’expiration du certificat.
Vous pouvez maintenant supprimer le fichier
.pfx
de votre ordinateur local. Cependant, ne supprimez pas encore le fichier.crt
, car vous en aurez besoin dans une étape ultérieure.
Ajouter des modules pour Microsoft Graph à votre compte Azure Automation
Par défaut, Azure Automation n’a pas de modules PowerShell préchargés pour Microsoft Graph. Vous devez ajouter Microsoft.Graph.Authentification, puis des modules supplémentaires, à votre compte Automation depuis la galerie.
Dans le Portail Azure pour le compte Azure Automation, sélectionnez Modules, puis Parcourir la galerie.
Dans la barre de recherche, tapez Microsoft.Graph.Authentification. Choisissez le module, sélectionnez Importer, puis sélectionnez OK pour que Microsoft Entra ID commence à importer le module. Après avoir sélectionné OK, l’importation d’un module peut prendre plusieurs minutes. N’essayez pas d’ajouter d’autres modules de Microsoft Graph tant que l’importation du module Microsoft.Graph.Authentification n’est pas terminée, car ces autres modules disposent de Microsoft.Graph.Authentification comme condition préalable.
Revenez à la liste Modules, puis sélectionnez Actualiser. Une fois l’état du module Microsoft.Graph.Authentification est passé à Disponible, vous pouvez importer le module suivant.
Si vous utilisez les cmdlets pour les fonctions de gouvernance de Microsoft Entra ID, comme la gestion des droits d'utilisation, répétez le processus d'importation pour le module Microsoft.Graph.Identity.Governance.
Importez d’autres modules dont votre script peut avoir besoin, tels que Microsoft.Graph.Users. Par exemple, si vous utilisez Protection des ID Microsoft Entra, vous avez tout intérêt à importer le module Microsoft.Graph.Identity.SignIns.
Créer une inscription d’application et attribuer des autorisations
Ensuite, vous créez une inscription d’application dans Microsoft Entra ID, afin que cette dernière reconnaisse le certificat de votre runbook Azure Automation pour l’authentification.
- Connectez-vous au Centre d’administration Microsoft Entra au moins en tant qu’Administrateur d’application.
- Accédez à Identité>Applications>Inscriptions d’applications.
- Sélectionnez Nouvelle inscription.
- Saisissez un nom pour l’application, puis sélectionnez Registre.
- Une fois l’inscription d’application créée, prenez note de l’ID (client) de l’application et de l’ID (client) de l’annuaire, car vous aurez besoin de ces éléments par la suite.
- Sélectionnez Certificats et secrets>Certificats>Charger un certificat.
- Télécharger le fichier
.crt
créé précédemment.
- Télécharger le fichier
- Sélectionnez Autorisations de l’API>Ajouter une autorisation.
- Sélectionnez Microsoft Graph>Autorisations de l’application.
Sélectionnez chacune des autorisations nécessaires à votre compte Azure Automation, puis sélectionnez Ajouter des autorisations.
- Si votre runbook exécute uniquement des requêtes ou des mises à jour dans un seul catalogue, vous n’avez pas besoin de lui attribuer des autorisations d’application à l’échelle du locataire. Au lieu de cela, vous pouvez attribuer le principal de service au rôle Propriétaire de catalogue ou Lecteur de catalogue du catalogue.
- Si votre runbook effectue uniquement des requêtes pour la gestion des droits d'utilisation, il peut utiliser l’autorisation EntitlementManagement.Read.All.
- Si votre runbook apporte des modifications à la gestion des droits d’utilisation, par exemple pour créer des attributions sur plusieurs catalogues, utilisez l’autorisation EntitlementManagement.ReadWrite.All.
- Pour les autres API, assurez-vous que l’autorisation requise est ajoutée. Par exemple, pour Microsoft Entra ID Protection, l’autorisation IdentityRiskyUser.Read.All peut être nécessaire.
Accorder un consentement d’administrateur
L’application créée dans la section précédente possède des autorisations qui nécessitent une personne disposant au moins du rôle « Administrateur de rôle privilégié » pour les approuver avant qu’elles puissent fonctionner comme prévu.
- Connectez-vous au centre d’administration Microsoft Entra au minimum en tant qu’Administrateur de rôle privilégié.
- Accédez à Identité>Applications>Inscriptions d’applications>Toutes les applications.
- Sélectionnez l’application créée dans la section précédente.
- Sélectionnez les autorisations d’API et examinez les autorisations demandées.
- Le cas échéant, sélectionnez Accorder le consentement de l’administrateur pour « Votre nom de locataire » pour accorder ces autorisations à l’application.
Créer des variables Azure Automation
Dans cette étape, vous créez dans le compte Azure Automation trois variables que le runbook utilise pour déterminer le mode d'authentification auprès de Microsoft Entra ID.
Dans le Portail Azure, revenez au compte Azure Automation.
Sélectionnez Variables, puis Ajouter une variable.
Créez une variable nommée Thumbprint. Tapez, comme valeur de la variable, l’empreinte du certificat qui a été générée précédemment.
Créez une variable nommée ClientId. Saisissez, comme valeur de la variable, l'identifiant client de l'application inscrite dans Microsoft Entra ID.
Créez une variable nommée TenantId. Tapez, comme valeur de la variable, l’ID de l’abonné du répertoire dans lequel l’application a été inscrite.
Créer un runbook Azure Automation PowerShell qui peut utiliser Graph
Dans cette étape, vous créez un runbook initial. Vous pouvez déclencher ce runbook pour vérifier que l’authentification à l’aide du certificat créé précédemment est réussie.
Sélectionnez Runbooks et Créer un runbook.
Tapez le nom du runbook, sélectionnez PowerShell comme type de runbook à créer, puis sélectionnez Créer.
Une fois le runbook créé, un volet d’édition de texte s’affiche pour vous permettre de taper le code source PowerShell du runbook.
Tapez le PowerShell suivant dans l’éditeur de texte.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
Connect-MgGraph -clientId $ClientId -tenantId $TenantId -certificatethumbprint $Thumbprint
Sélectionnez Volet de test, puis Démarrer. Attendez quelques secondes que le traitement Azure Automation de votre script runbook se termine.
Si l’exécution de votre runbook réussit, le message Bienvenue dans Microsoft Graph ! s’affiche.
Après avoir vérifié la capacité de votre runbook à s'authentifier auprès de Microsoft Graph, étendez votre runbook en ajoutant des cmdlets permettant d'interagir avec les fonctionnalités de Microsoft Entra.
Étendre le runbook pour utiliser la gestion des droits d’utilisation
Si l’inscription de l’application pour votre runbook dispose des autorisations EntitlementManagement.Read.All ou EntitlementManagement.ReadWrite.All, elle peut utiliser les API de gestion des droits d’utilisation.
- Par exemple, pour obtenir une liste des packages d'accès à la gestion des droits d'utilisation de Microsoft Entra, vous pouvez mettre à jour le runbook créé ci-dessus et remplacer le texte par le PowerShell suivant.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
$auth = Connect-MgGraph -clientId $ClientId -tenantid $TenantId -certificatethumbprint $Thumbprint
Import-Module Microsoft.Graph.Identity.Governance
$ap = @(Get-MgEntitlementManagementAccessPackage -All -ErrorAction Stop)
if ($null -eq $ap -or $ap.Count -eq 0) {
ConvertTo-Json @()
} else {
$ap | Select-Object -Property Id,DisplayName | ConvertTo-Json -AsArray
}
Sélectionnez Volet de test, puis Démarrer. Attendez quelques secondes que le traitement Azure Automation de votre script runbook se termine.
Si l’exécution a réussi, la sortie à la place du message d’accueil est un tableau JSON. Le tableau JSON comprend l’ID et le nom d’affichage de chaque package d’accès retourné par la requête.
Fournir des paramètres au runbook (facultatif)
Vous pouvez également ajouter des paramètres d’entrée à votre runbook, en ajoutant une section Param
en haut du script PowerShell. Par exemple,
Param
(
[String] $AccessPackageAssignmentId
)
Le format des paramètres autorisés dépend du service appelant. Si votre runbook accepte les paramètres de l’appelant, vous devez ajouter une logique de validation à votre runbook pour vérifier que les valeurs de paramètres fournies sont adaptées au mode de démarrage du runbook. Par exemple, si votre runbook est démarré par un webhook, Azure Automation n’assure pas d’authentification dans le cas d’une requête de webhook tant que celle-ci est adressée à la bonne URL. Vous aurez donc besoin d’un autre moyen de valider la requête.
Une fois que vous avez configuré les paramètres d’entrée de runbook, lorsque vous testez votre runbook, vous pouvez fournir des valeurs via la page Test. Plus tard, lorsque le runbook est publié, vous pouvez fournir des paramètres lors du démarrage du runbook à partir de PowerShell, de l’API REST ou d’une application logique.
Analyser la sortie d’un compte Azure Automation dans Logic Apps (facultatif)
Une fois votre runbook publié, vous pouvez créer une planification dans Azure Automation et lier votre runbook à cette planification pour qu’elle s’exécute automatiquement. La planification de runbooks à partir d’Azure Automation convient dans le cas des runbooks qui n’ont pas besoin d’interagir avec d’autres services Azure ou Office 365 qui ne disposent pas d’interfaces PowerShell.
Si vous souhaitez envoyer la sortie de votre runbook à un autre service, vous pouvez envisager d’utiliser Azure Logic Apps pour démarrer votre runbook Azure Automation, car Logic Apps peut également analyser les résultats.
Dans Azure Logic Apps, créez Logic Apps dans le concepteur de Logic Apps en commençant par la Périodicité.
Ajoutez l’opération Créer un travail à partir de Azure Automation. Authentifiez-vous sur Microsoft Entra ID et sélectionnez l'inscription, le groupe de ressources et le compte d'automatisation créés précédemment. Sélectionnez Attendre le travail.
Ajoutez le paramètre Nom du runbook et tapez le nom du runbook à démarrer. Si le runbook a des paramètres d'entrée, vous pouvez leur fournir les valeurs.
Sélectionnez Nouvelle étape et ajoutez l’opération Obtenir la sortie de la tâche. Sélectionnez le même abonnement, groupe de ressources, compte Automation qu’à l’étape précédente, puis sélectionnez la valeur dynamique de l'ID de travail de l’étape précédente.
Vous pouvez ensuite ajouter d’autres opérations à Logic Apps, telles que l'action Analyser JSON, qui utilise le Contenu renvoyé lorsque le runbook est terminé. (Si vous générez automatiquement le schéma Analyser JSON à partir d’un exemple de charge utile, veillez à prendre en compte le script PowerShell potentiellement en retournant null ; vous devrez peut-être modifier certains éléments
"type": "string"
en"type": ["string", "null"]
dans le schéma.)
Dans Azure Automation, un runbook PowerShell peut échouer s’il tente d’écrire une grande quantité de données dans le flux de sortie en même temps. En règle générale, vous pouvez contourner ce problème en faisant en sorte que les runbook affichent uniquement les informations requises par l’application logique, par exemple en utilisant la cmdlet Select-Object -Property
pour exclure les propriétés inutiles.
Planifier le maintien du certificat à jour
Si vous avez créé un certificat auto-signé en suivant les étapes ci-dessus pour l’authentification, gardez à l’esprit que le certificat a une durée de vie limitée. Après quoi, il expire. Vous devez regénérer le certificat et charger le nouveau certificat avant sa date d’expiration.
Il existe deux emplacements où vous pouvez voir la date d’expiration dans le Portail Azure.
- Dans Azure Automation, l’écran Certificats affiche la date d’expiration du certificat.
- Dans Microsoft Entra ID, sur la page de l'inscription de l'application, l'écran Certificats et secrets affiche la date d'expiration du certificat utilisé pour le compte Azure Automation.