Настройка ограниченной синхронизации с идентификатором Microsoft Entra в доменные службы Microsoft Graph PowerShell
Для предоставления служб проверки подлинности доменные службы Microsoft Entra синхронизируют пользователей и группы из идентификатора Microsoft Entra. В гибридной среде пользователи и группы из среды локальная служба Active Directory доменных служб (AD DS) можно сначала синхронизировать с идентификатором Microsoft Entra с помощью Microsoft Entra Connect, а затем синхронизироваться с доменными службами.
По умолчанию все пользователи и группы из каталога Microsoft Entra синхронизируются с управляемым доменом доменных служб. При наличии конкретных потребностей можно выбрать синхронизацию только определенного набора пользователей.
В этой статье показано, как создать управляемый домен, использующий синхронизацию с областью действия, а затем изменить или отключить набор пользователей с областью действия с помощью MS Graph PowerShell. Эти действия также можно выполнить с помощью Центра администрирования Microsoft Entra.
Подготовка к работе
Для работы с этой статьей требуются следующие ресурсы и разрешения:
- Активная подписка Azure.
- Если у вас еще нет подписки Azure, создайте учетную запись.
- Клиент Microsoft Entra, связанный с подпиской, либо синхронизирован с локальным каталогом или облачным каталогом.
- При необходимости создайте клиент Microsoft Entra или свяжите подписку Azure с вашей учетной записью.
- Управляемый домен доменных служб Microsoft Entra включен и настроен в клиенте Microsoft Entra.
- При необходимости выполните инструкции по созданию и настройке управляемого домена доменных служб Microsoft Entra.
- Чтобы изменить область синхронизации доменных служб, вам потребуется роль администратора приложений и администраторов групп Microsoft Entra в клиенте.
Общие сведения о синхронизации с заданной областью
По умолчанию все пользователи и группы из каталога Microsoft Entra синхронизируются с управляемым доменом. Если доступ к управляемому домену требуется только некоторым пользователям, можно синхронизировать только эти учетные записи пользователей. Эта синхронизация с областью действия основана на группе. При настройке синхронизации с областью действия на уровне группы только учетные записи пользователей, принадлежащие к указанным вами группам, синхронизируются с управляемым доменом. Вложенные группы не синхронизируются, только выбранные группы.
Область синхронизации можно изменить до или после создания управляемого домена. Область синхронизации определяется субъектом-службой с идентификатором приложения 2565bd9d-da50-47d4-8b85-4c97f669dc36. Чтобы предотвратить потери области, не удаляйте и не изменяйте субъект-службу. Если она была случайно удалена, область синхронизации восстановить нельзя.
При изменении области синхронизации учитывайте следующие предостережения.
- Выполняется полная синхронизация.
- Объекты, которые больше не требуются в управляемом домене, удаляются. В управляемом домене создаются новые объекты.
Дополнительные сведения о процессе синхронизации см. в статье "Общие сведения о синхронизации" в доменных службах Microsoft Entra.
Скрипт PowerShell для синхронизации с заданной областью
Чтобы настроить синхронизацию с заданной областью с помощью PowerShell, сначала сохраните следующий скрипт в файл с именем Select-GroupsToSync.ps1
.
Этот скрипт настраивает доменные службы для синхронизации выбранных групп из идентификатора Microsoft Entra. Все учетные записи пользователей, которые являются частью указанных групп, синхронизируются с управляемым доменом.
Этот сценарий используется в дополнительных шагах в этой статье.
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"
Включение синхронизации в области
Чтобы включить синхронизацию с областью действия на уровне группы для управляемого домена, выполните следующие действия.
Сначала задайте параметр filteredSync = "Включено" в ресурсе доменных служб, а затем обновите управляемый домен.
Для управления этой функцией требуется глобальный администратор .
Войдите в клиент Microsoft Entra с помощью командлета 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
Внесите изменения в список групп, пользователей которых необходимо синхронизировать с управляемым доменом.
Запустите скрипт
Select-GroupsToSync.ps1
и укажите список групп для синхронизации. В следующем примере группы для синхронизации являются GroupName1 и GroupName2.Предупреждение
Группу администраторов контроллера домена AAD необходимо включить в список групп для синхронизации с заданной областью. Если эта группа не будет добавлена, управляемый домен станет непригодным для использования.
.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName2")
Изменение области синхронизации приводит к тому, что управляемый домен повторно синхронизирует все данные. Объекты, которые больше не требуются в управляемом домене, удаляются, и повторная синхронизация может занять длительное время.
Изменение синхронизации в области
Чтобы изменить список групп, пользователи которых должны быть синхронизированы с управляемым доменом, повторно запустите скрипт Select-GroupsToSync.ps1
и укажите новый список групп для синхронизации.
В следующем примере группы для синхронизации больше не включают GroupName2 и теперь включают GroupName3.
Предупреждение
Группу администраторов контроллера домена AAD необходимо включить в список групп для синхронизации с заданной областью. Если эта группа не будет добавлена, управляемый домен станет непригодным для использования.
Для управления этой функцией требуется глобальный администратор .
Войдите в клиент Microsoft Entra с помощью командлета Connect-MgGraph .
.\Select-GroupsToSync.ps1 -groupsToAdd @("AAD DC Administrators", "GroupName1", "GroupName3")
Изменение области синхронизации приводит к тому, что управляемый домен повторно синхронизирует все данные. Объекты, которые больше не требуются в управляемом домене, удаляются, и повторная синхронизация может занять длительное время.
Отключение синхронизации в области
Чтобы отключить групповую синхронизацию для управляемого домена, установите параметр filteredSync = "Отключено" в ресурсе доменных служб, а затем обновите управляемый домен. По завершении все пользователи и группы будут синхронизироваться с идентификатором Microsoft Entra.
Для управления этой функцией требуется глобальный администратор .
Войдите в клиент Microsoft Entra с помощью командлета 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
Изменение области синхронизации приводит к тому, что управляемый домен повторно синхронизирует все данные. Объекты, которые больше не требуются в управляемом домене, удаляются, и повторная синхронизация может занять длительное время.
Следующие шаги
Дополнительные сведения о процессе синхронизации см. в статье "Общие сведения о синхронизации" в доменных службах Microsoft Entra.