Bagikan melalui


Mengonfigurasi sinkronisasi tercakup dari ID Microsoft Entra ke Microsoft Entra Domain Services menggunakan Microsoft Graph PowerShell

Untuk menyediakan layanan autentikasi, Microsoft Entra Domain Services menyinkronkan pengguna dan grup dari ID Microsoft Entra. Di lingkungan hibrid, pengguna dan grup dari lingkungan Active Directory lokal Domain Services (AD DS) dapat terlebih dahulu disinkronkan ke ID Microsoft Entra menggunakan Microsoft Entra Connect, lalu disinkronkan ke Domain Services.

Secara default, semua pengguna dan grup dari direktori Microsoft Entra disinkronkan ke domain terkelola Domain Services. Jika Anda memiliki kebutuhan khusus, Anda dapat memilih untuk menyinkronkan hanya sekumpulan pengguna yang ditentukan.

Artikel ini memperlihatkan kepada Anda cara membuat domain terkelola yang menggunakan sinkronisasi tercakup lalu mengubah atau menonaktifkan kumpulan pengguna tercakup menggunakan MS Graph PowerShell. Anda juga dapat menyelesaikan langkah-langkah ini menggunakan pusat admin Microsoft Entra.

Sebelum Anda mulai

Untuk menyelesaikan artikel ini, Anda memerlukan sumber daya dan hak istimewa berikut:

  • Langganan Azure aktif.
    • Jika Anda tidak memiliki langganan Azure, buat akun.
  • Penyewa Microsoft Entra yang terkait dengan langganan Anda, baik disinkronkan dengan direktori lokal atau direktori khusus cloud.
  • Domain terkelola Microsoft Entra Domain Services diaktifkan dan dikonfigurasi di penyewa Microsoft Entra Anda.
  • Anda memerlukan peran Administrator Aplikasi dan Administrator Grup Microsoft Entra di penyewa Anda untuk mengubah cakupan sinkronisasi Layanan Domain.

Gambaran umum sinkronisasi tercakup

Secara default, semua pengguna dan grup dari direktori Microsoft Entra disinkronkan ke domain terkelola. Jika hanya beberapa pengguna yang perlu mengakses domain terkelola, Anda hanya dapat menyinkronkan akun pengguna tersebut. Sinkronisasi tercakup ini berbasis grup. Saat Anda mengonfigurasi sinkronisasi cakupan berbasis grup, hanya akun pengguna yang termasuk dalam grup yang Anda tentukan yang disinkronkan ke domain terkelola. Grup berlapis tidak disinkronkan, hanya grup tertentu yang Anda pilih.

Anda dapat mengubah cakupan sinkronisasi sebelum atau sesudah Membuat domain terkelola. Cakupan sinkronisasi ditentukan oleh perwakilan layanan dengan pengidentifikasi aplikasi 2565bd9d-da50-47d4-8b85-4c97f669dc36. Untuk mencegah kehilangan cakupan, jangan hapus atau ubah perwakilan layanan. Jika tidak sengaja dihapus, cakupan sinkronisasi tidak dapat dipulihkan.

Perlu diingat peringatan berikut jika Anda mengubah cakupan sinkronisasi:

  • Sinkronisasi penuh terjadi.
  • Objek yang tidak lagi diperlukan di domain terkelola dihapus. Objek baru dibuat di domain terkelola.

Untuk mempelajari selengkapnya tentang proses sinkronisasi, lihat Memahami sinkronisasi di Microsoft Entra Domain Services.

Skrip PowerShell untuk sinkronisasi tercakup

Untuk mengonfigurasi sinkronisasi tercakup menggunakan PowerShell, pertama-tama simpan skrip berikut ke file bernama Select-GroupsToSync.ps1.

Skrip ini mengonfigurasi Layanan Domain untuk menyinkronkan grup yang dipilih dari ID Microsoft Entra. Semua akun pengguna yang merupakan bagian dari grup yang ditentukan disinkronkan ke domain terkelola.

Skrip ini digunakan dalam langkah-langkah tambahan dalam artikel ini.

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"

Mengaktifkan sinkronisasi tercakup

Untuk mengaktifkan sinkronisasi tercakup berbasis grup untuk domain terkelola, selesaikan langkah-langkah berikut:

  1. Pertama-tama atur "filteredSync" = "Diaktifkan" pada sumber daya Layanan Domain, lalu perbarui domain terkelola.

    Administrator Global diperlukan untuk mengelola fitur ini.

    Masuk ke penyewa Microsoft Entra Anda menggunakan 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. Sekarang tentukan daftar grup yang penggunanya harus disinkronkan ke domain terkelola.

    Jalankan Select-GroupsToSync.ps1 skrip dan tentukan daftar grup yang akan disinkronkan. Dalam contoh berikut, grup yang akan disinkronkan adalah GroupName1 dan GroupName2.

    Peringatan

    Anda harus menyertakan grup Administrator AAD DC dalam daftar grup untuk sinkronisasi tercakup. Jika Anda tidak menyertakan grup ini, domain terkelola tidak dapat digunakan.

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

Mengubah cakupan sinkronisasi menyebabkan domain terkelola menyinkronkan ulang semua data. Objek yang tidak lagi diperlukan di domain terkelola dihapus, dan sinkronisasi ulang mungkin memakan waktu lama untuk diselesaikan.

Mengubah sinkronisasi tercakup

Untuk mengubah daftar grup yang penggunanya harus disinkronkan ke domain terkelola, jalankan Select-GroupsToSync.ps1 skrip dan tentukan daftar grup baru yang akan disinkronkan.

Dalam contoh berikut, grup yang akan disinkronkan tidak lagi menyertakan GroupName2, dan sekarang menyertakan GroupName3.

Peringatan

Anda harus menyertakan grup Administrator AAD DC dalam daftar grup untuk sinkronisasi tercakup. Jika Anda tidak menyertakan grup ini, domain terkelola tidak dapat digunakan.

Administrator Global diperlukan untuk mengelola fitur ini.

Masuk ke penyewa Microsoft Entra Anda menggunakan cmdlet Connect-MgGraph .

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

Mengubah cakupan sinkronisasi menyebabkan domain terkelola menyinkronkan ulang semua data. Objek yang tidak lagi diperlukan di domain terkelola dihapus, dan sinkronisasi ulang mungkin memakan waktu lama untuk diselesaikan.

Menonaktifkan sinkronisasi tercakup

Untuk menonaktifkan sinkronisasi tercakup berbasis grup untuk domain terkelola, atur "filteredSync" = "Dinonaktifkan" pada sumber daya Layanan Domain, lalu perbarui domain terkelola. Setelah selesai, semua pengguna dan grup diatur untuk disinkronkan dari ID Microsoft Entra.

Administrator Global diperlukan untuk mengelola fitur ini.

Masuk ke penyewa Microsoft Entra Anda menggunakan 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

Mengubah cakupan sinkronisasi menyebabkan domain terkelola menyinkronkan ulang semua data. Objek yang tidak lagi diperlukan di domain terkelola dihapus, dan sinkronisasi ulang mungkin memakan waktu lama untuk diselesaikan.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang proses sinkronisasi, lihat Memahami sinkronisasi di Microsoft Entra Domain Services.