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.
  • Aboneliğinizle ilişkilendirilmiş bir Microsoft Entra kiracısı, şirket içi dizinle veya yalnızca bulut diziniyle eşitlenir.
  • Microsoft Entra Kiracınızda etkinleştirilmiş ve yapılandırılmış bir Microsoft Entra Domain Services yönetilen etki alanı.
  • 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.ps1bir 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:

  1. ö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
    
  2. Ş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.