Criar um domínio gerenciado do Microsoft Entra Domain Services usando um modelo do Azure Resource Manager

Os Serviços de Domínio do Microsoft Entra fornece serviços de domínio gerenciados, como associação de domínio, política de grupo, LDAP e autenticação Kerberos/NTLM, totalmente compatíveis com o Windows Server Active Directory. Você consome esses serviços de domínio sem implantar, gerenciar e aplicar patches aos controladores de domínio por conta própria. O Serviços de Domínio integra-se ao seu locatário existente do Microsoft Entra. Essa integração permite que os usuários entrem usando suas credenciais corporativas e você pode usar os grupos e as contas de usuário existentes para proteger o acesso aos recursos.

Este artigo mostra como criar um domínio gerenciado usando um modelo do Azure Resource Manager. Os recursos de suporte são criados usando o Azure PowerShell.

Pré-requisitos

Para concluir este artigo, você precisa dos seguintes recursos:

Requisitos de nomenclatura de DNS

Ao criar um domínio gerenciado do Domain Services, você especifica um nome DNS. Eis algumas considerações a serem feitas ao escolher o nome DNS:

  • Nome de domínio interno: Por padrão, o nome de domínio interno do diretório é usado (com sufixo .onmicrosoft.com). Se quiser habilitar o acesso LDAP seguro ao domínio gerenciado pela Internet, você não poderá criar um certificado digital para proteger a conexão com esse domínio padrão. A Microsoft é proprietária do domínio .onmicrosoft.com, portanto, uma Autoridade de Certificação (CA) não emite um certificado.
  • Nomes de domínio personalizados: A abordagem mais comum é especificar um nome de domínio personalizado, normalmente um que você já tenha e seja roteável. Quando você usa um domínio roteável personalizado, o tráfego pode fluir corretamente conforme necessário para dar suporte aos seus aplicativos.
  • Sufixos de domínio não roteáveis: em geral, recomendamos que você evite um sufixo de nome de domínio não roteável, como contoso.local. O sufixo .local não é roteável e pode causar problemas com a resolução do DNS.

Dica

Se você criar um nome de domínio personalizado, tome cuidado com os namespaces DNS existentes. Recomendamos usar um nome de domínio separado de qualquer namespace DNS local ou do Azure existente.

Por exemplo, se você tiver um namespace DNS existente contoso.com, crie um domínio gerenciado com o nome de domínio personalizado aaddscontoso.com. Caso precise usar o LDAP Seguro, registre e seja o proprietário desse nome de domínio personalizado para gerar os certificados necessários.

Talvez seja necessário criar alguns registros DNS adicionais para outros serviços no ambiente ou encaminhadores DNS condicionais entre os namespaces DNS existentes no ambiente. Por exemplo, se você executar um servidor Web que hospeda um site usando o nome DNS raiz, poderá haver conflitos de nomenclatura que exigem entradas DNS adicionais.

Neste exemplo e nestes artigos de instruções, o domínio personalizado aaddscontoso.com é usado como um breve exemplo. Em todos os comandos, especifique o próprio nome de domínio.

As seguintes restrições de nome DNS também se aplicam:

  • Restrições do prefixo do domínio: Você não pode criar um domínio gerenciado com um prefixo de mais de 15 caracteres. O prefixo do nome de domínio especificado (como aaddscontoso no nome de domínio aaddscontoso.com) precisa conter até 15 caracteres.
  • Conflitos de nome de rede: O nome de domínio DNS para seu domínio gerenciado não deve já existir na rede virtual. Especificamente, verifique os seguintes cenários que levariam a um conflito de nomes.
    • Se você já tiver um domínio do Active Directory com o mesmo nome de domínio DNS na rede virtual do Azure.
    • Se a rede virtual em que você planeja habilitar o domínio gerenciado tiver uma conexão VPN com sua rede local. Nesse cenário, verifique se você não tem um domínio com o mesmo nome de domínio DNS na rede local.
    • Se você tiver um serviço de nuvem existente do Azure com esse mesmo nome na rede virtual do Azure.

Criar os recursos necessários do Microsoft Entra

O Domain Services exige uma entidade de serviço e um grupo do Microsoft Entra. Esses recursos permitem que o domínio gerenciado sincronize dados e defina quais usuários têm permissões administrativas no domínio gerenciado.

Primeiro, registre o provedor de recursos Microsoft Entra Domain Services utilizando o cmdlet Register-AzResourceProvider:

Register-AzResourceProvider -ProviderNamespace Microsoft.AAD

Crie uma entidade de serviço do Microsoft Entra usando o cmdlet New-MgServicePrincipal para o Domain Services se comunicar e se autenticar. É usada uma ID de aplicativo específica denominada Serviços de Controlador de Domínio com uma ID de 2565bd9d-da50-47d4-8b85-4c97f669dc36 para o Azure Global. Para outras nuvens do Azure, procure o valor de AppId 6ba9a5d4-8456-4118-b521-9c5ca10cdf84.

New-MgServicePrincipal

Agora crie um grupo do Microsoft Entra chamado Administradores do AAD DC usando o cmdlet New-MgGroup. Os usuários adicionados a esse grupo recebem permissões para executar tarefas administrativas no domínio gerenciado.

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

Com o grupo Administradores do AAD DC criado, adicione um usuário ao grupo usando o cmdlet New-MgGroupMemberByRef. Primeiro, você obtém o ID de objeto do grupo Administradores de DC do AAD usando o cmdlet Get-MgGroup e, em seguida, o ID de objeto de usuário desejado usando o cmdlet Get-MgUser.

No exemplo a seguir, a ID de objeto do usuário para a conta com um UPN de admin@contoso.onmicrosoft.com. Substitua essa conta de usuário pelo UPN do usuário que você deseja adicionar ao grupo Administradores do AAD DC:

# 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

Finalmente, crie um grupo de recursos usando o cmdlet New-AzResourceGroup. No exemplo a seguir, o grupo de recursos é chamado myResourceGroup e é criado na região westus. Use seu nome e sua região desejada:

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

Se você escolher uma região que dá suporte para Zonas de Disponibilidade, os recursos dos Serviços de Domínio serão distribuídos entre as zonas para maior redundância. As Zonas de Disponibilidade são locais físicos exclusivos em uma região do Azure. Cada zona é composta por um ou mais datacenters equipados com energia, resfriamento e rede independentes. Para garantir a resiliência, há um mínimo de três zonas separadas em todas as regiões habilitadas.

Não é preciso configurar nada para que o Domain Services seja distribuído entre as zonas. A plataforma do Azure lida automaticamente com a distribuição de recursos na zona. Para obter mais informações e ver a disponibilidade da região, confira O que são as Zonas de Disponibilidade no Azure?.

Definição de recurso para o Domain Services

Como parte da definição de recurso do Resource Manager, os seguintes parâmetros de configuração são necessários:

Parâmetro Valor
domainName O nome de domínio DNS para seu domínio gerenciado, levando em consideração os pontos anteriores sobre prefixos e conflitos de nomenclatura.
filteredSync O Domain Services permite que você sincronize todos os usuários e grupos disponíveis no Microsoft Entra ID ou uma sincronização com escopo incluindo apenas grupos específicos.

Para mais informações sobre a sincronização com escopo, confira Sincronização com escopo do Microsoft Entra Domain Services.
notificationSettings Se houver alertas gerados no domínio gerenciado, as notificações por email poderão ser enviadas.

Administradores altamente privilegiados no locatário do Microsoft Entra ID e membros do grupo Administradores de DC do AAD podem ser Habilitados para receber essas notificações.

Se desejar, você poderá adicionar outros destinatários para receber notificações quando existirem alertas que requerem atenção.
domainConfigurationType Por padrão, um domínio gerenciado é criado como uma floresta de Usuários. Esse tipo de floresta sincroniza todos os objetos do Microsoft Entra ID, incluindo qualquer conta de usuário criada em um ambiente do AD DS local. Você não precisa especificar um valor domainConfiguration para criar uma floresta de usuário.

Uma floresta de Recursos sincroniza apenas usuários e grupos criados diretamente no Microsoft Entra ID. Defina o valor como ResourceTrusting para criar uma floresta de recursos.

Para obter mais informações sobre as florestas de Recursos, inclusive por que você pode usar uma e como criar relações de confiança de floresta com domínios locais do AD DS, confira Visão geral das florestas de recursos dos Serviços de Domínio.

A definição de parâmetros condensada a seguir mostra como esses valores são declarados. Uma floresta de usuários chamada aaddscontoso.com foi criada com todos os usuários do Microsoft Entra ID sincronizados com o domínio gerenciado:

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

O tipo de recurso de modelo do Resource Manager condensado a seguir é usado para definir e criar o domínio gerenciado. Uma rede virtual e uma sub-rede do Azure já devem existir ou ser criadas como parte do modelo do Resource Manager. O domínio gerenciado está conectado a essa sub-rede.

"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')]"
        }
    },
    [...]
]

Esses parâmetros e o tipo de recurso podem ser usados como parte de um modelo mais amplo do Resource Manager para implantar um domínio gerenciado, conforme mostrado na seção a seguir.

Criar um domínio gerenciado usando o modelo de exemplo

O modelo de exemplo completo do Resource Manager a seguir cria um domínio gerenciado e a rede virtual, a sub-rede e as regras do grupo de segurança de rede de suporte. As regras do grupo de segurança de rede são necessárias para proteger o domínio gerenciado e verificar se o tráfego pode fluir corretamente. Uma floresta de usuário com o nome DNS de aaddscontoso.com é criada, com todos os usuários sincronizados do Microsoft Entra ID:

{
    "$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": {}
}

Esse modelo pode ser implantado usando seu método de implantação preferencial, como o centro de administração do Microsoft Entra, o Azure PowerShell ou um pipeline de CI/CD. O exemplo a seguir usa o cmdlet New-AzResourceGroupDeployment. Especifique o nome do grupo de recursos e o nome do arquivo do modelo:

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

Leva alguns minutos para criar o recurso e retornar o controle para o prompt do PowerShell. O domínio gerenciado continua sendo provisionado em segundo plano e a implantação pode levar até uma hora para ser concluída. No centro de administração do Microsoft Entra, a página Visão Geral do seu domínio gerenciado mostra o status atual em toda a fase de implantação.

Quando o centro de administração do Microsoft Entra mostrar que o domínio gerenciado concluiu o provisionamento, as seguintes tarefas deverão ser concluídas:

  • Atualize as configurações de DNS da rede virtual, de modo que as máquinas virtuais possam encontrar o domínio gerenciado para ingresso no domínio ou autenticação.
    • Para configurar o DNS, selecione o domínio gerenciado no portal. Na janela Visão Geral, você será solicitado a definir automaticamente essas configurações de DNS.
  • Habilite a sincronização de senha para o Domain Services para que os usuários finais possam entrar no domínio gerenciado usando as credenciais corporativas deles.

Próximas etapas

Para ver o domínio gerenciado em ação, você pode ingressar uma VM do Windows em domínio, configurar o LDAP Seguro e configurar a sincronização de hash de senha.