Создание управляемого домена доменных служб Microsoft Entra с помощью шаблона Azure Resource Manager

Доменные службы Microsoft Entra предоставляют управляемые доменные службы, такие как присоединение к домену, групповая политика, LDAP, проверка подлинности Kerberos/NTLM, полностью совместимая с Windows Server Active Directory. Эти доменные службы можно использовать без необходимости развертывать, администрировать и обновлять контроллеры домена. Доменные службы интегрируются с существующим клиентом Microsoft Entra. Такая интеграция позволяет пользователям входить в систему с корпоративными учетными данными. При этом вы можете использовать существующие группы и учетные записи пользователей для защиты доступа к ресурсам.

В этой статье показано, как создать управляемый домен с помощью шаблона Azure Resource Manager. Вспомогательные ресурсы создаются с помощью Azure PowerShell.

Необходимые компоненты

Для работы с этой статьей требуются следующие ресурсы:

Требования к именованию DNS

При создании управляемого домена доменных служб укажите DNS-имя. При выборе имени DNS следует учитывать ряд рекомендаций.

  • Встроенное доменное имя: по умолчанию используется встроенное доменное имя каталога ( суффикс onmicrosoft.com ). Если вы хотите разрешить для управляемого домена доступ по защищенному протоколу LDAP, вы не сможете создать цифровой сертификат для защиты подключения к домену по умолчанию. Корпорация Майкрософт владеет доменом .onmicrosoft.com , поэтому центр сертификации (ЦС) не выдает сертификат.
  • Пользовательские доменные имена: наиболее распространенный подход заключается в указании имени личного домена, как правило, того, который вы уже владеете и является маршрутизируемым. При использовании личного домена с поддержкой маршрутизации трафик можно передавать так, нужно приложениям.
  • Неизменяемые суффиксы домена. Обычно рекомендуется избежать суффикса неизменяемого доменного имени, например contoso.local. Суффикс .local не маршрутизируется и его использование может привести к ошибкам при разрешении имен DNS.

Совет

Если вы создаете личное доменное имя, важно не допускать конфликтов с существующими пространствами имен DNS. Рекомендуется использовать доменное имя отдельно от существующего локального пространства имен DNS или пространства имен DNS от Azure.

Например, если вы используете существующее пространство имен DNS contoso.com, создайте управляемый домен с именем личного домена aaddscontoso.com. Если вам нужно использовать защищенный протокол LDAP, необходимо зарегистрировать и присвоить это имя личного домена, чтобы создать необходимые сертификаты.

Возможно, вам потребуется создать дополнительные записи DNS для других служб в среде или условные серверы переадресации DNS между существующими пространствами имен DNS в вашей среде. Например, если корневое имя DNS используется в качестве адреса сайта, размещенного на веб-сервере, могут возникнуть конфликты имен, для устранения которых потребуются дополнительные записи DNS.

В этом примере и инструкциях в качестве примера используется личный домен aaddscontoso.com. Используйте во всех командах собственное доменное имя.

Также применимы следующие ограничения в отношении DNS:

  • Ограничения префикса домена: невозможно создать управляемый домен с префиксом дольше 15 символов. Длина указанного префикса доменного имени (например, aaddscontoso в доменном имени aaddscontoso.com) не должна превышать 15 символов.
  • Конфликты сетевых имен: DNS-имя домена для управляемого домена не должно существовать в виртуальной сети. В частности, проверка для следующих сценариев, которые привели бы к конфликту имен.
    • Если в виртуальной сети уже существует домен Active Directory с таким же доменным именем DNS.
    • Если для виртуальной сети, в которой планируется использовать управляемый домен, установлено VPN-подключение к локальной сети. в этом случае необходимо убедиться в том, что в локальной сети нет домена с таким же DNS-именем домена;
    • Если в виртуальной сети Azure существует облачная служба Azure с таким же именем.

Создание необходимых ресурсов Microsoft Entra

Для доменных служб требуется субъект-служба и группа Microsoft Entra. Эти ресурсы позволяют управляемому домену синхронизировать данные и определять, каким пользователям предоставлять разрешения администратора в управляемом домене.

Сначала зарегистрируйте поставщика ресурсов доменных служб Microsoft Entra с помощью командлета Register-AzResourceProvider :

Register-AzResourceProvider -ProviderNamespace Microsoft.AAD

Создайте субъект-службу Microsoft Entra с помощью командлета New-MgServicePrincipal для доменных служб для обмена данными и проверки подлинности. Идентификатор конкретного приложения используется с именем доменных контроллеров с идентификатором 2565bd9d-da50-47d4-8b85-4c97f669dc36 для Azure Global. Для других облаков Azure найдите значение AppId 6ba9a5d4-8456-4118-b521-9c5ca10cdf84.

New-MgServicePrincipal

Теперь создайте группу Microsoft Entra с именем AAD DC Администратор istrator с помощью командлета New-MgGroup. Пользователи, добавленные в эту группу, получают разрешения на выполнение задач администрирования в управляемом домене.

New-MgGroup -DisplayName "AAD DC Administrators" `
  -Description "Delegated group to administer Microsoft Entra Domain Services" `
  -SecurityEnabled:$true -MailEnabled:$false `
  -MailNickName "AADDCAdministrators"

С помощью созданной группы контроллера домена AAD Администратор istrator добавьте пользователя в группу с помощью командлета New-MgGroupMember. Сначала вы получите идентификатор объекта группы контроллера домена AAD Администратор istrators с помощью командлета Get-MgGroup, а затем идентификатор объекта нужного пользователя с помощью командлета Get-MgUser.

В приведенном ниже примере показан идентификатор объекта пользователя для учетной записи с именем участника-пользователя admin@contoso.onmicrosoft.com. Используйте вместо этой учетной записи пользователя имя участника-пользователя, которого нужно добавить в группу Администраторы контроллера домена AAD

# First, retrieve the object ID of the newly created 'AAD DC Administrators' group.
$GroupObjectId = Get-MgGroup `
  -Filter "DisplayName eq 'AAD DC Administrators'" | `
  Select-Object Id

# Now, retrieve the object ID of the user you'd like to add to the group.
$UserObjectId = Get-MgUser `
  -Filter "UserPrincipalName eq 'admin@contoso.onmicrosoft.com'" | `
  Select-Object Id

# Add the user to the 'AAD DC Administrators' group.
New-MgGroupMember -GroupId $GroupObjectId.Id -DirectoryObjectId $UserObjectId.Id

Затем создайте группу ресурсов с помощью командлета New-AzResourceGroup. В следующем примере создается группа ресурсов с именем myResourceGroup в регионе westus. Используйте желаемое имя и регион:

New-AzResourceGroup `
  -Name "myResourceGroup" `
  -Location "WestUS"

Если выбрать регион, поддерживающий Зоны доступности, ресурсы доменных служб распределяются между зонами для повышения избыточности. Зоны доступности являются уникальными физическими расположениями внутри региона Azure. Каждая зона состоит из одного или нескольких центров обработки данных, оснащенных независимыми системами электроснабжения, охлаждения и сетевого взаимодействия. Чтобы обеспечить отказоустойчивость, во всех включенных регионах используются минимум три отдельные зоны.

Нет ничего, чтобы настроить распределение доменных служб между зонами. Платформа Azure автоматически обрабатывает распределение ресурсов зоны. См. дополнительные сведения о зонах доступности и регионах.

Определение ресурсов для доменных служб

Для определения ресурса Resource Manager требуются следующие параметры конфигурации:

Параметр Значение
domainName Доменное имя DNS для управляемого домена, учитывая описанные выше ограничения на именование префиксов и конфликтов.
filteredSync Доменные службы позволяют синхронизировать всех пользователей и группы, доступные в идентификаторе Microsoft Entra, или область синхронизацию только определенных групп.

Дополнительные сведения о область синхронизации см. в разделе "Доменные службы Microsoft Entra" область синхронизации.
notificationSettings Если в управляемом домене есть оповещения, Уведомления по электронной почте можно отправить.

Для этих уведомлений можно включитьглобальных администраторов клиента Azure и членов группы Администраторы контроллера домена AAD.

При желании вы можете добавить других получателей для уведомлений при наличии оповещений, требующих внимания.
domainConfigurationType По умолчанию управляемый домен создается как лес объектов User. Этот тип леса синхронизирует все объекты из идентификатора Microsoft Entra, включая все учетные записи пользователей, созданные в локальной среде AD DS. Для создания пользовательского леса не нужно указывать значение domainConfiguration.

Лес ресурсов синхронизирует только пользователей и группы, созданные непосредственно в идентификаторе Microsoft Entra. Чтобы создать лес ресурсов, задайте значение ResourceTrusting.

Дополнительные сведения о лесах ресурсов , в том числе о том, почему вы можете использовать один и как создавать отношения доверия лесов с локальными доменами AD DS, см . в обзоре лесов ресурсов доменных служб.

В приведенном ниже сокращенном определении параметров показано, как объявляются эти значения. Лес пользователей с именем aaddscontoso.com создается со всеми пользователями из идентификатора Microsoft Entra, синхронизированного с управляемым доменом:

"parameters": {
    "domainName": {
        "value": "aaddscontoso.com"
    },
    "filteredSync": {
        "value": "Disabled"
    },
    "notificationSettings": {
        "value": {
            "notifyGlobalAdmins": "Enabled",
            "notifyDcAdmins": "Enabled",
            "additionalRecipients": []
        }
    },
    [...]
}

Затем применяется следующий сжатый шаблон Resource Manager для типа ресурса, чтобы определить и создать управляемый домен. Виртуальная сеть и подсеть Azure должны уже существовать или быть созданы как часть шаблона Resource Manager. Управляемый домен должен быть подключен к этой подсети.

"resources": [
    {
        "apiVersion": "2017-06-01",
        "type": "Microsoft.AAD/DomainServices",
        "name": "[parameters('domainName')]",
        "location": "[parameters('location')]",
        "dependsOn": [
            "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]"
        ],
        "properties": {
            "domainName": "[parameters('domainName')]",
            "subnetId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', parameters('vnetName'), '/subnets/', parameters('subnetName'))]",
            "filteredSync": "[parameters('filteredSync')]",
            "notificationSettings": "[parameters('notificationSettings')]"
        }
    },
    [...]
]

Эти параметры и тип ресурса можно использовать как часть более широкого шаблона Resource Manager для развертывания управляемого домена, как показано в следующем разделе.

Создание управляемого домена с помощью примера шаблона

Следующий полный пример шаблона Resource Manager позволяет создать управляемый домен, вспомогательную виртуальную сеть, подсеть и правила группы безопасности сети. Правила группы безопасности сети необходимы для защиты управляемого домена и обеспечения бесперебойного трафика. Создается лес пользователей с DNS-именем aaddscontoso.com со всеми пользователями, синхронизированными с идентификатором Microsoft Entra:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "apiVersion": {
            "value": "2017-06-01"
        },
        "domainConfigurationType": {
            "value": "FullySynced"
        },
        "domainName": {
            "value": "aaddscontoso.com"
        },
        "filteredSync": {
            "value": "Disabled"
        },
        "location": {
            "value": "westus"
        },
        "notificationSettings": {
            "value": {
                "notifyGlobalAdmins": "Enabled",
                "notifyDcAdmins": "Enabled",
                "additionalRecipients": []
            }
        },
        "subnetName": {
            "value": "aadds-subnet"
        },
        "vnetName": {
            "value": "aadds-vnet"
        },
        "vnetAddressPrefixes": {
            "value": [
                "10.1.0.0/24"
            ]
        },
        "subnetAddressPrefix": {
            "value": "10.1.0.0/24"
        },
        "nsgName": {
            "value": "aadds-nsg"
        }
    },
    "resources": [
        {
            "apiVersion": "2017-06-01",
            "type": "Microsoft.AAD/DomainServices",
            "name": "[parameters('domainName')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]"
            ],
            "properties": {
                "domainName": "[parameters('domainName')]",
                "subnetId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', parameters('vnetName'), '/subnets/', parameters('subnetName'))]",
                "filteredSync": "[parameters('filteredSync')]",
                "domainConfigurationType": "[parameters('domainConfigurationType')]",
                "notificationSettings": "[parameters('notificationSettings')]"
            }
        },
        {
            "type": "Microsoft.Network/NetworkSecurityGroups",
            "name": "[parameters('nsgName')]",
            "location": "[parameters('location')]",
            "properties": {
                "securityRules": [
                    {
                        "name": "AllowSyncWithAzureAD",
                        "properties": {
                            "access": "Allow",
                            "priority": 101,
                            "direction": "Inbound",
                            "protocol": "Tcp",
                            "sourceAddressPrefix": "AzureActiveDirectoryDomainServices",
                            "sourcePortRange": "*",
                            "destinationAddressPrefix": "*",
                            "destinationPortRange": "443"
                        }
                    },
                    {
                        "name": "AllowPSRemoting",
                        "properties": {
                            "access": "Allow",
                            "priority": 301,
                            "direction": "Inbound",
                            "protocol": "Tcp",
                            "sourceAddressPrefix": "AzureActiveDirectoryDomainServices",
                            "sourcePortRange": "*",
                            "destinationAddressPrefix": "*",
                            "destinationPortRange": "5986"
                        }
                    },
                    {
                        "name": "AllowRD",
                        "properties": {
                            "access": "Allow",
                            "priority": 201,
                            "direction": "Inbound",
                            "protocol": "Tcp",
                            "sourceAddressPrefix": "CorpNetSaw",
                            "sourcePortRange": "*",
                            "destinationAddressPrefix": "*",
                            "destinationPortRange": "3389"
                        }
                    }
                ]
            },
            "apiVersion": "2018-04-01"
        },
        {
            "type": "Microsoft.Network/virtualNetworks",
            "name": "[parameters('vnetName')]",
            "location": "[parameters('location')]",
            "apiVersion": "2018-04-01",
            "dependsOn": [
                "[concat('Microsoft.Network/NetworkSecurityGroups/', parameters('nsgName'))]"
            ],
            "properties": {
                "addressSpace": {
                    "addressPrefixes": "[parameters('vnetAddressPrefixes')]"
                },
                "subnets": [
                    {
                        "name": "[parameters('subnetName')]",
                        "properties": {
                            "addressPrefix": "[parameters('subnetAddressPrefix')]",
                            "networkSecurityGroup": {
                                "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/NetworkSecurityGroups/', parameters('nsgName'))]"
                            }
                        }
                    }
                ]
            }
        }
    ],
    "outputs": {}
}

Этот шаблон можно развернуть с помощью предпочтительного метода развертывания, например центра администрирования Microsoft Entra, Azure PowerShell или конвейера CI/CD. В следующем примере используется командлет New-AzResourceGroupDeployment. Укажите собственное имя группы ресурсов и имя файла шаблона:

New-AzResourceGroupDeployment -ResourceGroupName "myResourceGroup" -TemplateFile <path-to-template>

Создание ресурса и возврат управления в командную строку PowerShell занимает несколько минут. Подготовка к работе управляемого домена продолжается в фоновом режиме. На завершение развертывания может понадобиться до часа. На странице "Обзор" управляемого домена в Центре администрирования Microsoft Entra отображается текущее состояние на этом этапе развертывания.

Когда Центр администрирования Microsoft Entra показывает, что управляемый домен завершает подготовку, необходимо выполнить следующие задачи:

  • Обновите параметры DNS для виртуальной сети, чтобы виртуальные машины могли найти управляемый домен для присоединения к нему или для аутентификации.
    • Чтобы настроить DNS, выберите на портале управляемый домен. В окне обзора появится запрос на автоматическую настройку этих параметров DNS.
  • Включите синхронизацию паролей в доменные службы , чтобы конечные пользователи могли войти в управляемый домен с помощью корпоративных учетных данных.

Следующие шаги

Чтобы увидеть управляемый домен в действии, присоедините к нему виртуальную машину Windows, настройте защищенный протокол LDAP и синхронизацию хэша паролей.