Configuración de la sincronización con ámbito desde Microsoft Entra ID a Microsoft Entra Domain Services mediante Microsoft Graph PowerShell

Para proporcionar servicios de autenticación, Microsoft Entra Domain Services sincroniza los usuarios y grupos de Microsoft Entra ID. En un entorno híbrido, los usuarios y grupos de un entorno local de Active Directory Domain Services (AD DS) se pueden sincronizar primero con Microsoft Entra ID mediante Microsoft Entra Connect y, luego, con Domain Services.

De forma predeterminada, todos los usuarios y grupos de un directorio de Microsoft Entra se sincronizan con un dominio administrado de Domain Services. Si tiene necesidades específicas, puede optar por sincronizar solo un conjunto definido de usuarios.

En este artículo se muestra cómo crear un dominio administrado que use la sincronización con ámbito y, luego, cambiar o deshabilitar el conjunto de usuarios con ámbito mediante PowerShell de MS Graph. También puede completar estos pasos desde el centro de administración de Microsoft Entra.

Antes de empezar

Para completar este artículo, necesitará los siguientes recursos y privilegios:

Introducción a la sincronización con ámbito

De forma predeterminada, todos los usuarios y grupos de un directorio de Microsoft Entra se sincronizan con un dominio administrado. Si solo unos cuantos usuarios necesitan acceso al dominio administrado, puede sincronizar únicamente esas cuentas de usuario. Esta sincronización son ámbito se basa en grupos. Al configurar la sincronización con ámbito basada en grupos, solo las cuentas de usuario que pertenecen a los grupos que especifique se sincronizan con el dominio administrado. Los grupos anidados no se sincronizan, solo los grupos específicos que seleccione.

Puede cambiar el ámbito de sincronización antes o después de crear el dominio administrado. Una entidad de servicio define el ámbito de sincronización con el identificador de la aplicación 2565bd9d-da50-47d4-8b85-4c97f669dc36. Para evitar la pérdida de ámbito, no elimine ni cambie la entidad de servicio. Si se elimina accidentalmente, no se puede recuperar el ámbito de sincronización.

Tenga en cuenta las siguientes advertencias si cambia el ámbito de sincronización:

  • Se produce una sincronización completa.
  • Los objetos que ya no son necesarios en el dominio administrado se eliminan. Se crean objetos en el dominio administrado.

Para más información sobre el proceso de sincronización, consulte Funcionamiento de la sincronización en Microsoft Entra Domain Services.

Script de PowerShell para la sincronización con ámbito

Para configurar la sincronización de ámbito mediante PowerShell, primero guarde el siguiente script en un archivo llamado Select-GroupsToSync.ps1.

Este script configura Domain Services para sincronizar los grupos seleccionados en Microsoft Entra ID. Todas las cuentas de usuario que forman parte de los grupos especificados se sincronizan con el dominio administrado.

Este script se usa en los pasos adicionales de este artículo.

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"

Habilitación de la sincronización con ámbito

Para habilitar la sincronización con ámbito basada en grupos para un dominio administrado, lleve a cabo los pasos siguientes:

  1. En primer lugar, establezca "filteredSync" = "Enabled" en el recurso Domain Services y, después, actualice el dominio administrado. Cuando se le solicite, especifique las credenciales para que un Administrador global inicie sesión en el inquilino de Microsoft Entra mediante el 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. Ahora, especifique la lista de grupos cuyos usuarios se deben sincronizar con el dominio administrado.

    Ejecute el script Select-GroupsToSync.ps1 y especifique la lista de grupos que se van a sincronizar. En el ejemplo siguiente, los grupos que se van a sincronizar son Select-GroupsToSync.ps1 y GroupName2.

    Advertencia

    Debe incluir el grupo Administradores de controladores de dominio de AAD en la lista de grupos para la sincronización con ámbito. Si no incluye este grupo, no se puede usar el dominio administrado.

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

Al cambiar el ámbito de sincronización el dominio administrado vuelve a sincronizar todos los datos. Los objetos que ya no son necesarios en el dominio administrado se eliminan y la resincronización puede tardar mucho tiempo en completarse.

Modificación de la sincronización con ámbito

Para modificar la lista de grupos cuyos usuarios se deben sincronizar con el dominio administrado, ejecute el script Select-GroupsToSync.ps1 y especifique la nueva lista de grupos que se van a sincronizar.

En el ejemplo siguiente, los grupos que se van a sincronizar ya no incluyen GroupName2, ahora incluyen GroupName3.

Advertencia

Debe incluir el grupo Administradores de controladores de dominio de AAD en la lista de grupos para la sincronización con ámbito. Si no incluye este grupo, no se puede usar el dominio administrado.

Cuando se le solicite, especifique las credenciales para que un Administrador global inicie sesión en el inquilino de Microsoft Entra mediante el cmdlet Connect-MgGraph:

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

Al cambiar el ámbito de sincronización el dominio administrado vuelve a sincronizar todos los datos. Los objetos que ya no son necesarios en el dominio administrado se eliminan y la resincronización puede tardar mucho tiempo en completarse.

Deshabilitación de la sincronización con ámbito

Para deshabilitar la sincronización con ámbito basada en grupos para un dominio administrado, establezca "filteredSync" = "Disabled" en el recurso de Domain Services y, luego, actualice el dominio administrado. Cuando finalice, todos los usuarios y grupos están establecidos para sincronizarse desde Microsoft Entra ID.

Cuando se le solicite, especifique las credenciales para que un Administrador global inicie sesión en el inquilino de Microsoft Entra mediante el 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

Al cambiar el ámbito de sincronización el dominio administrado vuelve a sincronizar todos los datos. Los objetos que ya no son necesarios en el dominio administrado se eliminan y la resincronización puede tardar mucho tiempo en completarse.

Pasos siguientes

Para más información sobre el proceso de sincronización, consulte Funcionamiento de la sincronización en Microsoft Entra Domain Services.