Script di sincronizzazione utente tramite Azure Runbook Automation
Impostazione del runbook dell'account di automazione di Azure
I runbook di Azure fanno parte del servizio Azure Automation che consente di automatizzare attività di gestione del cloud frequenti, lunghe e soggette a errori. Uno dei vari tipi di runbook è PowerShell, che è quello che utilizziamo per la sincronizzazione degli utenti. Lo script del runbook può essere modificato direttamente dal portale Azure o importato da un editor di testo nel runbook di Azure Automation.
Per iniziare a utilizzare il Runbook PowerShell, è necessario creare un account Azure Automation seguendo la guida: Guida rapida - Creare un account Azure Automation utilizzando il portale | Microsoft Learn
Abilitare l'identità gestita per l'account Azure Automation
Se l'account di automazione è già stato creato, quando si accede alla risorsa Azure Automation, seguire i passaggi successivi per abilitare la Managed Identity:
- Fare clic su Identità nel riquadro di sinistra.
- Assicurarsi che sia selezionata la scheda Sistema assegnato
- Commuta lo stato da "off" a "on".
- Copiare l'ID dell'oggetto (principale) in un blocco note. Verrà utilizzato in seguito.
- Fare clic su Salva.
Concessione dei permessi all'identità gestita
Quando viene creata un'identità gestita, essa inizia con una tabula rasa e senza autorizzazioni. Ciò significa che è necessario concedere le autorizzazioni alle risorse con cui deve interagire. Nel nostro caso, dobbiamo concedere all'identità gestita del nostro account Automation l'accesso alla lettura e all'esecuzione di lavori dal Runbook di Azure Automation. Ancora più importante, dobbiamo sapere come concedere all'identità gestita le autorizzazioni per Graph API. Poiché i runbook di Azure Automation non richiedono un segreto o un certificato per connettersi a Graph API, questo è il modo ideale e più sicuro, poiché lasciamo che Azure gestisca tutto il processo di autenticazione nel cloud. Nella scheda Identità:
- Aprire il terminale della shell del cloud
- Eseguire il comando Connect-AzureAD
- Eseguire $ServicePrincipalId = '041faf65-xxxx-xxxx-xxxx-xxxxxxxx' - inserire l'ID del principale dell'oggetto copiato prima
- Eseguire $GraphResource = Get-AzureADServicePrincipal -Filtro "AppId eq '00000003-0000-0000-c000-000000000000′"
- Correre
$Permission1 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'User.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission1.Id -ResourceId $GraphResource.ObjectId
- Correre
$Permission2 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'Group.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission2.Id -ResourceId $GraphResource.ObjectId
- Correre
$Permission3 = $GraphResource.AppRoles | Where-Object {$_.value -eq 'GroupMember.Read.All'}
New-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipalId -PrincipalId $ServicePrincipalId -Id $Permission3.Id -ResourceId $GraphResource.ObjectId
Dopo aver eseguito i comandi, è possibile visualizzare le autorizzazioni concesse per il Service Principal
- Azure AD
- Applicazioni aziendali
- Il nome dell'applicazione deve essere l'account di automazione
- Selezionare Autorizzazioni nel pannello di scorrimento a sinistra.
Installare i moduli necessari per il runbook
Affinché lo script venga eseguito correttamente, è necessario installare un paio di moduli necessari per il Runbook.
Il modulo si trova nell'account di automazione:
- Nel riquadro di sinistra fare clic su Moduli
- Fare clic su Sfoglia galleria
- Cercare e selezionare i seguenti moduli
- 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 - Fate questo per ultimo
- Scegliere la versione del runtime 7.2
- Fare clic su Importa
Creare il runbook e lo script
In questa sezione viene creato il Runbook e vengono configurati lo Script di sincronizzazione utente e la Pianificazione.
- Nel pannello di sinistra dell'account di automazione selezionare Runbook.
- Creare un Runbook
- Scrivere il nome del Runbook
- Selezionare il tipo di Powershell
- Selezionare la versione 7.2
- Creare
Una volta selezionato il Runbook creato, premere Modifica, Modifica nel portale.
Aggiungete il seguente script e modificate i dettagli nelle parentesi e pubblicatelo una volta terminato.
È inoltre possibile selezionare il riquadro di prova e avviare il test dello script per vedere se funziona correttamente.
#Ottenere il token usando un'identità gestita e connettersi al grafo usando quel 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 $gruppiinclusi = @() $includedGroups += '[il nome del vostro gruppo AzureAD qui]' # ottenere l'elenco degli userid del gruppo $gruppi = Get-MgGroup -All | Where-Object { $includedGroups -contains $_.DisplayName } $users_in_groups_userids = @(); Foreach ($gruppo in $gruppi) { $groupMembers = Get-MgGroupMember -All -GroupID $group.id Foreach ($groupMember in $groupMembers) { $users_in_groups_userids += $groupMember.Id } } # ottenere i dettagli richiesti di questi utenti $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 "Caricato da AzureAD: $(($utenti | Measure-Object).Count) utenti" # Definire la mappatura dei gruppi con i ruoli $groupToRoleMapping = @() $groupToRoleMapping += @ # corrisponde a utenti specifici che appartengono a un gruppo per Meet-Work-Visit $$users | Push-AzureADUsersToBB -DeactivateExistingUsersInSameIntegrationThatAreNotLoaded -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[nome dell'integrazione come creato in Admin center > Integrazioni]' |
Creare un'attività pianificata per il Runbook
All'interno del Runbook creato, nel pannello di sinistra, selezionare Pianificazioni.
- Aggiungere un programma
- Pianificazione: consente di collegare una pianificazione al Runbook.
- Aggiungere un programma
- Nome del programma
- Descrizione
- Data/ora di inizio della pianificazione
- Aggiungi ricorrenza
- Scadenza
- Creare
Tornare al Runbook e nel pannello superiore selezionare Link to Schedule e selezionare la pianificazione creata.