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 hanya menyinkronkan set 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 tutorial 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.
- Jika diperlukan, buat penyewa Microsoft Entra atau kaitkan langganan Azure dengan akun Anda.
- Domain terkelola Microsoft Entra Domain Services diaktifkan dan dikonfigurasi di penyewa Microsoft Entra Anda.
- Jika diperlukan, selesaikan tutorial untuk membuat dan mengonfigurasi domain terkelola Microsoft Entra Domain Services.
- 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 tercakup 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 Anda membuat domain terkelola. Cakupan sinkronisasi ditentukan oleh perwakilan layanan dengan pengidentifikasi aplikasi 2565bd9d-da50-47d4-8b85-4c97f669dc36. Untuk mencegah hilangnya cakupan, jangan menghapus atau mengubah perwakilan layanan. Jika tidak sengaja dihapus, cakupan sinkronisasi tidak dapat dipulihkan.
Ingatlah peringatan berikut jika Anda mengubah cakupan sinkronisasi:
- Sinkronisasi penuh terjadi.
- Objek yang tidak lagi diperlukan di domain terkelola akan 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 ini 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 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 $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"
Mengaktifkan sinkronisasi tercakup
Untuk mengaktifkan sinkronisasi tercakup berbasis grup untuk domain terkelola, selesaikan langkah-langkah berikut:
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
Sekarang, tentukan daftar grup yang penggunanya harus disinkronkan ke domain terkelola.
Jalankan skrip
Select-GroupsToSync.ps1
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 memerlukan waktu lama untuk diselesaikan.
Mengubah sinkronisasi tercakup
Untuk mengubah daftar grup yang penggunanya harus disinkronkan ke domain terkelola, jalankan skrip Select-GroupsToSync.ps1
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 memerlukan 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 memerlukan waktu lama untuk diselesaikan.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang proses sinkronisasi, lihat Memahami sinkronisasi di Microsoft Entra Domain Services.