Konfigurieren der bereichsbezogenen Synchronisierung von Microsoft Entra ID mit Microsoft Entra Domain Services mithilfe von Microsoft Graph PowerShell

Um Authentifizierungsdienste bereitzustellen, synchronisiert Microsoft Entra Domain Services Benutzer und Gruppen aus Microsoft Entra ID. In einer Hybridumgebung können Benutzer und Gruppen aus einer lokalen Active Directory Domain Services (AD DS)-Umgebung zuerst mithilfe von Microsoft Entra Connect mit Microsoft Entra ID und anschließend mit Domain Services synchronisiert werden.

Standardmäßig werden alle Benutzer und Gruppen aus einem Microsoft Entra-Verzeichnis in einer verwalteten Domain Services-Domäne synchronisiert. Bei speziellen Anforderungen können Sie stattdessen festlegen, dass nur eine definierte Gruppe von Benutzern synchronisiert werden soll.

In diesem Artikel erfahren Sie, wie Sie mithilfe von MS Graph PowerShell eine verwaltete Domäne mit einer bereichsbezogenen Synchronisierung erstellen und anschließend die Gruppe der Benutzer für diesen Bereich ändern oder deaktivieren. Sie können diese Schritte auch im Microsoft Entra Admin Center ausführen.

Voraussetzungen

Für diesen Artikel benötigen Sie die folgenden Ressourcen und Berechtigungen:

Übersicht über die bereichsbezogene Synchronisierung

Standardmäßig werden alle Benutzer und Gruppen aus einem Microsoft Entra-Verzeichnis in einer verwalteten Domäne synchronisiert. Wenn nur wenige Benutzer auf die verwaltete Domäne zugreifen müssen, können Sie nur diese Benutzerkonten synchronisieren. Diese bereichsbezogene Synchronisierung ist gruppenbasiert. Wenn Sie eine gruppenbasierte bereichsbezogene Synchronisierung konfigurieren, werden nur die Benutzerkonten, die zu den angegebenen Gruppen gehören, mit der verwalteten Domäne synchronisiert. Geschachtelte Gruppen werden nicht synchronisiert, nur die von Ihnen ausgewählten.

Sie können den Synchronisierungsbereich vor oder nach dem Erstellen der verwalteten Domäne ändern. Der Synchronisierungsbereich wird von einem Dienstprinzipal mit dem Anwendungsbezeichner 2565bd9d-da50-47d4-8b85-4c97f669dc36 definiert. Um einen Bereichsverlust zu verhindern, löschen oder ändern Sie den Dienstprinzipal nicht. Wenn der Synchronisierungsbereich versehentlich gelöscht wird, kann er nicht wiederhergestellt werden.

Beachten Sie die folgenden Einschränkungen, wenn Sie den Synchronisierungsbereich ändern:

  • Eine vollständige Synchronisierung wird durchgeführt.
  • Objekte, die in der verwalteten Domäne nicht mehr erforderlich sind, werden gelöscht. Neue Objekte werden in der verwalteten Domäne erstellt.

Weitere Informationen zum Synchronisierungsvorgang finden Sie unter Grundlegendes zur Synchronisierung in Microsoft Entra Domain Services.

PowerShell-Skript für die bereichsbezogene Synchronisierung

Zum Konfigurieren der bereichsbezogenen Synchronisierung mithilfe von PowerShell müssen Sie zuerst das folgende Skript in einer Datei namens Select-GroupsToSync.ps1 speichern.

Dieses Skript konfiguriert Domain Services so, dass ausgewählte Gruppen aus Microsoft Entra ID synchronisiert werden. Alle Benutzerkonten, die zu den angegebenen Gruppen gehören, werden mit der verwalteten Domäne synchronisiert.

Dieses Skript wird in den weiteren Schritten in diesem Artikel verwendet.

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"

Aktivieren der bereichsbezogenen Synchronisierung

Führen Sie die folgenden Schritte aus, um die gruppenbasierte bereichsbezogene Synchronisierung für eine verwaltete Domäne zu aktivieren:

  1. Legen Sie zuerst „filteredSync“ = „Aktiviert“ für die Domain Services-Ressource fest, und aktualisieren Sie dann die verwaltete Domäne. Geben Sie bei Aufforderung die Anmeldeinformationen für ein globales Administratorkonto an, um sich bei Ihrem Microsoft Entra-Mandanten mithilfe des Cmdlet Connect-MgGraph anzumelden:

    # 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. Geben Sie nun die Liste der Gruppen an, deren Benutzer mit der verwalteten Domäne synchronisiert werden sollen.

    Führen Sie das Skript Select-GroupsToSync.ps1 aus, und geben Sie die Liste der zu synchronisierenden Gruppen an. Im folgenden Beispiel sind die zu synchronisierenden Gruppen Select-GroupsToSync.ps1 und GroupName2.

    Warnung

    Sie müssen die Gruppe AAD DC-Administratoren in die Liste der Gruppen für die bereichsbezogene Synchronisierung aufnehmen. Wenn Sie diese Gruppe nicht einbeziehen, kann die verwaltete Domäne nicht verwendet werden.

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

Wenn Sie den Bereich der Synchronisierung ändern, werden alle Daten in der verwalteten Domäne neu synchronisiert. Objekte, die in der verwalteten Domäne nicht mehr erforderlich sind, werden gelöscht, und die erneute Synchronisierung kann lange Zeit in Anspruch nehmen.

Ändern der bereichsbezogenen Synchronisierung

Führen Sie das Select-GroupsToSync.ps1-Skript aus, und geben Sie die neue Liste von Gruppen für die Synchronisierung an, um die Liste der Gruppen zu ändern, deren Benutzer mit der verwalteten Domäne synchronisiert werden sollen.

Im folgenden Beispiel enthält die Liste der zu synchronisierenden Gruppen nicht mehr GroupName2, dafür aber GroupName3.

Warnung

Sie müssen die Gruppe AAD DC-Administratoren in die Liste der Gruppen für die bereichsbezogene Synchronisierung aufnehmen. Wenn Sie diese Gruppe nicht einbeziehen, kann die verwaltete Domäne nicht verwendet werden.

Geben Sie bei Aufforderung die Anmeldeinformationen für ein globales Administratorkonto an, um sich bei Ihrem Microsoft Entra-Mandanten mithilfe des Cmdlet Connect-MgGraph anzumelden:

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

Wenn Sie den Bereich der Synchronisierung ändern, werden alle Daten in der verwalteten Domäne neu synchronisiert. Objekte, die in der verwalteten Domäne nicht mehr erforderlich sind, werden gelöscht, und die erneute Synchronisierung kann lange Zeit in Anspruch nehmen.

Deaktivieren der bereichsbezogenen Synchronisierung

Legen Sie zum Deaktivieren der gruppenbasierten bereichsbezogenen Synchronisierung für eine verwaltete Domäne „filteredSync“ = „Deaktiviert“ für die Domain Services-Ressource fest, und aktualisieren Sie dann die verwaltete Domäne. Nach Abschluss des Vorgangs ist für alle Benutzer und Gruppen die Synchronisierung von Microsoft Entra ID festgelegt.

Geben Sie bei Aufforderung die Anmeldeinformationen für ein globales Administratorkonto an, um sich bei Ihrem Microsoft Entra-Mandanten mithilfe des Cmdlet Connect-MgGraph anzumelden:

# 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

Wenn Sie den Bereich der Synchronisierung ändern, werden alle Daten in der verwalteten Domäne neu synchronisiert. Objekte, die in der verwalteten Domäne nicht mehr erforderlich sind, werden gelöscht, und die erneute Synchronisierung kann lange Zeit in Anspruch nehmen.

Nächste Schritte

Weitere Informationen zum Synchronisierungsvorgang finden Sie unter Grundlegendes zur Synchronisierung in Microsoft Entra Domain Services.