Microsoft Graph PowerShell kullanarak Microsoft Entra Id'den Microsoft Entra Domain Services'a kapsamlı eşitlemeyi yapılandırma
Microsoft Entra Domain Services, kimlik doğrulama hizmetleri sağlamak için Kullanıcıları ve grupları Microsoft Entra Id'den eşitler. Karma bir ortamda, şirket içi Active Directory Etki Alanı Hizmetleri (AD DS) ortamındaki kullanıcılar ve gruplar önce Microsoft Entra Bağlan kullanılarak Microsoft Entra Id ile eşitlenebilir ve ardından Etki Alanı Hizmetleri ile eşitlenebilir.
Varsayılan olarak, bir Microsoft Entra dizininden tüm kullanıcılar ve gruplar Domain Services tarafından yönetilen bir etki alanıyla eşitlenir. Belirli gereksinimleriniz varsa, bunun yerine yalnızca tanımlı bir kullanıcı kümesini eşitlemeyi seçebilirsiniz.
Bu makalede, kapsamlı eşitleme kullanan bir yönetilen etki alanı oluşturma ve ardından MS Graph PowerShell kullanarak kapsamlı kullanıcı kümesini değiştirme veya devre dışı bırakma işlemi gösterilmektedir. Bu adımları Microsoft Entra yönetim merkezini kullanarak da tamamlayabilirsiniz.
Başlamadan önce
Bu makaleyi tamamlamak için aşağıdaki kaynaklara ve ayrıcalıklara ihtiyacınız vardır:
- Etkin bir Azure aboneliği.
- Azure aboneliğiniz yoksa bir hesap oluşturun.
- Aboneliğinizle ilişkilendirilmiş bir Microsoft Entra kiracısı, şirket içi dizinle veya yalnızca bulut diziniyle eşitlenir.
- Gerekirse bir Microsoft Entra kiracısı oluşturun veya bir Azure aboneliğini hesabınızla ilişkilendirin.
- Microsoft Entra Kiracınızda etkinleştirilmiş ve yapılandırılmış bir Microsoft Entra Domain Services yönetilen etki alanı.
- Gerekirse, Microsoft Entra Domain Services yönetilen etki alanı oluşturmak ve yapılandırmak için öğreticiyi tamamlayın.
- Etki Alanı Hizmetleri eşitleme kapsamını değiştirmek için kiracınızda Application Yönetici istrator ve Groups Yönetici istrator Microsoft Entra rollerine ihtiyacınız vardır.
Kapsamlı eşitlemeye genel bakış
Varsayılan olarak, bir Microsoft Entra dizininden tüm kullanıcılar ve gruplar yönetilen bir etki alanıyla eşitlenir. Yönetilen etki alanına yalnızca birkaç kullanıcının erişmesi gerekiyorsa, yalnızca bu kullanıcı hesaplarını eşitleyebilirsiniz. Bu kapsamlı eşitleme grup tabanlıdır. Grup tabanlı kapsamlı eşitlemeyi yapılandırdığınızda, yalnızca belirttiğiniz gruplara ait kullanıcı hesapları yönetilen etki alanına eşitlenir. İç içe gruplar eşitlenmez, yalnızca seçtiğiniz belirli gruplar eşitlenir.
Yönetilen etki alanını oluşturmadan önce veya sonra eşitleme kapsamını değiştirebilirsiniz. Eşitlemenin kapsamı, uygulama tanımlayıcısı 2565bd9d-da50-47d4-8b85-4c97f669dc36 olan bir hizmet sorumlusu tarafından tanımlanır. Kapsam kaybını önlemek için hizmet sorumlusunu silmeyin veya değiştirmeyin. Yanlışlıkla silinirse, eşitleme kapsamı kurtarılamaz.
Eşitleme kapsamını değiştirirseniz aşağıdaki uyarıları göz önünde bulundurun:
- Tam eşitleme gerçekleşir.
- Yönetilen etki alanında artık gerekli olmayan nesneler silinir. Yönetilen etki alanında yeni nesneler oluşturulur.
Eşitleme işlemi hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra Domain Services'da eşitlemeyi anlama.
Kapsamlı eşitleme için PowerShell betiği
PowerShell kullanarak kapsamlı eşitlemeyi yapılandırmak için, önce aşağıdaki betiği adlı Select-GroupsToSync.ps1
bir dosyaya kaydedin.
Bu betik, Seçili grupları Microsoft Entra Id'den eşitlemek için Etki Alanı Hizmetleri'nin yapılandırılmasını sağlar. Belirtilen grupların parçası olan tüm kullanıcı hesapları yönetilen etki alanına eşitlenir.
Bu betik, bu makaledeki ek adımlarda kullanılır.
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"
Kapsamlı eşitlemeyi etkinleştirme
Yönetilen bir etki alanında grup tabanlı kapsamlı eşitlemeyi etkinleştirmek için aşağıdaki adımları tamamlayın:
önce Domain Services kaynağında "filteredSync" = "Enabled" değerini ayarlayın, ardından yönetilen etki alanını güncelleştirin. İstendiğinde, Bağlan-MgGraph cmdlet'ini kullanarak Microsoft Entra kiracınızda oturum açmak için Genel Yönetici istrator'ın kimlik bilgilerini belirtin:
# 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
Şimdi kullanıcıları yönetilen etki alanıyla eşitlenecek grupların listesini belirtin.
Betiği
Select-GroupsToSync.ps1
çalıştırın ve eşitlenecek grupların listesini belirtin. Aşağıdaki örnekte, eşitlenecek gruplar GroupName1 ve GroupName2'dir.Uyarı
AAD DC Yönetici istrators grubunu kapsamlı eşitleme grupları listesine eklemeniz gerekir. Bu grubu eklemezseniz, yönetilen etki alanı kullanılamaz.
.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName2")
Eşitleme kapsamının değiştirilmesi, yönetilen etki alanının tüm verileri yeniden eşitlemesine neden olur. Yönetilen etki alanında artık gerekli olmayan nesneler silinir ve yeniden eşitlemenin tamamlanması uzun sürebilir.
Kapsamlı eşitlemeyi değiştirme
Kullanıcıları yönetilen etki alanına eşitlenmesi gereken grupların listesini değiştirmek için betiği çalıştırın Select-GroupsToSync.ps1
ve eşitlenecek yeni grup listesini belirtin.
Aşağıdaki örnekte, eşitlenecek gruplar artık GroupName2'yi içermiyor ve şimdi GroupName3'i içeriyor.
Uyarı
AAD DC Yönetici istrators grubunu kapsamlı eşitleme grupları listesine eklemeniz gerekir. Bu grubu eklemezseniz, yönetilen etki alanı kullanılamaz.
İstendiğinde, Bağlan-MgGraph cmdlet'ini kullanarak Microsoft Entra kiracınızda oturum açmak için Genel Yönetici istrator'ın kimlik bilgilerini belirtin:
.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName3")
Eşitleme kapsamının değiştirilmesi, yönetilen etki alanının tüm verileri yeniden eşitlemesine neden olur. Yönetilen etki alanında artık gerekli olmayan nesneler silinir ve yeniden eşitlemenin tamamlanması uzun sürebilir.
Kapsamlı eşitlemeyi devre dışı bırakma
Yönetilen bir etki alanı için grup tabanlı kapsamlı eşitlemeyi devre dışı bırakmak için, Etki Alanı Hizmetleri kaynağında "filteredSync" = "Disabled" ayarını yapın ve yönetilen etki alanını güncelleştirin. Tamamlandığında, tüm kullanıcılar ve gruplar Microsoft Entra Id'den eşitlenecek şekilde ayarlanır.
İstendiğinde, Bağlan-MgGraph cmdlet'ini kullanarak Microsoft Entra kiracınızda oturum açmak için Genel Yönetici istrator'ın kimlik bilgilerini belirtin:
# 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
Eşitleme kapsamının değiştirilmesi, yönetilen etki alanının tüm verileri yeniden eşitlemesine neden olur. Yönetilen etki alanında artık gerekli olmayan nesneler silinir ve yeniden eşitlemenin tamamlanması uzun sürebilir.
Sonraki adımlar
Eşitleme işlemi hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra Domain Services'da eşitlemeyi anlama.