Script de synchronisation des utilisateurs via Azure Runbook Automation
Configuration du Runbook Azure Automation Account
Les Runbooks Azure font partie du service Azure Automation qui vous permet d'automatiser les tâches de gestion du cloud fréquentes, fastidieuses et sujettes aux erreurs. L'un des différents types de Runbooks est PowerShell, que nous utilisons pour la synchronisation des utilisateurs. Le script du Runbook peut être édité directement dans le Runbook depuis le portail Azure ou importé depuis un éditeur de texte dans le Runbook Azure Automation.
Afin de commencer à utiliser le Runbook PowerShell, un compte Azure Automation doit être créé en suivant le guide : Démarrage rapide - Créer un compte Azure Automation en utilisant le portail | Microsoft Learn
Activer Managed Identity pour le compte Azure Automation
Si vous avez déjà créé le compte d'automatisation, lorsque vous accédez à votre ressource Azure Automation, suivez les étapes suivantes pour activer Managed Identity :
- Cliquez sur Identité dans le volet de gauche.
- Assurez-vous que l'onglet Système affecté est sélectionné
- Faire basculer le statut de "off" à "on".
- Copiez l'ID de l'objet (principal) dans un bloc-notes. Il sera utilisé ultérieurement.
- Cliquez sur Enregistrer.
Accorder des permissions à l'identité gérée
Lorsqu'une identité gérée est créée, elle part d'une page blanche et ne dispose d'aucune autorisation. Cela signifie que vous devrez accorder des permissions aux ressources avec lesquelles elle doit interagir. Dans notre cas, nous devons accorder à l'identité gérée de notre compte Automation l'accès à la lecture ainsi qu'à l'exécution de tâches à partir du Runbook Azure Automation. Plus important encore, nous devons savoir comment accorder à l'identité gérée des permissions sur l'API Graph. Étant donné que les Runbooks d'Azure Automation ne nécessitent pas de secret ou de certificat pour se connecter à Graph API, il s'agit de la méthode idéale et la plus sûre puisque nous laissons Azure gérer tout le processus d'authentification dans le nuage. Dans l'onglet Identity :
- Ouvrez le terminal de l'interpréteur de commandes du nuage
- Exécuter la commande Connect-AzureAD
- Exécuter $ServicePrincipalId = '041faf65-xxxx-xxxx-xxxx-xxxxxxxx' - remplir l'ID du principal de l'objet que vous avez copié précédemment.
- Exécuter $GraphResource = Get-AzureADServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000′"
- Exécuter
$Permission1 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'User.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission1.Id -ResourceId $GraphResource.ObjectId
- Exécuter
$Permission2 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'Group.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission2.Id -ResourceId $GraphResource.ObjectId
- Exécuter
$Permission3 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'GroupMember.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission3.Id -ResourceId $GraphResource.ObjectId
Après l'exécution des commandes, les autorisations accordées au Service Principal peuvent être consultées.
- Azure AD
- Applications d'entreprise
- Le nom de l'application doit être le compte d'automatisation
- Sélectionnez Permissions dans le panneau de défilement de gauche.
Installer les modules requis pour le Runbook
Pour que le script s'exécute correctement, il est nécessaire d'installer quelques modules requis pour le Runbook.
Le module se trouve dans le compte d'automatisation :
- Dans le volet gauche, cliquez sur Modules
- Cliquez sur Parcourir la galerie
- Rechercher et sélectionner les modules suivants
- BrightBookingUserAdminTools - Tags : GoBright BrightBooking active-directory azuread PSModule
- Microsoft.Graph.Applications
- Microsoft.Graph.Authentication
- Microsoft.Graph.Groups
- Microsoft.Graph.Identity.DirectoryManagement
- Microsoft.Graph.Users
- Microsoft.Graph - Faites-le en dernier
- Choisir la version 7.2 du Runtime
- Cliquez sur Importer
Créer le Runbook et le Script
Dans cette section, le Runbook sera créé et le User Sync Script et Schedule seront configurés.
- Dans le panneau gauche du compte d'automatisation, sélectionnez Runbooks.
- Créer un Runbook
- Inscrivez le nom de votre Runbook
- Sélectionner le type de Powershell
- Sélectionner la version 7.2
- Créer
Lorsque le Runbook créé est sélectionné, appuyez sur Modifier, Modifier dans le portail.
Ajoutez le script suivant et modifiez les détails entre parenthèses, puis publiez-le une fois terminé.
Vous pouvez également sélectionner le volet de test et lancer le test du script pour voir s'il fonctionne correctement.
#Obtenir le jeton à l'aide d'une identité gérée et se connecter au graphe à l'aide de ce jeton Connect-AzAccount -Identity -ErrorAction Stop | Out-Null $AccessToken = Get-AzAccessToken -ResourceTypeName MSGraph -ErrorAction Stop | select -ExpandProperty Token | ConvertTo-SecureString -AsPlainText -Force Connect-Graph -AccessToken $AccessToken -ErrorAction Stop | Out-Null $includedGroups = @() $includedGroups += '[votre nom de groupe AzureAD ici]' # obtenir la liste des identifiants du groupe $groups = Get-MgGroup -All | Where-Object { $includedGroups -contains $_.DisplayName } $users_in_groups_userids = @() ; Foreach ($group in $groups) { $groupMembers = Get-MgGroupMember -All -GroupID $group.id Foreach ($groupMember in $groupMembers) { $users_in_groups_userids += $groupMember.Id } } # obtenir les détails requis de ces utilisateurs $users_full_list = Get-MgUser -All -Select Id,DisplayName,Mail,UserPrincipalName,AccountEnabled,MobilePhone,AssignedLicenses $users = $users_full_list | Where-Object { $users_in_groups_userids -contains $_.Id } Write-Output "Chargé depuis AzureAD : $(($users | Measure-Object).Count) users" # définir la correspondance entre les groupes et les rôles $groupToRoleMapping = @() $groupToRoleMapping += @ # correspondre à des utilisateurs spécifiques qui appartiennent à un groupe pour Meet-Work-Visit $$users | Push-AzureADUsersToBB -DeactivateExistingUsersInSameIntegrationThatAreNotLoaded -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[nom de l'intégration telle que créée dans Admin center > Integrations]] |
Créer une tâche planifiée pour le Runbook
Dans le Runbook créé, dans le panneau de gauche, sélectionnez Schedules.
- Ajouter un horaire
- Planification - Lier une planification à votre Runbook
- Ajouter un horaire
- Nom de l'annexe
- Description
- Date/heure de début de l'horaire
- Ajouter la récurrence
- Expiration
- Créer
Retournez dans le Runbook et, dans le panneau supérieur, sélectionnez Link to Schedule (Lien vers la planification ) et sélectionnez la planification créée.