Habilitación de Microsoft Entra Domain Services mediante PowerShell

Microsoft Entra Domain Services proporciona servicios de dominio administrado, como unión a dominio, directiva de grupo, LDAP, autenticación Kerberos/NTLM que es totalmente compatible con Windows Server Active Directory. Estos servicios de dominio se usan sin necesidad de implementar, administrar ni aplicar revisiones a los controladores de dominio. Domain Services se integra con el inquilino de Microsoft Entra existente. Esta integración permite a los usuarios iniciar sesión con sus credenciales corporativas y, además, le permite usar grupos y cuentas de usuario existentes para proteger el acceso a los recursos.

En este artículo se muestra cómo habilitar Domain Services con PowerShell.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Requisitos previos

Para completar este artículo, necesita los siguientes recursos:

  • Instale y configure Azure PowerShell.

  • Instale y configure MS Graph PowerShell.

  • Necesita privilegios de administrador global en el inquilino de Microsoft Entra para habilitar Domain Services.

  • Necesita privilegios de colaborador en la suscripción de Azure para crear los recursos de Domain Services necesarios.

    Importante

    Aunque el módulo Az.ADDomainServices de PowerShell está en versión preliminar, se debe instalar por separado mediante el cmdlet Install-Module.

    Install-Module -Name Az.ADDomainServices
    

Creación de los recursos de Microsoft Entra necesarios

Domain Services necesita una entidad de servicio para autenticarse y comunicarse, así como un grupo de Microsoft Entra para definir qué usuarios tienen permisos administrativos en el dominio administrado.

En primer lugar, cree una entidad de servicio de Microsoft Entra usando un identificador de aplicación específico llamado Servicios de controlador de dominio. El valor de id. es 2565bd9d-da50-47d4-8b85-4c97f669dc36 para Azure global y 6ba9a5d4-8456-4118-b521-9c5ca10cdf84 para otras nubes de Azure. No cambie este identificador de aplicación.

Cree una entidad de servicio de Microsoft Entra mediante el cmdlet New-MgServicePrincipal:

New-MgServicePrincipal -AppId "2565bd9d-da50-47d4-8b85-4c97f669dc36"

Ahora cree un grupo de Microsoft Entra denominado Administradores de controladores de dominio de AAD. A los usuarios agregados a este grupo se les conceden permisos para realizar tareas de administración en el dominio administrado.

Primero, obtenga el identificador de objeto del grupo AAD DC Administrators mediante el cmdlet Get-MgGroup. Si el grupo no existe, créelo con el grupo AAD DC Administrators mediante el cmdlet New-MgGroup:

# First, retrieve the object ID of the 'AAD DC Administrators' group.
$GroupObject = Get-MgGroup `
  -Filter "DisplayName eq 'AAD DC Administrators'"

# If the group doesn't exist, create it
if (!$GroupObject) {
  $GroupObject = New-MgGroup -DisplayName "AAD DC Administrators" `
    -Description "Delegated group to administer Microsoft Entra Domain Services" `
    -SecurityEnabled:$true `
    -MailEnabled:$false `
    -MailNickName "AADDCAdministrators"
  } else {
  Write-Output "Admin group already exists."
}

Después de crear el grupo AAD DC Administrators, obtenga el identificador de objeto del usuario deseado mediante el cmdlet Get-MgUser y, luego, agregue el usuario al grupo mediante el cmdlet New-MgGroupMember.

En el ejemplo siguiente, el identificador de objeto de usuario de la cuenta con un UPN de admin@contoso.onmicrosoft.com. Reemplace esta cuenta de usuario por el UPN del usuario que quiere agregar al grupo Administradores de controlador de dominio de AAD:

# 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 $GroupObject.Id -DirectoryObjectId $UserObjectId.Id

Crear recursos de red

En primer lugar, registre el proveedor de recursos de Microsoft Entra Domain Services mediante el cmdlet Register-AzResourceProvider:

Register-AzResourceProvider -ProviderNamespace Microsoft.AAD

A continuación, cree un grupo de recursos con el cmdlet New-AzResourceGroup. En el ejemplo siguiente, el grupo de recursos se denomina myResourceGroup y se crea en la región westus. Use su propio nombre y la región deseada:

$ResourceGroupName = "myResourceGroup"
$AzureLocation = "westus"

# Create the resource group.
New-AzResourceGroup `
  -Name $ResourceGroupName `
  -Location $AzureLocation

Cree la red virtual y las subredes para Microsoft Entra Domain Services. Se crean dos subredes: una para DomainServices y otra para Cargas de trabajo. Domain Services se implementa en la subred dedicada DomainServices. No implemente otras aplicaciones o cargas de trabajo en esta subred. Use la subred Cargas de trabajo u otras subredes con el resto de las máquinas virtuales.

Cree las subredes mediante el cmdlet New-AzVirtualNetworkSubnetConfig y, luego, cree la red virtual mediante el cmdlet New-AzVirtualNetwork.

$VnetName = "myVnet"

# Create the dedicated subnet for Microsoft Entra Domain Services.
$SubnetName = "DomainServices"
$AaddsSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name $SubnetName `
  -AddressPrefix 10.0.0.0/24

# Create an additional subnet for your own VM workloads
$WorkloadSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name Workloads `
  -AddressPrefix 10.0.1.0/24

# Create the virtual network in which you will enable Microsoft Entra Domain Services.
$Vnet= New-AzVirtualNetwork `
  -ResourceGroupName $ResourceGroupName `
  -Location westus `
  -Name $VnetName `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $AaddsSubnet,$WorkloadSubnet

Crear un grupo de seguridad de red

Domain Services necesita un grupo de seguridad de red para proteger los puertos necesarios para el dominio administrado y bloquear el resto del tráfico entrante. Un grupo de seguridad de red (NSG) contiene una lista de reglas que permiten o deniegan el tráfico de red al tráfico de una red virtual de Azure. En Domain Services, el grupo de seguridad de red actúa como un nivel de protección adicional para bloquear el acceso al dominio administrado. Para ver los puertos necesarios, consulte Grupos de seguridad de red y puertos necesarios.

Los siguientes cmdlets de PowerShell usan New-AzNetworkSecurityRuleConfig para crear las reglas y, a continuación, New-AzNetworkSecurityGroup para crear el grupo de seguridad de red. Después, el grupo de seguridad de red y las reglas se asocian a la subred de la red virtual mediante el cmdlet Set-AzVirtualNetworkSubnetConfig.

$NSGName = "dsNSG"

# Create a rule to allow inbound TCP port 3389 traffic from Microsoft secure access workstations for troubleshooting
$nsg201 = New-AzNetworkSecurityRuleConfig -Name AllowRD `
    -Access Allow `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 201 `
    -SourceAddressPrefix CorpNetSaw `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 3389

# Create a rule to allow TCP port 5986 traffic for PowerShell remote management
$nsg301 = New-AzNetworkSecurityRuleConfig -Name AllowPSRemoting `
    -Access Allow `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 301 `
    -SourceAddressPrefix AzureActiveDirectoryDomainServices `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 5986

# Create the network security group and rules
$nsg = New-AzNetworkSecurityGroup -Name $NSGName `
    -ResourceGroupName $ResourceGroupName `
    -Location $AzureLocation `
    -SecurityRules $nsg201,$nsg301

# Get the existing virtual network resource objects and information
$vnet = Get-AzVirtualNetwork -Name $VnetName -ResourceGroupName $ResourceGroupName
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $SubnetName
$addressPrefix = $subnet.AddressPrefix

# Associate the network security group with the virtual network subnet
Set-AzVirtualNetworkSubnetConfig -Name $SubnetName `
    -VirtualNetwork $vnet `
    -AddressPrefix $addressPrefix `
    -NetworkSecurityGroup $nsg
$vnet | Set-AzVirtualNetwork

Creación de un dominio administrado

Ahora vamos a crear un dominio administrado. Establezca el identificador de la suscripción de Azure y, luego, proporcione un nombre al dominio administrado, como dscontoso.com. Puede obtener el identificador de la suscripción con el cmdlet Get-AzSubscription.

Si elige una región que admite Availability Zones, los recursos de Domain Services se distribuyen entre las zonas para conseguir redundancia.

Las zonas de disponibilidad son ubicaciones físicas exclusivas dentro de una región de Azure. Cada zona de disponibilidad consta de uno o varios centros de datos equipados con alimentación, refrigeración y redes independientes. Para garantizar la resistencia, hay un mínimo de tres zonas independientes en todas las regiones habilitadas.

No es necesario realizar ninguna configuración para que Domain Services se distribuya entre zonas. La plataforma Azure controla automáticamente la distribución en zonas de los recursos. Para más información y ver la disponibilidad regional, consulte ¿Qué son las zonas de disponibilidad en Azure?

$AzureSubscriptionId = "YOUR_AZURE_SUBSCRIPTION_ID"
$ManagedDomainName = "dscontoso.com"

# Enable Microsoft Entra Domain Services for the directory.
$replicaSetParams = @{
  Location = $AzureLocation
  SubnetId = "/subscriptions/$AzureSubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Network/virtualNetworks/$VnetName/subnets/DomainServices"
}
$replicaSet = New-AzADDomainServiceReplicaSetObject @replicaSetParams

$domainServiceParams = @{
  Name = $ManagedDomainName
  ResourceGroupName = $ResourceGroupName
  DomainName = $ManagedDomainName
  ReplicaSet = $replicaSet
}
New-AzADDomainService @domainServiceParams

Tarda unos minutos hasta que se crea el recurso y se devuelve el control al símbolo del sistema de PowerShell. El dominio administrado se sigue aprovisionando en segundo plano y puede tardar hasta una hora en finalizar la implementación. En el centro de administración de Microsoft Entra, la página Información general del dominio administrado muestra el estado actual durante esta fase de implementación.

Cuando en el centro de administración de Microsoft Entra se muestra que el dominio administrado ha terminado de aprovisionarse, es necesario realizar las siguientes tareas:

  • Actualice la configuración de DNS para la red virtual de manera que las máquinas virtuales puedan encontrar el dominio administrado para la unión o autenticación de dominios.
    • Para configurar DNS, seleccione el dominio administrado en el portal. En la ventana Información general, se le pedirá que configure automáticamente estos valores de DNS.
  • Habilite la sincronización de contraseñas en Domain Services de manera que los usuarios finales puedan iniciar sesión en el dominio administrado mediante sus credenciales corporativas.

Script completo de PowerShell

El siguiente script completo de PowerShell combina todas las tareas que se muestran en este artículo. Copie el script y guárdelo en un archivo con la extensión .ps1. Para Azure Global, use el valor de AppId 2565bd9d-da50-47d4-8b85-4c97f669dc36. Para otras nubes de Azure, use el valor de AppId 6ba9a5d4-8456-4118-b521-9c5ca10cdf84. Ejecute el script en una consola local de PowerShell o en Azure Cloud Shell.

Nota:

Para habilitar Domain Services, debe ser administrador global del inquilino de Microsoft Entra. También necesita al menos privilegios de colaborador en la suscripción de Azure.

# Change the following values to match your deployment.
$AaddsAdminUserUpn = "admin@contoso.onmicrosoft.com"
$ResourceGroupName = "myResourceGroup"
$VnetName = "myVnet"
$AzureLocation = "westus"
$AzureSubscriptionId = "YOUR_AZURE_SUBSCRIPTION_ID"
$ManagedDomainName = "dscontoso.com"

# Connect to your Microsoft Entra directory.
Connect-MgGraph -Scopes "Application.ReadWrite.All","Directory.ReadWrite.All"

# Login to your Azure subscription.
Connect-AzAccount

# Create the service principal for Microsoft Entra Domain Services.
New-MgServicePrincipal -AppId "2565bd9d-da50-47d4-8b85-4c97f669dc36"

# First, retrieve the object of the 'AAD DC Administrators' group.
$GroupObject = Get-MgGroup `
  -Filter "DisplayName eq 'AAD DC Administrators'"

# Create the delegated administration group for Microsoft Entra Domain Services if it doesn't already exist.
if (!$GroupObject) {
  $GroupObject = New-MgGroup -DisplayName "AAD DC Administrators" `
    -Description "Delegated group to administer Microsoft Entra Domain Services" `
    -SecurityEnabled:$true `
    -MailEnabled:$false `
    -MailNickName "AADDCAdministrators"
  } else {
  Write-Output "Admin group already exists."
}

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

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

# Register the resource provider for Microsoft Entra Domain Services with Resource Manager.
Register-AzResourceProvider -ProviderNamespace Microsoft.AAD

# Create the resource group.
New-AzResourceGroup `
  -Name $ResourceGroupName `
  -Location $AzureLocation

# Create the dedicated subnet for Microsoft Entra Domain Services.
$SubnetName = "DomainServices"
$AaddsSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name DomainServices `
  -AddressPrefix 10.0.0.0/24

$WorkloadSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name Workloads `
  -AddressPrefix 10.0.1.0/24

# Create the virtual network in which you will enable Microsoft Entra Domain Services.
$Vnet=New-AzVirtualNetwork `
  -ResourceGroupName $ResourceGroupName `
  -Location $AzureLocation `
  -Name $VnetName `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $AaddsSubnet,$WorkloadSubnet

$NSGName = "dsNSG"

# Create a rule to allow inbound TCP port 3389 traffic from Microsoft secure access workstations for troubleshooting
$nsg201 = New-AzNetworkSecurityRuleConfig -Name AllowRD `
    -Access Allow `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 201 `
    -SourceAddressPrefix CorpNetSaw `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 3389

# Create a rule to allow TCP port 5986 traffic for PowerShell remote management
$nsg301 = New-AzNetworkSecurityRuleConfig -Name AllowPSRemoting `
    -Access Allow `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 301 `
    -SourceAddressPrefix AzureActiveDirectoryDomainServices `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 5986

# Create the network security group and rules
$nsg = New-AzNetworkSecurityGroup -Name $NSGName `
    -ResourceGroupName $ResourceGroupName `
    -Location $AzureLocation `
    -SecurityRules $nsg201,$nsg301

# Get the existing virtual network resource objects and information
$vnet = Get-AzVirtualNetwork -Name $VnetName -ResourceGroupName $ResourceGroupName
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $SubnetName
$addressPrefix = $subnet.AddressPrefix

# Associate the network security group with the virtual network subnet
Set-AzVirtualNetworkSubnetConfig -Name $SubnetName `
    -VirtualNetwork $vnet `
    -AddressPrefix $addressPrefix `
    -NetworkSecurityGroup $nsg
$vnet | Set-AzVirtualNetwork

# Enable Microsoft Entra Domain Services for the directory.
$replicaSetParams = @{
  Location = $AzureLocation
  SubnetId = "/subscriptions/$AzureSubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Network/virtualNetworks/$VnetName/subnets/DomainServices"
}
$replicaSet = New-AzADDomainServiceReplicaSet @replicaSetParams

$domainServiceParams = @{
  Name = $ManagedDomainName
  ResourceGroupName = $ResourceGroupName
  DomainName = $ManagedDomainName
  ReplicaSet = $replicaSet
}
New-AzADDomainService @domainServiceParams

Tarda unos minutos hasta que se crea el recurso y se devuelve el control al símbolo del sistema de PowerShell. El dominio administrado se sigue aprovisionando en segundo plano y puede tardar hasta una hora en finalizar la implementación. En el centro de administración de Microsoft Entra, la página Información general del dominio administrado muestra el estado actual durante esta fase de implementación.

Cuando en el centro de administración de Microsoft Entra se muestra que el dominio administrado ha terminado de aprovisionarse, es necesario realizar las siguientes tareas:

  • Actualice la configuración de DNS para la red virtual de manera que las máquinas virtuales puedan encontrar el dominio administrado para la unión o autenticación de dominios.
    • Para configurar DNS, seleccione el dominio administrado en el portal. En la ventana Información general, se le pedirá que configure automáticamente estos valores de DNS.
  • Habilite la sincronización de contraseñas en Domain Services de manera que los usuarios finales puedan iniciar sesión en el dominio administrado mediante sus credenciales corporativas.

Pasos siguientes

Para ver el dominio administrado en acción, puede unir a un dominio una máquina virtual Windows, configurar LDAP seguro y configurar la sincronización de hash de contraseñas.