Activer Microsoft Entra Domain Services en tirant parti de PowerShell

Microsoft Entra Domain Services fournit des services de domaine managé tels que la jonction de domaine, la stratégie de groupe, le protocole LDAP, l’authentification Kerberos/NTLM, totalement compatibles avec Windows Server Active Directory. Vous consommez ces services de domaine sans déployer, gérer et mettre à jour avec des correctifs les contrôleurs de domaine vous-même. Domain Services s’intègre à votre tenant Microsoft Entra existant. Cette intégration permet aux utilisateurs de se connecter en utilisant leurs informations d’identification d’entreprise, et vous pouvez utiliser des groupes et des comptes d’utilisateur existants pour sécuriser l’accès aux ressources.

Cet article vous montre comment activer Domain Services en utilisant PowerShell.

Remarque

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Prérequis

Pour effectuer ce qui est décrit dans cet article, vous avez besoin des ressources suivantes :

  • Installez et configurez Azure PowerShell.

  • Installez et configurez MS Graph PowerShell.

  • Vous devez disposer de privilèges d’administrateur général dans votre tenant Microsoft Entra pour activer Domain Services.

  • Vous avez besoin de privilèges Contributeur dans votre abonnement Azure pour créer les ressources Domain Services nécessaires.

    Important

    Tant que le module PowerShell Az.ADDomainServices est en préversion, vous devez l’installer séparément à l’aide de l’applet de commande Install-Module.

    Install-Module -Name Az.ADDomainServices
    

Créer les ressources Microsoft Entra nécessaires

Domain Services nécessite un principal de service pour s’authentifier et communiquer, et un groupe Microsoft Entra pour définir les utilisateurs qui disposent d’autorisations d’administration dans le domaine managé.

Commencez par créer un principal de service Microsoft Entra en utilisant un ID d’application spécifique nommé Domain Controller Services. La valeur d’ID est 2565bd9d-da50-47d4-8b85-4c97f669dc36 pour Azure Global et 6ba9a5d4-8456-4118-b521-9c5ca10cdf84 pour les autres clouds Azure. Ne modifiez pas cet ID d’application.

Créez un principal de service Microsoft Entra à l'aide de la cmdlet New-MgServicePrincipal :

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

Créez maintenant un groupe Microsoft Entra nommé Administrateurs AAD DC. Les utilisateurs ajoutés à ce groupe se voient ensuite accorder des autorisations pour effectuer des tâches d’administration dans le domaine managé.

Obtenez d’abord l’ID d’objet du groupe Administrateurs AAD DC à l’aide de l’applet de commande Get-MgGroup. Si le groupe n’existe pas, créez-le avec le groupe Administrateurs AAD DC à l’aide de l’applet de commande 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."
}

Une fois le groupe Administrateurs AAD DC créé, obtenez l’ID d’objet de l’utilisateur souhaité en utilisant l’applet de commande Get-MgUser, puis ajoutez l’utilisateur au groupe en utilisant l’applet de commande New-MgGroupMember.

Dans l’exemple suivant, l’ID d’objet utilisateur du compte a le nom d’utilisateur principal (UPN) admin@contoso.onmicrosoft.com. Remplacez ce compte d’utilisateur par l’UPN de l’utilisateur que vous souhaitez ajouter au groupe 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

Créer des ressources réseau

Dans un premier temps, inscrivez le fournisseur de ressources Microsoft Entra Domain Services en utilisant la cmdlet Register-AzResourceProvider :

Register-AzResourceProvider -ProviderNamespace Microsoft.AAD

Créez ensuite un groupe de ressources avec l’applet de commande New-AzResourceGroup. Dans l’exemple suivant, le groupe de ressources est nommé myResourceGroup et est créé dans la région westus. Utilisez votre propre nom et la région souhaitée :

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

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

Créez le réseau virtuel et les sous-réseaux pour Microsoft Entra Domain Services. Deux sous-réseaux sont créés : un pour DomainServices et un autre pour Workloads. Domain Services est déployé au sein du sous-réseau dédié DomainServices. Ne déployez pas d’autres applications ou charges de travail dans ce sous-réseau. Utilisez le sous-réseau indépendant Workloads ou d’autres sous-réseaux pour le reste de vos machines virtuelles.

Créez les sous-réseaux à l’aide de l’applet de commande New-AzVirtualNetworkSubnetConfig, puis créez le réseau virtuel à l’aide de l’applet de commande 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

Créer un groupe de sécurité réseau

Domain Services doit avoir un groupe de sécurité réseau pour sécuriser les ports nécessaires au domaine managé et bloquer tout autre trafic entrant. Un groupe de sécurité réseau (NSG) contient la liste des règles qui autorisent ou rejettent le trafic réseau vers le trafic d’un réseau virtuel Azure. Dans Domain Services, le groupe de sécurité réseau agit en tant que couche de protection supplémentaire pour verrouiller l’accès au domaine managé. Pour afficher les ports obligatoires, consultez Groupes de sécurité réseau et ports nécessaires.

Les cmdlets PowerShell suivantes utilisent New-AzNetworkSecurityRuleConfig pour créer les règles, puis New-AzNetworkSecurityGroup pour créer le groupe de sécurité réseau. Le groupe de sécurité réseau et les règles sont ensuite associés au sous-réseau de réseau virtuel à l’aide de la 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

Créer un domaine managé

Créons maintenant un domaine managé. Définissez votre ID d’abonnement Azure, puis fournissez un nom pour le domaine managé, par exemple dscontoso.com. Vous pouvez obtenir votre ID d’abonnement à l’aide de l’applet de commande Get-AzSubscription.

Si vous choisissez une région qui prend en charge les Zones de disponibilité, les ressources Domain Services sont réparties dans les zones pour assurer une redondance.

Les Zones de disponibilité sont des emplacements physiques uniques au sein d’une région Azure. Chaque zone de disponibilité est composée d’un ou de plusieurs centres de données équipés d’une alimentation, d’un système de refroidissement et d’un réseau indépendants. Pour garantir la résilience, un minimum de trois zones distinctes sont activées dans toutes les régions.

Vous ne devez rien configurer pour la répartition des ressources Domain Services entre les zones. La plateforme Azure gère automatiquement la répartition de zone des ressources. Pour plus d’informations et pour connaître la disponibilité régionale, voir Zones de disponibilité dans 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

Créer la ressource et retourner le contrôle à l’invite PowerShell prend quelques minutes. Le provisionnement du domaine managé se poursuit en arrière-plan et le déploiement peut prendre jusqu’à une heure. Dans le centre d’administration Microsoft Entra, la page Vue d’ensemble de votre domaine managé indique l’état actuel pendant cette phase de déploiement.

Une fois que le centre d’administration Microsoft Entra a indiqué que la fin de l’approvisionnement du domaine managé, voici les tâches qu’il convient d’effectuer :

  • Mettez à jour les paramètres DNS pour le réseau virtuel afin que les machines virtuelles puissent trouver le domaine géré pour l’authentification ou la jonction de domaine.
    • Pour configure le système DNS, sélectionnez votre domaine managé dans le portail. Dans la fenêtre Vue d’ensemble, vous êtes invité à configurer automatiquement ces paramètres DNS.
  • Activez la synchronisation de mots de passe dans Domain Services pour que les utilisateurs puissent se connecter au domaine managé avec leurs informations d’identification d’entreprise.

Compléter le script PowerShell

Le script PowerShell complet suivant regroupe toutes les tâches présentées dans cet article. Copiez le script et enregistrez-le dans un fichier avec une extension .ps1. Pour Azure Global, utilisez la valeur AppId 2565bd9d-da50-47d4-8b85-4c97f669dc36. Pour les autres clouds Azure, utilisez la valeur AppId 6ba9a5d4-8456-4118-b521-9c5ca10cdf84. Exécutez le script dans une console PowerShell locale ou Azure Cloud Shell.

Remarque

Pour activer Domain Services, vous devez être administrateur général pour le tenant Microsoft Entra. Vous avez aussi besoin au moins de privilèges Contributeur dans l’abonnement 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

Créer la ressource et retourner le contrôle à l’invite PowerShell prend quelques minutes. Le provisionnement du domaine managé se poursuit en arrière-plan et le déploiement peut prendre jusqu’à une heure. Dans le centre d’administration Microsoft Entra, la page Vue d’ensemble de votre domaine managé indique l’état actuel pendant cette phase de déploiement.

Une fois que le centre d’administration Microsoft Entra a indiqué que la fin de l’approvisionnement du domaine managé, voici les tâches qu’il convient d’effectuer :

  • Mettez à jour les paramètres DNS pour le réseau virtuel afin que les machines virtuelles puissent trouver le domaine géré pour l’authentification ou la jonction de domaine.
    • Pour configure le système DNS, sélectionnez votre domaine managé dans le portail. Dans la fenêtre Vue d’ensemble, vous êtes invité à configurer automatiquement ces paramètres DNS.
  • Activez la synchronisation de mots de passe dans Domain Services pour que les utilisateurs puissent se connecter au domaine managé avec leurs informations d’identification d’entreprise.

Étapes suivantes

Pour voir le domaine managé en action, vous pouvez joindre une machine virtuelle Windows à un domaine, configurer le protocole LDAP sécurisé et configurer la synchronisation du hachage de mot de passe.