Configuration d’une synchronisation à étendue limitée entre Azure AD et Azure Active Directory Domain Services à l’aide d’Azure AD PowerShell

Pour assurer des services d’authentification, Azure Active Directory Domain Services (Azure AD DS) synchronise les utilisateurs et les groupes à partir d’Azure AD. Dans un environnement hybride, les utilisateurs et les groupes d’un environnement Active Directory Domain Services (AD DS) local peuvent d’abord être synchronisés avec Azure AD via Azure AD Connect, puis avec Azure AD DS.

Par défaut, tous les utilisateurs et groupes d’un annuaire Azure AD sont synchronisés avec un domaine managé Azure AD DS. Si vous avez des besoins spécifiques, vous pouvez opter pour la synchronisation d’un ensemble défini d’utilisateurs.

Cet article vous montre comment créer un domaine managé qui utilise une synchronisation délimitée, puis modifier ou désactiver le groupe d’utilisateurs ciblés à l’aide d’Azure AD PowerShell. Vous pouvez également effectuer ces étapes à l’aide du portail Azure.

Avant de commencer

Pour faire ce qui est décrit dans cet article, vous avez besoin des ressources et des privilèges suivants :

Vue d’ensemble de la synchronisation délimitée

Par défaut, tous les utilisateurs et groupes d’un annuaire Azure AD sont synchronisés avec un domaine managé. Si seuls quelques utilisateurs ont besoin d’accéder au domaine managé, vous pouvez synchroniser uniquement ces comptes d’utilisateurs. Cette synchronisation délimitée est basée sur les groupes. Quand vous configurez la synchronisation délimitée basée sur les groupes, seuls les comptes d’utilisateurs qui appartiennent aux groupes que vous spécifiez sont synchronisés avec le domaine managé. Les groupes imbriqués ne sont pas synchronisés ; seuls les groupes explicitement sélectionnés le sont.

Vous pouvez modifier l’étendue de synchronisation avant ou après la création du domaine managé. L’étendue de la synchronisation est définie par un principal de service avec l’identificateur d’application 2565bd9d-da50-47d4-8b85-4c97f669dc36. Pour éviter toute perte d’étendue, ne supprimez pas ou ne modifiez pas le principal du service. Si ce dernier supprimé par accident, l’étendue de synchronisation ne peut pas être récupérée.

Gardez à l’esprit les avertissements suivants si vous modifiez l’étendue de synchronisation :

  • Une synchronisation complète se produit.
  • Les objets qui ne sont plus requis dans le domaine managé sont supprimés. De nouveaux objets sont créés dans le domaine managé.

Pour en savoir plus sur le processus de synchronisation, consultez Comprendre la synchronisation dans Azure AD Domain Services.

Script PowerShell pour la synchronisation délimitée

Pour configurer la synchronisation délimitée à l’aide de PowerShell, commencez par enregistrer le script suivant dans un fichier nommé Select-GroupsToSync.ps1.

Ce script configure Azure AD DS de façon à synchroniser les groupes sélectionnés à partir d’Azure AD. Tous les comptes d’utilisateurs qui font partie des groupes spécifiés sont synchronisés avec le domaine managé.

Ce script est utilisé dans les étapes supplémentaires de cet article.

param (
    [Parameter(Position = 0)]
    [String[]]$groupsToAdd
)

Connect-AzureAD
$sp = Get-AzureADServicePrincipal -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-AzureADGroup -Filter "DisplayName eq '$groupName'"
        $newGroupIds.Add($group.ObjectId)

        Write-Output "Group-Name: $groupName, Id: $($group.ObjectId)"
    }
    catch
    {
        Write-Error "Failed to find group: $groupName. Exception: $($_.Exception)."
    }
}

Write-Output "****************************************************************************`n"
Write-Output "`n****************************************************************************"

$currentAssignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId
Write-Output "Total current group-assignments: $($currentAssignments.Count), SP-ObjectId: $($sp.ObjectId)"

$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-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -AppRoleAssignmentId $assignment.ObjectId
    }
    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.ObjectId)"
            New-AzureADGroupAppRoleAssignment -Id $role.Id -ObjectId $id -PrincipalId $id -ResourceId $sp.ObjectId
        }
        else
        {
            Write-Output "Group-ObjectId: $id is already assigned."
        }
    }
    catch
    {
        Write-Error "Exception occurred assigning Object-ID: $id. Exception: $($_.Exception)."
    }
}

Write-Output "****************************************************************************`n"

Activer synchronisation délimitée

Pour activer la synchronisation délimitée basée sur les groupes pour un domaine managé, procédez comme suit :

  1. Commencez par définir "filteredSync" = "Enabled" sur la ressource Azure AD DS, puis mettez à jour le domaine managé.

    Lorsque vous y êtes invité, spécifiez les informations d’identification d’un administrateur général pour vous connecter à votre locataire Azure AD à l’aide de la cmdlet Connect-AzureAD :

    # Connect to your Azure AD tenant
    Connect-AzureAD
    
    # Retrieve the Azure AD DS resource.
    $DomainServicesResource = Get-AzResource -ResourceType "Microsoft.AAD/DomainServices"
    
    # Enable group-based scoped synchronization.
    $enableScopedSync = @{"filteredSync" = "Enabled"}
    
    # Update the Azure AD DS resource
    Set-AzResource -Id $DomainServicesResource.ResourceId -Properties $enableScopedSync
    
  2. Spécifiez à présent la liste des groupes dont les utilisateurs doivent être synchronisés avec le domaine managé.

    Exécutez le script Select-GroupsToSync.ps1 et spécifiez la liste des groupes à synchroniser. Dans l’exemple suivant, les groupes à synchroniser sont Select-GroupsToSync.ps1 et GroupName2.

    Avertissement

    Vous devez inclure le groupe AAD DC Administrators dans la liste des groupes configurés pour la synchronisation délimitée. Si vous n’incluez pas ce groupe, le domaine managé est inutilisable.

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

La changement de l’étendue de la synchronisation conduit le domaine managé à resynchroniser toutes les données. Les objets qui ne sont plus nécessaires dans le domaine managé sont supprimés, et la resynchronisation peut prendre du temps.

Modifier la synchronisation délimitée

Pour modifier la liste des groupes dont les utilisateurs doivent être synchronisés sur le domaine managé, exécutez le script Select-GroupsToSync.ps1 et spécifiez la nouvelle liste de groupes à synchroniser.

Dans l’exemple suivant, les groupes à synchroniser n’incluent plus GroupName2, mais incluent maintenant GroupName3.

Avertissement

Vous devez inclure le groupe AAD DC Administrators dans la liste des groupes configurés pour la synchronisation délimitée. Si vous n’incluez pas ce groupe, le domaine managé est inutilisable.

Lorsque vous y êtes invité, spécifiez les informations d’identification d’un administrateur général pour vous connecter à votre locataire Azure AD à l’aide de la cmdlet Connect-AzureAD :

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

La changement de l’étendue de la synchronisation conduit le domaine managé à resynchroniser toutes les données. Les objets qui ne sont plus nécessaires dans le domaine managé sont supprimés, et la resynchronisation peut prendre du temps.

Désactiver la synchronisation délimitée

Pour désactiver la synchronisation délimitée basée sur les groupes pour un domaine managé, définissez "filteredSync" = "Disabled" sur la ressource Azure AD DS, puis mettez à jour le domaine managé. À l’issue de cette opération, l’ensemble des utilisateurs et des groupes sont définis pour être synchronisés à partir d’Azure AD.

Lorsque vous y êtes invité, spécifiez les informations d’identification d’un administrateur général pour vous connecter à votre locataire Azure AD à l’aide de la cmdlet Connect-AzureAD :

# Connect to your Azure AD tenant
Connect-AzureAD

# Retrieve the Azure AD DS resource.
$DomainServicesResource = Get-AzResource -ResourceType "Microsoft.AAD/DomainServices"

# Disable group-based scoped synchronization.
$disableScopedSync = @{"filteredSync" = "Disabled"}

# Update the Azure AD DS resource
Set-AzResource -Id $DomainServicesResource.ResourceId -Properties $disableScopedSync

La changement de l’étendue de la synchronisation conduit le domaine managé à resynchroniser toutes les données. Les objets qui ne sont plus nécessaires dans le domaine managé sont supprimés, et la resynchronisation peut prendre du temps.

Étapes suivantes

Pour en savoir plus sur le processus de synchronisation, consultez Comprendre la synchronisation dans Azure AD Domain Services.