Share via


Synchronisatie van bereik van Microsoft Entra-id met Microsoft Entra Domain Services configureren met behulp van Microsoft Graph PowerShell

Om verificatieservices te bieden, synchroniseert Microsoft Entra Domain Services gebruikers en groepen van Microsoft Entra ID. In een hybride omgeving kunnen gebruikers en groepen uit een on-premises Active Directory-domein Services-omgeving (AD DS) eerst worden gesynchroniseerd met Microsoft Entra-id met behulp van Microsoft Entra Connect en vervolgens worden gesynchroniseerd met Domain Services.

Standaard worden alle gebruikers en groepen uit een Microsoft Entra-directory gesynchroniseerd met een door Domain Services beheerd domein. Als u specifieke behoeften hebt, kunt u in plaats daarvan ervoor kiezen om alleen een gedefinieerde set gebruikers te synchroniseren.

In dit artikel wordt beschreven hoe u een beheerd domein maakt dat gebruikmaakt van bereiksynchronisatie en vervolgens de set met bereikgebruikers wijzigt of uitschakelt met BEHULP van MS Graph PowerShell. U kunt deze stappen ook uitvoeren met behulp van het Microsoft Entra-beheercentrum.

Voordat u begint

U hebt de volgende resources en bevoegdheden nodig om dit artikel te voltooien:

Overzicht van synchronisatiebereik

Standaard worden alle gebruikers en groepen uit een Microsoft Entra-directory gesynchroniseerd met een beheerd domein. Als slechts een paar gebruikers toegang nodig hebben tot het beheerde domein, kunt u alleen die gebruikersaccounts synchroniseren. Deze bereiksynchronisatie is gebaseerd op groepen. Wanneer u op groepen gebaseerde synchronisatie configureert, worden alleen de gebruikersaccounts die deel uitmaken van de groepen die u opgeeft, gesynchroniseerd met het beheerde domein. Geneste groepen worden niet gesynchroniseerd, alleen de specifieke groepen die u selecteert.

U kunt het synchronisatiebereik wijzigen voor of nadat u het beheerde domein hebt gemaakt. Het synchronisatiebereik wordt gedefinieerd door een service-principal met de toepassings-id 2565bd9d-da50-47d4-8b85-4c97f669dc36. Als u bereikverlies wilt voorkomen, verwijdert of wijzigt u de service-principal niet. Als het per ongeluk wordt verwijderd, kan het synchronisatiebereik niet worden hersteld.

Houd rekening met de volgende opmerkingen als u het synchronisatiebereik wijzigt:

  • Er wordt een volledige synchronisatie uitgevoerd.
  • Objecten die niet meer nodig zijn in het beheerde domein, worden verwijderd. Er worden nieuwe objecten gemaakt in het beheerde domein.

Zie Synchronisatie begrijpen in Microsoft Entra Domain Services voor meer informatie over het synchronisatieproces.

PowerShell-script voor bereiksynchronisatie

Sla eerst het volgende script op in een bestand met de naam Select-GroupsToSync.ps1Om bereiksynchronisatie te configureren met behulp van PowerShell.

Met dit script configureert u Domain Services om geselecteerde groepen uit Microsoft Entra-id te synchroniseren. Alle gebruikersaccounts die deel uitmaken van de opgegeven groepen, worden gesynchroniseerd met het beheerde domein.

Dit script wordt gebruikt in de aanvullende stappen in dit artikel.

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"

Synchronisatie van bereik inschakelen

Voer de volgende stappen uit om synchronisatie op basis van een bereik op basis van groepen in te schakelen voor een beheerd domein:

  1. Stel eerst 'filteredSync' = 'Ingeschakeld' in op de Domain Services-resource en werk vervolgens het beheerde domein bij.

    Er is een globale beheerder nodig om deze functie te beheren.

    Meld u aan bij uw Microsoft Entra-tenant met behulp van de 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"
    
    # Enable group-based scoped synchronization.
    $enableScopedSync = @{"filteredSync" = "Enabled"}
    
    # Update the Microsoft Entra DS resource
    Set-AzResource -Id $DomainServicesResource.ResourceId -Properties $enableScopedSync
    
  2. Geef nu de lijst op met groepen waarvan gebruikers moeten worden gesynchroniseerd met het beheerde domein.

    Voer het Select-GroupsToSync.ps1 script uit en geef de lijst met groepen op die moeten worden gesynchroniseerd. In het volgende voorbeeld zijn de groepen die moeten worden gesynchroniseerd GroupName1 en GroupName2.

    Waarschuwing

    U moet de AAD DC-beheerdersgroep opnemen in de lijst met groepen voor synchronisatie met bereik. Als u deze groep niet opneemt, is het beheerde domein onbruikbaar.

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

Als u het synchronisatiebereik wijzigt, worden alle gegevens opnieuw gesynchroniseerd door het beheerde domein. Objecten die niet meer nodig zijn in het beheerde domein, worden verwijderd en hersynchronisatie kan lang duren.

Bereiksynchronisatie wijzigen

Als u de lijst met groepen wilt wijzigen waarvan gebruikers moeten worden gesynchroniseerd met het beheerde domein, voert Select-GroupsToSync.ps1 u een script uit en geeft u de nieuwe lijst met groepen op die moeten worden gesynchroniseerd.

In het volgende voorbeeld bevat de groepen die moeten worden gesynchroniseerd, geen GroupName2 meer en bevat nu GroupName3.

Waarschuwing

U moet de AAD DC-beheerdersgroep opnemen in de lijst met groepen voor synchronisatie met bereik. Als u deze groep niet opneemt, is het beheerde domein onbruikbaar.

Er is een globale beheerder nodig om deze functie te beheren.

Meld u aan bij uw Microsoft Entra-tenant met behulp van de cmdlet Connect-MgGraph .

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

Als u het synchronisatiebereik wijzigt, worden alle gegevens opnieuw gesynchroniseerd door het beheerde domein. Objecten die niet meer nodig zijn in het beheerde domein, worden verwijderd en hersynchronisatie kan lang duren.

Synchronisatie van bereik uitschakelen

Als u op groepen gebaseerde synchronisatie voor een beheerd domein wilt uitschakelen, stelt u 'filteredSync' = 'Uitgeschakeld' in op de Domain Services-resource en werkt u vervolgens het beheerde domein bij. Als u klaar bent, worden alle gebruikers en groepen ingesteld om te synchroniseren vanuit Microsoft Entra-id.

Er is een globale beheerder nodig om deze functie te beheren.

Meld u aan bij uw Microsoft Entra-tenant met behulp van de 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

Als u het synchronisatiebereik wijzigt, worden alle gegevens opnieuw gesynchroniseerd door het beheerde domein. Objecten die niet meer nodig zijn in het beheerde domein, worden verwijderd en hersynchronisatie kan lang duren.

Volgende stappen

Zie Synchronisatie begrijpen in Microsoft Entra Domain Services voor meer informatie over het synchronisatieproces.