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.

Cet article provient du Centre d'aide de GoBright.

Voir l'article original

Questions fréquentes

Demandez-nous n'importe quoi ! Vous trouverez ici les réponses aux questions les plus fréquemment posées.

Consulter les FAQ

Centre d'aide

Une mine d'or pour tous les responsables informatiques et les gestionnaires d'installations. Plongez dans les aspects techniques de nos produits et solutions.

Visiter le centre d'aide

Bulletin d'information

Vous voulez rester informé de tous les développements dans le domaine du bureau intelligent et de nos nouvelles fonctionnalités ? Abonnez-vous maintenant.

S'abonner