Gebruikerssynchronisatie via Azure Runbook Automation
Het Azure Automation Account Runbook instellen
Azure Runbooks maken deel uit van de Azure Automation-service waarmee je veelvoorkomende, tijdrovende en foutgevoelige cloudbeheertaken kunt automatiseren. Een van de verschillende soorten runbooks is PowerShell, dat we gebruiken voor onze gebruikerssynchronisatie. Het script in het runbook kan direct worden bewerkt in het runbook vanuit het Azure-portaal of geïmporteerd vanuit een teksteditor in het Azure Automation runbook.
Om het PowerShell Runbook te kunnen gebruiken, moet een Azure Automation Account worden aangemaakt volgens de handleiding: Snelstart - Maak een Azure Automation-account aan via de portal | Microsoft Learn
Managed Identity inschakelen voor het Azure Automation-account
Als je de Automation Account al hebt aangemaakt, volg dan de volgende stappen om Managed Identity in te schakelen wanneer je naar je Azure Automation resource gaat:
- Klik op Identity aan de linkerkant.
- Zorg ervoor dat het tabblad Systeem toegewezen is geselecteerd
- Schakel de status van 'uit' naar 'aan'.
- Kopieer het object (principal) ID naar een kladblok. Dit wordt later gebruikt.
- Klik op Opslaan.
Rechten toekennen aan de beheerde identiteit
Wanneer een beheerde identiteit wordt aangemaakt, begint deze met een schone lei en zonder permissies. Dit betekent dat je permissies moet toekennen aan de bronnen waarmee het moet communiceren. In ons geval moeten we de beheerde identiteit van ons Automation-account toegang geven om taken te lezen en uit te voeren vanuit het Azure Automation Runbook. Nog belangrijker is dat we moeten weten hoe we de beheerde identiteit rechten kunnen geven op de Graph API. Aangezien Azure Automation Runbooks geen geheim of certificaat nodig hebben om verbinding te maken met Graph API, is dit ideaal en de meest veilige manier omdat we Azure al het authenticatieproces in de cloud laten afhandelen. In de Identity tab:
- Open de cloud shell-terminal
- Voer het Connect-AzureAD commando uit
- Voer $ServicePrincipalId = '041faf65-xxxx-xxxx-xxxx-xxxx-xxxxxxxx' uit - vul de Object principal ID in die u eerder hebt gekopieerd
- Voer $GraphResource = Get-AzureADServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000′" uit.
- Ren
$Permission1 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'User.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission1.Id -ResourceId $GraphResource.ObjectId
- Ren
$Permission2 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'Group.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission2.Id -ResourceId $GraphResource.ObjectId
- Ren
$Permission3 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'GroupMember.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission3.Id -ResourceId $GraphResource.ObjectId
Na het uitvoeren van de commando's kunnen de toegekende machtigingen voor de Service Principal worden bekeken
- Azure AD
- Bedrijfstoepassingen
- De applicatienaam moet de automatiseringsaccount zijn
- Selecteer Machtigingen in het linker scrollpaneel
De benodigde modules voor het runbook installeren
Om het script goed te laten draaien, moeten er een paar vereiste modules worden geïnstalleerd voor het Runbook.
De module kan worden gevonden in het Automatiseringsaccount:
- Klik in het linkerdeelvenster op Modules
- Klik op Galerij doorbladeren
- Zoek en selecteer de volgende modules
- BrightBookingUserAdminTools - Tags: GoBright BrightBooking active-directory azuread PSModule
- Microsoft.Graph.Toepassingen
- Microsoft.Graph.Authenticatie
- Microsoft.Graph.Groups
- Microsoft.Graph.Identity.DirectoryManagement
- Microsoft.Graph.Gebruikers
- Microsoft.Graph - Doe deze als laatste
- Kies de Runtime-versie 7.2
- Klik op Importeren
Het runbook en het script maken
In dit gedeelte wordt het runbook aangemaakt en worden het gebruikerssynchronisatiescript en de planning geconfigureerd.
- Selecteer in het linkerpaneel van de Automatiseringsaccount de optie Runbooks
- Een runbook maken
- Schrijf de naam voor je runbook
- Selecteer Powershell type
- Selecteer versie 7.2
- Maak
Wanneer het aangemaakte runbook is geselecteerd, druk op Bewerken, Bewerken in portaal.
Voeg het volgende script toe en wijzig de details tussen haakjes en publiceer het als het klaar is.
Je kunt ook het testvenster selecteren en het script testen om te zien of het goed werkt.
#Verkrijg het token met behulp van een beheerde identiteit en maak verbinding met de grafiek met dat token 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 += '[uw AzureAD groepsnaam hier]'. # de lijst met gebruikers in de groep krijgen $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 } } # de vereiste gegevens van die gebruikers krijgen $users_full_list = Get-MgUser -All -Selecteer Id,DisplayName,Mail,UserPrincipalName,AccountEnabled,MobilePhone,AssignedLicenses $users = $users_full_list | Where-Object { $users_in_groups_userids -contains $_.Id } Write-Output "Geladen van AzureAD: $(($users | Measure-Object).Count) gebruikers". # de toewijzing van groepen aan rollen definiëren $groupToRoleMapping = @() $groupToRoleMapping += @ # match specifieke gebruikers die tot een groep behoren voor Ontmoet-werkbezoek $$users | Push-AzureADUsersToBB -DeactivateExistingUsersInSameIntegrationThatAreNotLoaded -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[naam van integratie zoals aangemaakt in Beheercentrum > Integraties]'. |
Een geplande taak voor het runbook maken
Selecteer in het aangemaakte runbook aan de linkerkant Schema's
- Een schema toevoegen
- Schema - Een schema koppelen aan je runbook
- Een schema toevoegen
- Naam van het schema
- Beschrijving
- Startdatum/tijd van de planning
- Herhaling toevoegen
- Vervaldatum
- Maak
Ga terug naar het runbook en selecteer in het bovenste paneel Link to Schedule en selecteer de gemaakte Schedule.