Konfigurera begränsad synkronisering från Microsoft Entra-ID till Microsoft Entra Domain Services med hjälp av Microsoft Graph PowerShell

För att tillhandahålla autentiseringstjänster synkroniserar Microsoft Entra Domain Services användare och grupper från Microsoft Entra-ID. I en hybridmiljö kan användare och grupper från en lokal Active Directory Domain Services-miljö (AD DS) först synkroniseras till Microsoft Entra-ID med Microsoft Entra Anslut och sedan synkroniseras till Domain Services.

Som standard synkroniseras alla användare och grupper från en Microsoft Entra-katalog till en domän som hanteras av Domain Services. Om du har specifika behov kan du i stället välja att endast synkronisera en definierad uppsättning användare.

Den här artikeln visar hur du skapar en hanterad domän som använder begränsad synkronisering och sedan ändrar eller inaktiverar uppsättningen begränsade användare med MS Graph PowerShell. Du kan också slutföra de här stegen med hjälp av administrationscentret för Microsoft Entra.

Innan du börjar

För att slutföra den här artikeln behöver du följande resurser och behörigheter:

Översikt över begränsad synkronisering

Som standard synkroniseras alla användare och grupper från en Microsoft Entra-katalog till en hanterad domän. Om bara ett fåtal användare behöver komma åt den hanterade domänen kan du bara synkronisera dessa användarkonton. Den här begränsade synkroniseringen är gruppbaserad. När du konfigurerar gruppbaserad omfångssynkronisering synkroniseras endast de användarkonton som tillhör de grupper som du anger till den hanterade domänen. Kapslade grupper synkroniseras inte, bara de specifika grupper som du väljer.

Du kan ändra synkroniseringsomfånget före eller efter att du har skapat den hanterade domänen. Synkroniseringens omfattning definieras av ett huvudnamn för tjänsten med programidentifieraren 2565bd9d-da50-47d4-8b85-4c97f669dc36. Om du vill förhindra omfångsförlust ska du inte ta bort eller ändra tjänstens huvudnamn. Om den tas bort av misstag kan synkroniseringsomfånget inte återställas.

Tänk på följande varningar om du ändrar synkroniseringsomfånget:

  • En fullständig synkronisering sker.
  • Objekt som inte längre krävs i den hanterade domänen tas bort. Nya objekt skapas i den hanterade domänen.

Mer information om synkroniseringsprocessen finns i Förstå synkronisering i Microsoft Entra Domain Services.

PowerShell-skript för omfångssynkronisering

Om du vill konfigurera begränsad synkronisering med PowerShell sparar du först följande skript i en fil med namnet Select-GroupsToSync.ps1.

Det här skriptet konfigurerar Domain Services för att synkronisera valda grupper från Microsoft Entra-ID. Alla användarkonton som ingår i de angivna grupperna synkroniseras med den hanterade domänen.

Det här skriptet används i de ytterligare stegen i den här artikeln.

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"

Aktivera omfångssynkronisering

Utför följande steg för att aktivera gruppbaserad omfångssynkronisering för en hanterad domän:

  1. Ange först "filteredSync" = "Enabled" på Domain Services-resursen och uppdatera sedan den hanterade domänen. När du uppmanas till det anger du autentiseringsuppgifterna för en global administratör för att logga in på din Microsoft Entra-klientorganisation med hjälp av cmdleten Anslut-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. Ange nu listan över grupper vars användare ska synkroniseras med den hanterade domänen.

    Kör skriptet Select-GroupsToSync.ps1 och ange listan över grupper som ska synkroniseras. I följande exempel är de grupper som ska synkroniseras GroupName1 och GroupName2.

    Varning

    Du måste inkludera gruppen AAD DC-administratörer i listan över grupper för begränsad synkronisering. Om du inte inkluderar den här gruppen kan den hanterade domänen inte användas.

    .\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName2")
    

Om du ändrar synkroniseringsomfånget blir det så att den hanterade domänen synkroniserar om alla data. Objekt som inte längre krävs i den hanterade domänen tas bort och omsynkroniseringen kan ta lång tid att slutföra.

Ändra begränsad synkronisering

Om du vill ändra listan över grupper vars användare ska synkroniseras med den hanterade domänen kör du Select-GroupsToSync.ps1 skriptet och anger den nya listan över grupper som ska synkroniseras.

I följande exempel innehåller de grupper som ska synkroniseras inte längre GroupName2 och innehåller nu GroupName3.

Varning

Du måste inkludera gruppen AAD DC-administratörer i listan över grupper för begränsad synkronisering. Om du inte inkluderar den här gruppen kan den hanterade domänen inte användas.

När du uppmanas till det anger du autentiseringsuppgifterna för en global administratör för att logga in på din Microsoft Entra-klientorganisation med hjälp av cmdleten Anslut-MgGraph:

.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName3")

Om du ändrar synkroniseringsomfånget blir det så att den hanterade domänen synkroniserar om alla data. Objekt som inte längre krävs i den hanterade domänen tas bort och omsynkroniseringen kan ta lång tid att slutföra.

Inaktivera begränsad synkronisering

Om du vill inaktivera gruppbaserad omfångssynkronisering för en hanterad domän anger du "filteredSync" = "Disabled" på Domain Services-resursen och uppdaterar sedan den hanterade domänen. När det är klart är alla användare och grupper inställda på att synkronisera från Microsoft Entra-ID.

När du uppmanas till det anger du autentiseringsuppgifterna för en global administratör för att logga in på din Microsoft Entra-klientorganisation med hjälp av cmdleten Anslut-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

Om du ändrar synkroniseringsomfånget blir det så att den hanterade domänen synkroniserar om alla data. Objekt som inte längre krävs i den hanterade domänen tas bort och omsynkroniseringen kan ta lång tid att slutföra.

Nästa steg

Mer information om synkroniseringsprocessen finns i Förstå synkronisering i Microsoft Entra Domain Services.