Udostępnij za pośrednictwem


Konfigurowanie synchronizacji o określonym zakresie z identyfikatora Entra firmy Microsoft do usług Microsoft Entra Domain Services przy użyciu programu Microsoft Graph PowerShell

Aby zapewnić usługi uwierzytelniania, usługi Microsoft Entra Domain Services synchronizują użytkowników i grupy z identyfikatora Entra firmy Microsoft. W środowisku hybrydowym użytkownicy i grupy z lokalnego środowiska Active Directory Domain Services (AD DS) można najpierw zsynchronizować z Microsoft Entra ID przy użyciu narzędzia Microsoft Entra Connect, a następnie zsynchronizować z usługą Domain Services.

Domyślnie wszyscy użytkownicy i grupy z katalogu Microsoft Entra są synchronizowani z domeną zarządzaną usług Domenowych. Jeśli masz określone potrzeby, możesz zamiast tego wybrać synchronizację tylko zdefiniowanego zestawu użytkowników.

W tym artykule pokazano, jak utworzyć domenę zarządzaną korzystającą z synchronizacji w zakresie, a następnie zmienić lub wyłączyć zestaw użytkowników o określonym zakresie przy użyciu programu MS Graph PowerShell. Możesz również wykonać te kroki przy użyciu centrum administracyjnego firmy Microsoft Entra.

Zanim rozpoczniesz

Do ukończenia tego artykułu potrzebne są następujące zasoby i uprawnienia:

Omówienie ograniczonej synchronizacji

Domyślnie wszyscy użytkownicy i grupy z katalogu Microsoft Entra są synchronizowane z domeną zarządzaną. Jeśli tylko kilku użytkowników musi uzyskać dostęp do domeny zarządzanej, możesz zsynchronizować tylko te konta użytkowników. Ta synchronizacja o określonym zakresie jest oparta na grupach. Podczas konfigurowania synchronizacji w zakresie grupy tylko konta użytkowników należące do określonych grup są synchronizowane z domeną zarządzaną. Grupy zagnieżdżone nie są synchronizowane, synchronizowane są tylko wybrane przez ciebie grupy.

Zakres synchronizacji można zmienić przed lub po utworzeniu domeny zarządzanej. Zakres synchronizacji jest definiowany przez jednostkę usługi z identyfikatorem aplikacji 2565bd9d-da50-47d4-8b85-4c97f669dc36. Aby zapobiec utracie zakresu, nie usuwaj ani nie zmieniaj podmiotu usługi. Jeśli zostanie on przypadkowo usunięty, nie można odzyskać zakresu synchronizacji.

Pamiętaj o następujących zastrzeżeniach w przypadku zmiany zakresu synchronizacji:

  • Wykonywana jest pełna synchronizacja.
  • Obiekty, które nie są już wymagane w domenie zarządzanej, są usuwane. Nowe obiekty są tworzone w domenie zarządzanej.

Aby dowiedzieć się więcej na temat procesu synchronizacji, zobacz Omówienie synchronizacji w usługach Microsoft Entra Domain Services.

Skrypt PowerShell do synchronizacji o określonym zakresie

Aby skonfigurować synchronizację w zakresie przy użyciu programu PowerShell, najpierw zapisz następujący skrypt w pliku o nazwie Select-GroupsToSync.ps1.

Ten skrypt konfiguruje usługi Domain Services do synchronizowania wybranych grup z identyfikatora Entra firmy Microsoft. Wszystkie konta użytkowników, które są częścią określonych grup, są synchronizowane z domeną zarządzaną.

Ten skrypt jest używany w dodatkowych krokach w tym artykule.

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 $false)
    {
        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"

Włącz synchronizację ograniczoną zakresem

Aby włączyć synchronizację w zakresie grupy dla domeny zarządzanej, wykonaj następujące kroki:

  1. Najpierw ustaw parametr "filteredSync" = "Enabled" w zasobie usług Domenowych, a następnie zaktualizuj domenę zarządzaną.

    Do zarządzania tą funkcją jest wymagany administrator globalny.

    Zaloguj się do dzierżawy Microsoft Entra przy użyciu cmdletu Connect-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. Teraz określ listę grup, których użytkownicy powinni być synchronizowani z domeną zarządzaną.

    Select-GroupsToSync.ps1 Uruchom skrypt i określ listę grup do synchronizacji. W poniższym przykładzie grupy do synchronizacji to GroupName1 i GroupName2.

    Ostrzeżenie

    Musisz uwzględnić grupę Administratorzy kontrolerów domeny AAD na liście grup przeznaczonej do synchronizacji zakresowej. Jeśli nie dołączysz tej grupy, domena zarządzana będzie bezużyteczna.

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

Zmiana zakresu synchronizacji powoduje ponowne zsynchronizowanie wszystkich danych przez domenę zarządzaną. Obiekty, które nie są już wymagane w domenie zarządzanej, są usuwane, a ponowne synchronizowanie może zająć dużo czasu.

Modyfikowanie synchronizacji o zdefiniowanym zasięgu

Aby zmodyfikować listę grup, których użytkownicy powinni być synchronizowani z domeną zarządzaną, uruchom Select-GroupsToSync.ps1 skrypt i określ nową listę grup do synchronizacji.

W poniższym przykładzie grupy do synchronizacji nie zawierają już grupy Nazwa_grupy2, a teraz obejmuje grupę Nazwa_grupy3.

Ostrzeżenie

Musisz uwzględnić grupę AAD DC Administrators na liście grup do synchronizacji ograniczonego zakresu. Jeśli nie dołączysz tej grupy, domena zarządzana będzie bezużyteczna.

Do zarządzania tą funkcją jest wymagany administrator globalny.

Zaloguj się do swojej dzierżawy Microsoft Entra przy użyciu polecenia cmdlet Connect-MgGraph.

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

Zmiana zakresu synchronizacji powoduje ponowne zsynchronizowanie wszystkich danych przez domenę zarządzaną. Obiekty, które nie są już wymagane w domenie zarządzanej, są usuwane, a ponowne synchronizowanie może zająć dużo czasu.

Wyłącz synchronizację zgodną z zakresem

Aby wyłączyć synchronizację w zakresie grupy dla domeny zarządzanej, ustaw wartość "filteredSync" = "Disabled" w zasobie usług Domain Services, a następnie zaktualizuj domenę zarządzaną. Po zakończeniu wszyscy użytkownicy i grupy są ustawiani na synchronizację z identyfikatorem Entra firmy Microsoft.

Do zarządzania tą funkcją jest wymagany administrator globalny.

Zaloguj się do dzierżawy Microsoft Entra przy użyciu polecenia cmdlet Connect-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

Zmiana zakresu synchronizacji powoduje ponowne zsynchronizowanie wszystkich danych przez domenę zarządzaną. Obiekty, które nie są już wymagane w domenie zarządzanej, są usuwane, a ponowne synchronizowanie może zająć dużo czasu.

Następne kroki

Aby dowiedzieć się więcej na temat procesu synchronizacji, zobacz Omówienie synchronizacji w usługach Microsoft Entra Domain Services.