Abilitare Servizi di dominio Microsoft Entra con PowerShell

Servizi di dominio Microsoft Entra fornisce servizi di dominio gestiti, ad esempio l'aggiunta a un dominio, criteri di gruppo, LDAP, l'autenticazione Kerberos/NTLM completamente compatibile con Windows Server Active Directory. È possibile utilizzare questi servizi di dominio senza distribuire, gestire e applicare patch manualmente ai controller di dominio. Domain Services si integra con il tenant esistente di Microsoft Entra. Questa integrazione consente agli utenti di accedere con le proprie credenziali aziendali ed è possibile usare i gruppi e gli account utente esistenti per proteggere l'accesso alle risorse.

Questo articolo illustra come abilitare Servizi di dominio tramite PowerShell.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Prerequisiti

Per completare l'esercitazione di questo articolo, sono necessarie le risorse seguenti:

  • Installare e configurare Azure PowerShell.

  • Installare e configurare MS Graph PowerShell.

  • Per abilitare Servizi di dominio, sono necessari privilegi di amministratore globale nel tenant di Microsoft Entra.

  • Sono necessari privilegi di Collaboratore nella sottoscrizione di Azure per creare le risorse di Servizi di dominio necessarie.

    Importante

    Anche se il modulo PowerShell Az.ADDomainServices è in anteprima, è necessario installarlo separatamente usando il Install-Module cmdlet .

    Install-Module -Name Az.ADDomainServices
    

Creare le risorse necessarie di Microsoft Entra

Servizi di dominio richiede un'entità servizio per autenticare e comunicare e un gruppo Microsoft Entra per definire quali utenti dispongono di autorizzazioni amministrative nel dominio gestito.

Creare prima di tutto un'entità servizio Microsoft Entra usando un ID applicazione specifico denominato Domain Controller Services. Il valore ID è 2565bd9d-da50-47d4-8b85-4c97f669dc36 per Azure globale e 6ba9a5d4-8456-4118-b521-9c5ca10cdf84 per altri cloud di Azure. Non modificare questo ID applicazione.

Creare un'entità servizio Microsoft Entra usando il cmdlet New-MgServicePrincipal :

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

Creare ora un gruppo Microsoft Entra denominato AAD DC Amministrazione istrators. Agli utenti aggiunti a questo gruppo vengono concesse le autorizzazioni per eseguire attività di amministrazione nel dominio gestito.

Ottenere prima di tutto l'ID oggetto gruppo AAD DC Amministrazione istrators usando il cmdlet Get-MgGroup. Se il gruppo non esiste, crearlo con il gruppo AAD DC Amministrazione istrators usando il 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."
}

Dopo aver creato il gruppo AAD DC Amministrazione istrators, ottenere l'ID oggetto dell'utente desiderato usando il cmdlet Get-MgUser, quindi aggiungere l'utente al gruppo usando il cmdlet New-MgGroupMember.

Nell'esempio seguente, l'ID oggetto utente per l'account con nome dell'entità utente admin@contoso.onmicrosoft.com. Sostituire questo account utente con il nome dell'entità utente dell'utente che si vuole aggiungere al gruppo AAD DC Administrators:

# 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

Creare risorse di rete

Prima di tutto, registrare il provider di risorse di Microsoft Entra Domain Services usando il cmdlet Register-AzResourceProvider :

Register-AzResourceProvider -ProviderNamespace Microsoft.AAD

Creare quindi un gruppo di risorse con il cmdlet New-AzResourceGroup. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroup nell'area westus. Usare il proprio nome e l'area desiderata:

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

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

Creare la rete virtuale e le subnet per Microsoft Entra Domain Services. Vengono create due subnet, una per DomainServices e una per Workloads. Domain Services viene distribuito nella subnet DomainServices dedicata. Non distribuire altre applicazioni o carichi di lavoro in questa subnet. Per le altre macchine virtuali, usare la subnet separata Workloads o altre subnet.

Creare le subnet usando il cmdlet New-AzVirtualNetworkSubnetConfig, quindi creare la rete virtuale usando il 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

Creare un gruppo di sicurezza di rete

Domain Services richiede un gruppo di sicurezza di rete per proteggere le porte necessarie per il dominio gestito e bloccare tutto l'altro traffico in ingresso. Un gruppo di sicurezza di rete (NSG) contiene un elenco di regole per consentire o negare il traffico di rete indirizzato al traffico in una rete virtuale di Azure. In Servizi di dominio il gruppo di sicurezza di rete funge da ulteriore livello di protezione per bloccare l'accesso al dominio gestito. Per visualizzare le porte obbligatorie, vedere Gruppi di sicurezza di rete e porte obbligatorie.

I cmdlet di PowerShell seguenti usano New-AzNetworkSecurityRuleConfig per creare le regole e quindi New-AzNetworkSecurityGroup per creare il gruppo di sicurezza di rete. Il gruppo di sicurezza di rete e le regole vengono quindi associati alla subnet della rete virtuale usando il 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

Creare un dominio gestito

Ora creare un dominio gestito. Impostare l'ID sottoscrizione di Azure e quindi specificare un nome per il dominio gestito, ad esempio dscontoso.com. Per ottenere l'ID sottoscrizione, usare il cmdlet Get-AzSubscription.

Se si sceglie un'area che supporta zone di disponibilità, le risorse di Servizi di dominio vengono distribuite tra le zone per la ridondanza.

Le zone di disponibilità sono posizioni fisiche univoche all'interno di un'area di Azure. Ogni zona è costituita da uno o più data center dotati di impianti indipendenti per l'alimentazione, il raffreddamento e la connettività di rete. Per offrire la resilienza, devono essere presenti almeno tre zone separate in tutte le aree abilitate.

Non è necessario configurare per la distribuzione di Servizi di dominio tra le zone. La piattaforma Azure gestisce automaticamente la distribuzione delle risorse nelle zone. Per altre informazioni e per consultare la disponibilità delle aree, vedere Informazioni sulle zone di disponibilità di 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

Sono necessari alcuni minuti per creare la risorsa e restituire il controllo al prompt di PowerShell. Il provisioning del dominio gestito continua a essere eseguito in background e il completamento della distribuzione può richiedere fino a un'ora. Nell'interfaccia di amministrazione di Microsoft Entra la pagina Panoramica del dominio gestito mostra lo stato corrente in questa fase di distribuzione.

Quando l'interfaccia di amministrazione di Microsoft Entra mostra che il provisioning del dominio gestito è terminato, è necessario completare le attività seguenti:

  • Aggiornare le impostazioni DNS per la rete virtuale, in modo che le macchine virtuali possano trovare il dominio gestito per l'autenticazione o l'aggiunta al dominio.
    • Per configurare il DNS, selezionare il dominio gestito nel portale. Nella finestra Panoramica viene richiesto di configurare automaticamente queste impostazioni DNS.
  • Abilitare la sincronizzazione delle password in Servizi di dominio in modo che gli utenti finali possano accedere al dominio gestito usando le credenziali aziendali.

Script di PowerShell completo

Lo script di PowerShell completo seguente combina tutte le attività illustrate in questo articolo. Copiare lo script e salvarlo in un file con estensione .ps1. Per Azure Globale usare il valore AppId 2565bd9d-da50-47d4-8b85-4c97f669dc36. Per altri cloud di Azure, usare il valore AppId 6ba9a5d4-8456-4118-b521-9c5ca10cdf84. Eseguire lo script in una console di PowerShell locale o in Azure Cloud Shell.

Nota

Per abilitare Servizi di dominio, è necessario essere un amministratore globale per il tenant di Microsoft Entra. e disporre almeno dei privilegi di Collaboratore nella sottoscrizione di 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

Sono necessari alcuni minuti per creare la risorsa e restituire il controllo al prompt di PowerShell. Il provisioning del dominio gestito continua a essere eseguito in background e il completamento della distribuzione può richiedere fino a un'ora. Nell'interfaccia di amministrazione di Microsoft Entra la pagina Panoramica del dominio gestito mostra lo stato corrente in questa fase di distribuzione.

Quando l'interfaccia di amministrazione di Microsoft Entra mostra che il provisioning del dominio gestito è terminato, è necessario completare le attività seguenti:

  • Aggiornare le impostazioni DNS per la rete virtuale, in modo che le macchine virtuali possano trovare il dominio gestito per l'autenticazione o l'aggiunta al dominio.
    • Per configurare il DNS, selezionare il dominio gestito nel portale. Nella finestra Panoramica viene richiesto di configurare automaticamente queste impostazioni DNS.
  • Abilitare la sincronizzazione delle password in Servizi di dominio in modo che gli utenti finali possano accedere al dominio gestito usando le credenziali aziendali.

Passaggi successivi

Per vedere il dominio gestito in azione, è possibile aggiungere a un dominio una macchina virtuale Windows, configurare LDAP sicuro e configurare la sincronizzazione degli hash delle password.