Condividi tramite


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:

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:

  1. 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
    
  2. 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.