Configurare la sincronizzazione con ambito da Microsoft Entra ID a Microsoft Entra Domain Services tramite Microsoft Graph PowerShell
Per fornire servizi di autenticazione, Microsoft Entra Domain Services sincronizza utenti e gruppi da Microsoft Entra ID. In un ambiente ibrido, gli utenti e i gruppi di un ambiente di servizi di dominio di Active Directory locale possono essere prima sincronizzati con Microsoft Entra ID usando Microsoft Entra Connessione e quindi sincronizzati con Servizi di dominio.
Per impostazione predefinita, tutti gli utenti e i gruppi di una directory Microsoft Entra vengono sincronizzati con un dominio gestito di Servizi di dominio. Se si hanno esigenze specifiche, è invece possibile scegliere di sincronizzare solo un set definito di utenti.
Questo articolo illustra come creare un dominio gestito che usa la sincronizzazione con ambito e quindi modificare o disabilitare il set di utenti con ambito usando MS Graph PowerShell. È anche possibile completare questi passaggi usando l'interfaccia di amministrazione di Microsoft Entra.
Operazioni preliminari
Per completare le procedure descritte in questo articolo, sono necessari i privilegi e le risorse seguenti:
- Una sottoscrizione di Azure attiva.
- Se non si ha una sottoscrizione di Azure, creare un account.
- Un tenant di Microsoft Entra associato alla sottoscrizione, sincronizzato con una directory locale o una directory solo cloud.
- Se necessario, creare un tenant di Microsoft Entra o associare una sottoscrizione di Azure all'account.
- Un dominio gestito di Microsoft Entra Domain Services abilitato e configurato nel tenant di Microsoft Entra.
- Se necessario, completare l'esercitazione per creare e configurare un dominio gestito di Microsoft Entra Domain Services.
- Per modificare l'ambito di sincronizzazione dei servizi di dominio, sono necessari i ruoli Application Amministrazione istrator e Groups Amministrazione istrator Microsoft Entra nel tenant.
Panoramica della sincronizzazione con ambito
Per impostazione predefinita, tutti gli utenti e i gruppi di una directory Microsoft Entra vengono sincronizzati con un dominio gestito. Se solo pochi utenti devono accedere al dominio gestito, è possibile sincronizzare solo gli account utente. Questa sincronizzazione con ambito è basata su gruppi. Quando si configura la sincronizzazione con ambito basato su gruppo, solo gli account utente che appartengono ai gruppi specificati vengono sincronizzati con il dominio gestito. I gruppi annidati non vengono sincronizzati, ma solo i gruppi specifici selezionati.
È possibile modificare l'ambito di sincronizzazione prima o dopo la creazione del dominio gestito. L'ambito della sincronizzazione è definito da un'entità servizio con l'identificatore dell'applicazione 2565bd9d-da50-47d4-8b85-4c97f669dc36. Per evitare la perdita di ambito, non eliminare o modificare l'entità servizio. Se viene eliminato accidentalmente, l'ambito di sincronizzazione non può essere recuperato.
Tenere presente quanto segue se si modifica l'ambito di sincronizzazione:
- Viene eseguita una sincronizzazione completa.
- Gli oggetti non più necessari nel dominio gestito vengono eliminati. Vengono creati nuovi oggetti nel dominio gestito.
Per altre informazioni sul processo di sincronizzazione, vedere Informazioni sulla sincronizzazione in Servizi di dominio Microsoft Entra.
Script di PowerShell per la sincronizzazione con ambito
Per configurare la sincronizzazione con ambito tramite PowerShell, salvare prima lo script seguente in un file denominato Select-GroupsToSync.ps1
.
Questo script configura Servizi di dominio per sincronizzare i gruppi selezionati da Microsoft Entra ID. Tutti gli account utente che fanno parte dei gruppi specificati vengono sincronizzati con il dominio gestito.
Questo script viene usato nei passaggi aggiuntivi di questo articolo.
param (
[Parameter(Position = 0)]
[String[]]$groupsToAdd
)
Connect-MgGraph -Scopes "Directory.Read.All","AppRoleAssignment.ReadWrite.All"
$sp = Get-MgServicePrincipal -Filter "AppId eq '2565bd9d-da50-47d4-8b85-4c97f669dc36'"
$role = $sp.AppRoles | where-object -FilterScript {$_.DisplayName -eq "User"}
Write-Output "`n****************************************************************************"
Write-Output "Total group-assignments need to be added: $($groupsToAdd.Count)"
$newGroupIds = New-Object 'System.Collections.Generic.HashSet[string]'
foreach ($groupName in $groupsToAdd)
{
try
{
$group = Get-MgGroup -Filter "DisplayName eq '$groupName'"
$newGroupIds.Add($group.Id)
Write-Output "Group-Name: $groupName, Id: $($group.Id)"
}
catch
{
Write-Error "Failed to find group: $groupName. Exception: $($_.Exception)."
}
}
Write-Output "****************************************************************************`n"
Write-Output "`n****************************************************************************"
$currentAssignments = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $sp.Id -All:$true
Write-Output "Total current group-assignments: $($currentAssignments.Count), SP-ObjectId: $($sp.Id)"
$currAssignedObjectIds = New-Object 'System.Collections.Generic.HashSet[string]'
foreach ($assignment in $currentAssignments)
{
Write-Output "Assignment-ObjectId: $($assignment.PrincipalId)"
if ($newGroupIds.Contains($assignment.PrincipalId) -eq $true)
{
Write-Output "This assignment is not needed anymore. Removing it! Assignment-ObjectId: $($assignment.PrincipalId)"
Remove-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $sp.Id -AppRoleAssignmentId $assignment.Id
}
else
{
$currAssignedObjectIds.Add($assignment.PrincipalId)
}
}
Write-Output "****************************************************************************`n"
Write-Output "`n****************************************************************************"
foreach ($id in $newGroupIds)
{
try
{
if ($currAssignedObjectIds.Contains($id) -eq $false)
{
Write-Output "Adding new group-assignment. Role-Id: $($role.Id), Group-Object-Id: $id, ResourceId: $($sp.Id)"
$appRoleAssignment = @{
"principalId"= $group.Id
"resourceId"= $sp.Id
"appRoleId"= $role.Id
}
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $sp.Id -BodyParameter $appRoleAssignment
}
else
{
Write-Output "Group-ObjectId: $id is already assigned."
}
}
catch
{
Write-Error "Exception occurred assigning Object-ID: $id. Exception: $($_.Exception)."
}
}
Write-Output "****************************************************************************`n"
Abilitare la sincronizzazione con ambito
Per abilitare la sincronizzazione con ambito gruppo per un dominio gestito, completare la procedura seguente:
Impostare prima "filteredSync" = "Enabled" nella risorsa servizi di dominio, quindi aggiornare il dominio gestito. Quando richiesto, specificare le credenziali per un Amministrazione istrator globale per accedere al tenant di Microsoft Entra usando il cmdlet Connessione-MgGraph:
# Connect to your Entra ID tenant Connect-MgGraph -Scopes "Application.ReadWrite.All","Group.ReadWrite.All" # Retrieve the Microsoft Entra DS resource. $DomainServicesResource = Get-AzResource -ResourceType "Microsoft.AAD/DomainServices" # Enable group-based scoped synchronization. $enableScopedSync = @{"filteredSync" = "Enabled"} # Update the Microsoft Entra DS resource Set-AzResource -Id $DomainServicesResource.ResourceId -Properties $enableScopedSync
Specificare ora l'elenco dei gruppi i cui utenti devono essere sincronizzati con il dominio gestito.
Eseguire lo
Select-GroupsToSync.ps1
script e specificare l'elenco di gruppi da sincronizzare. Nell'esempio seguente i gruppi da sincronizzare sono GroupName1 e GroupName2.Avviso
È necessario includere il gruppo AAD DC Amministrazione istrators nell'elenco dei gruppi per la sincronizzazione con ambito. Se non si include questo gruppo, il dominio gestito non è utilizzabile.
.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName2")
La modifica dell'ambito della sincronizzazione fa sì che il dominio gestito risincronizzi tutti i dati. Gli oggetti non più necessari nel dominio gestito vengono eliminati e la risincronizzazione potrebbe richiedere molto tempo.
Modificare la sincronizzazione con ambito
Per modificare l'elenco di gruppi i cui utenti devono essere sincronizzati con il dominio gestito, eseguire Select-GroupsToSync.ps1
lo script e specificare il nuovo elenco di gruppi da sincronizzare.
Nell'esempio seguente i gruppi da sincronizzare non includono più GroupName2 e ora includono GroupName3.
Avviso
È necessario includere il gruppo AAD DC Amministrazione istrators nell'elenco dei gruppi per la sincronizzazione con ambito. Se non si include questo gruppo, il dominio gestito non è utilizzabile.
Quando richiesto, specificare le credenziali per un Amministrazione istrator globale per accedere al tenant di Microsoft Entra usando il cmdlet Connessione-MgGraph:
.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName3")
La modifica dell'ambito della sincronizzazione fa sì che il dominio gestito risincronizzi tutti i dati. Gli oggetti non più necessari nel dominio gestito vengono eliminati e la risincronizzazione potrebbe richiedere molto tempo.
Disabilitare la sincronizzazione con ambito
Per disabilitare la sincronizzazione con ambito basato su gruppo per un dominio gestito, impostare "filteredSync" = "Disabled" nella risorsa servizi di dominio, quindi aggiornare il dominio gestito. Al termine, tutti gli utenti e i gruppi vengono impostati per la sincronizzazione da Microsoft Entra ID.
Quando richiesto, specificare le credenziali per un Amministrazione istrator globale per accedere al tenant di Microsoft Entra usando il cmdlet Connessione-MgGraph:
# Connect to your Entra ID tenant
Connect-MgGraph -Scopes "Application.ReadWrite.All","Group.ReadWrite.All"
# Retrieve the Microsoft Entra DS resource.
$DomainServicesResource = Get-AzResource -ResourceType "Microsoft.AAD/DomainServices"
# Disable group-based scoped synchronization.
$disableScopedSync = @{"filteredSync" = "Disabled"}
# Update the Microsoft Entra DS resource
Set-AzResource -Id $DomainServicesResource.ResourceId -Properties $disableScopedSync
La modifica dell'ambito della sincronizzazione fa sì che il dominio gestito risincronizzi tutti i dati. Gli oggetti non più necessari nel dominio gestito vengono eliminati e la risincronizzazione potrebbe richiedere molto tempo.
Passaggi successivi
Per altre informazioni sul processo di sincronizzazione, vedere Informazioni sulla sincronizzazione in Servizi di dominio Microsoft Entra.