Activer l’authentification AD DS pour les partages Azure Files

Cet article décrit le processus d’activation de l’authentification services de domaine Active Directory (AD DS) sur votre compte de stockage afin d’utiliser les informations d’identification Active Directory local (AD) pour l’authentification auprès des partages de fichiers Azure.

Important

Avant d’activer l’authentification AD DS, vérifiez que vous comprenez les scénarios pris en charge et conditions requises décrits dans l’article de présentation et que vous remplissez les conditions préalables nécessaires. Si votre environnement Active Directory s’étend sur plusieurs forêts, veuillez consulter la rubrique Utiliser Azure Files avec plusieurs forêts Active Directory.

Pour activer l’authentification AD DS sur SMB pour les partages de fichiers Azure, vous devez inscrire votre compte de stockage Azure à votre AD DS local, puis définir les propriétés de domaine requises sur le compte de stockage. Pour enregistrer votre compte de stockage avec AD DS, vous créez un compte d’ordinateur (ou compte de connexion de service) qui le représente dans votre AD DS. Pensez ce processus comme s’il s’agissait de créer un compte représentant un serveur de fichiers Windows local dans votre AD DS. Lorsque la fonctionnalité est activée sur le compte de stockage, elle s’applique à tous les partages de fichiers nouveaux et existants dans le compte.

S’applique à

Type de partage de fichiers SMB NFS
Partages de fichiers Standard (GPv2), LRS/ZRS Yes No
Partages de fichiers Standard (GPv2), GRS/GZRS Yes No
Partages de fichiers Premium (FileStorage), LRS/ZRS Yes No

Le module PowerShell AzFilesHybrid fournit des cmdlets pour le déploiement et la configuration de Azure Files. Il inclut des cmdlets pour joindre des comptes de stockage de domaine à votre Active Directory local et configurer vos serveurs DNS. Les cmdlets apportent les modifications nécessaires et activent la fonctionnalité pour vous. Comme certaines parties des applets de commande interagissent avec votre AD DS local, nous expliquons ce qu’elles font pour vous permettre de déterminer si les modifications respectent vos stratégies de conformité et de sécurité, et de vérifier que vous disposez des autorisations appropriées pour les exécuter. Si vous ne parvenez pas à utiliser le module AzFilesHybrid recommandé, nous fournissons des étapes manuelles.

Important

Le chiffrement Kerberos AES-256 est désormais la seule méthode de chiffrement prise en charge par le module AzFilesHybrid. Si vous préférez utiliser le chiffrement RC4, consultez Option n° 2 : exécuter manuellement les actions d’activation. Si vous avez précédemment activé la fonctionnalité avec une ancienne version d’AzFilesHybrid (inférieure à la version 0.2.2) qui utilisait RC4 comme méthode de chiffrement par défaut et que vous souhaitez la mettre à jour pour prendre en charge AES-256, consultez Résoudre les problèmes liés à l’authentification Azure File (SMB).

Prérequis

Télécharger le module AzFilesHybrid

Téléchargez et décompressez la dernière version du module AzFilesHybrid.

Exécuter Join-AzStorageAccount

L’applet de commande Join-AzStorageAccount effectue l’équivalent d’une jonction de domaine hors connexion pour le compte de stockage spécifié. Le script ci-dessous utilise l’applet de commande pour créer un compte d’ordinateur dans votre domaine Active Directory. Si pour une raison quelconque, vous ne pouvez pas utiliser un compte d’ordinateur, vous pouvez à la place modifier le script pour créer un compte de connexion de service. L’utilisation du chiffrement AES-256 avec des comptes d’ouverture de session du service est prise en charge à partir d’AzFilesHybrid version 0.2.5.

Le compte AD DS créé par l’applet de commande représente le compte de stockage. Si le compte AD DS est créé sous une unité d’organisation (UO) qui applique l’expiration du mot de passe, vous devez mettre à jour le mot de passe avant la durée de vie maximale du mot de passe. Le fait de ne pas mettre à jour le mot de passe du compte avant cette date entraîne des échecs d’authentification lors de l’accès aux partages de fichiers Azure. Pour savoir comment mettre à jour le mot de passe, consultez Mettre à jour le mot de passe du compte AD DS.

Important

L’applet de commande Join-AzStorageAccount crée un compte AD pour représenter le compte de stockage (partage de fichiers) dans AD. Vous pouvez choisir de vous inscrire en tant que compte d’ordinateur ou compte de connexion au service. Pour plus d’informations, consultez la FAQ. Les mots de passe de compte de connexion de service peuvent expirer dans AD s’ils ont une durée de vie de mot de passe par défaut définie sur le domaine AD ou l’unité d’organisation. Étant donné que les modifications de mot de passe du compte d’ordinateur sont pilotées par l’ordinateur client et non AD, elles n’expirent pas dans AD, bien que les ordinateurs clients modifient leurs mots de passe par défaut tous les 30 jours. Pour les deux types de compte, nous vous recommandons de vérifier la durée de vie du mot de passe configurée et d’envisager de mettre à jour le mot de passe de l’identité de votre compte de stockage pour le compte AD, avant la durée de vie maximale du mot de passe. Vous pouvez envisager de créer une nouvelle unité d’organisation AD dans AD et de désactiver en conséquence la stratégie d’expiration de mot de passe pour les comptes d’ordinateur ou les comptes de connexion de service.

Vous devez exécuter le script ci-dessous dans PowerShell 5.1 sur un appareil relié à votre AD DS sur site, à l’aide d’informations d’identification AD DS sur site permettant de créer un compte d’ordinateur ou un compte de connexion de service dans l’AD cible (par exemple, administrateur de domaine). Pour suivre le principe du privilège minimum, les informations d’identification AD DS locales doivent avoir les rôles Azure suivants :

  • Lecteur sur le groupe de ressources dans lequel se trouve le compte de stockage cible.
  • Contributeur sur le compte de stockage à joindre à AD DS.

Si le compte utilisé pour joindre le compte de stockage dans AD DS est un Propriétaire ou un Contributeur dans l’abonnement Azure où se trouvent les ressources cibles, ce compte est déjà activé pour effectuer la jointure et aucune autre affectation n’est requise.

Les informations d’identification AD DS doivent également disposer des autorisations nécessaires pour créer un compte d’ordinateur ou un compte d’ouverture de session de service dans l’instance AD cible. Remplacez les valeurs d’espace réservé par vos propres valeurs avant d’exécuter le script.

# Change the execution policy to unblock importing AzFilesHybrid.psm1 module
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

# Navigate to where AzFilesHybrid is unzipped and stored and run to copy the files into your path
.\CopyToPSPath.ps1 

# Import AzFilesHybrid module
Import-Module -Name AzFilesHybrid

# Login to Azure using a credential that has either storage account owner or contributor Azure role 
# assignment. If you are logging into an Azure environment other than Public (ex. AzureUSGovernment) 
# you will need to specify that.
# See https://learn.microsoft.com/azure/azure-government/documentation-government-get-started-connect-with-ps
# for more information.
Connect-AzAccount

# Define parameters
# $StorageAccountName is the name of an existing storage account that you want to join to AD
# $SamAccountName is the name of the to-be-created AD object, which is used by AD as the logon name 
# for the object. It must be 15 characters or less and has certain character restrictions.
# Make sure that you provide the SamAccountName without the trailing '$' sign.
# See https://learn.microsoft.com/windows/win32/adschema/a-samaccountname for more information.
$SubscriptionId = "<your-subscription-id-here>"
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"
$SamAccountName = "<sam-account-name-here>"
$DomainAccountType = "<ComputerAccount|ServiceLogonAccount>" # Default is set as ComputerAccount
# If you don't provide the OU name as an input parameter, the AD identity that represents the 
# storage account is created under the root directory.
$OuDistinguishedName = "<ou-distinguishedname-here>"
# Encryption method is AES-256 Kerberos.

# Select the target subscription for the current session
Select-AzSubscription -SubscriptionId $SubscriptionId 

# Register the target storage account with your active directory environment under the target OU 
# (for example: specify the OU with Name as "UserAccounts" or DistinguishedName as 
# "OU=UserAccounts,DC=CONTOSO,DC=COM"). You can use this PowerShell cmdlet: Get-ADOrganizationalUnit 
# to find the Name and DistinguishedName of your target OU. If you are using the OU Name, specify it 
# with -OrganizationalUnitName as shown below. If you are using the OU DistinguishedName, you can set it 
# with -OrganizationalUnitDistinguishedName. You can choose to provide one of the two names to specify 
# the target OU. You can choose to create the identity that represents the storage account as either a 
# Service Logon Account or Computer Account (default parameter value), depending on your AD permissions 
# and preference. Run Get-Help Join-AzStorageAccountForAuth for more details on this cmdlet.

Join-AzStorageAccount `
        -ResourceGroupName $ResourceGroupName `
        -StorageAccountName $StorageAccountName `
        -SamAccountName $SamAccountName `
        -DomainAccountType $DomainAccountType `
        -OrganizationalUnitDistinguishedName $OuDistinguishedName

# You can run the Debug-AzStorageAccountAuth cmdlet to conduct a set of basic checks on your AD configuration 
# with the logged on AD user. This cmdlet is supported on AzFilesHybrid v0.1.2+ version. For more details on 
# the checks performed in this cmdlet, see Azure Files Windows troubleshooting guide.
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose

Option n°2 : Exécuter manuellement les actions d’activation

La plupart des clients doivent choisir l’option 1 ci-dessus et utiliser le module PowerShell AzFilesHybrid pour activer l’authentification AD DS avec Azure Files. Cependant, si vous préférez exécuter les étapes manuellement en utilisant Active Directory PowerShell, les étapes sont décrites ici.

Important

Si vous avez déjà exécuté le script Join-AzStorageAccount ci-dessus, passez directement à la section Confirmer que la fonctionnalité est activée. Vous n’avez pas besoin d’effectuer les étapes manuelles suivantes.

Vérifier l’environnement

Vérifiez d’abord l’état de votre environnement.

  • Vérifiez si Active Directory PowerShell est installé et si l’interpréteur de commandes est en cours d’exécution avec des privilèges d’administrateur.
  • Assurez-vous que le module Az.Storage est installé, et installez-le si ce n’est pas le cas. Vous avez besoin au moins de la version 2.0.
  • Une fois ces vérifications terminées, vérifiez votre AD DS pour déterminer si un compte d’ordinateur (par défaut) ou un compte d’ouverture de session du service a déjà été créé avec SPN/UPN comme « cifs/votre-nom-de-compte-de-stockage-ici.file.core.windows.net ». Si le compte n’existe pas, créez-en un comme décrit dans la section suivante.

Important

Les applets de commande PowerShell Windows Server Active Directory de cette section doivent être exécutées dans Windows PowerShell 5.1. PowerShell 7.x et Azure Cloud Shell ne fonctionneront pas dans ce scénario.

Créer manuellement une identité représentant le compte de stockage dans votre AD

Pour créer ce compte manuellement, créez d’abord une clé Kerberos pour votre compte de stockage et obtenez la clé d’accès à l’aide des cmdlets PowerShell ci-dessous. Cette clé est utilisée uniquement lors de l’installation. Vous ne pouvez pas l’utiliser pour des opérations de contrôle ou de données sur le compte de stockage.

# Create the Kerberos key on the storage account and get the Kerb1 key as the password for the AD identity 
# to represent the storage account
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"

New-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -KeyName kerb1
Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -ListKerbKey | where-object{$_.Keyname -contains "kerb1"}

Les applets de commande doivent retourner la valeur de clé. Une fois que vous avez la clé kerb1, créez un compte de service ou un compte d’ordinateur dans AD sous votre unité d’organisation et utilisez la clé comme mot de passe pour l’identité AD.

  1. Définissez le SPN sur cifs/your-storage-account-name-here.file.core.windows.net soit dans l'interface graphique AD, soit en exécutant la commande Setspn à partir de la ligne de commande Windows en tant qu'administrateur (n'oubliez pas de remplacer l'exemple de texte par votre stockage nom de compte et <ADAccountName> avec votre nom de compte AD).

    Setspn -S cifs/your-storage-account-name-here.file.core.windows.net <ADAccountName>
    
  2. Si vous avez un compte d'utilisateur, modifiez l'UPN pour qu'il corresponde au SPN de l'objet AD (vous devez avoir installé les cmdlets AD PowerShell et exécuter les cmdlets dans PowerShell 5.1 avec des privilèges élevés).

    Set-ADUser -Identity $UserSamAccountName -UserPrincipalName cifs/<StorageAccountName>.file.core.windows.net@<DNSRoot>
    
  3. Définissez le mot de passe du compte AD sur la valeur de la clé kerb1.

    Set-ADAccountPassword -Identity servername$ -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "kerb1_key_value_here" -Force)
    

Si votre UO applique l’expiration du mot de passe, vous devez mettre à jour le mot de passe avant la durée de vie maximale du mot de passe pour éviter les échecs d’authentification lors de l’accès aux partages de fichiers Azure. Pour plus d’informations, consultez Mettre à jour le mot de passe de l’identité de votre compte de stockage dans AD.

Conservez l’ID de sécurité de l’identité nouvellement créée, car vous en aurez besoin pour l’étape suivante. L’identité que vous avez créée et qui représente le compte de stockage n’a pas besoin d’être synchronisée avec Microsoft Entra ID.

Activer la fonctionnalité sur votre compte de stockage

Modifiez la commande suivante pour inclure des détails de configuration pour les propriétés du domaine dans la commande suivante, puis exécutez-la pour activer la fonctionnalité. L’ID de sécurité du compte de stockage requis dans la commande suivante est l’ID de sécurité de l’identité que vous avez créée dans AD DS dans la section précédente. Veillez à fournir la propriété ActiveDirectorySamAccountName sans le signe « $ ».

# Set the feature flag on the target storage account and provide the required AD domain information
Set-AzStorageAccount `
        -ResourceGroupName "<your-resource-group-name>" `
        -Name "<your-storage-account-name>" `
        -EnableActiveDirectoryDomainServicesForFile $true `
        -ActiveDirectoryDomainName "<your-domain-dns-root>" `
        -ActiveDirectoryNetBiosDomainName "<your-domain-dns-root>" `
        -ActiveDirectoryForestName "<your-forest-name>" `
        -ActiveDirectoryDomainGuid "<your-guid>" `
        -ActiveDirectoryDomainsid "<your-domain-sid>" `
        -ActiveDirectoryAzureStorageSid "<your-storage-account-sid>" `
        -ActiveDirectorySamAccountName "<your-domain-object-sam-account-name>" `
        -ActiveDirectoryAccountType "<your-domain-object-account-type, the value could be 'Computer' or 'User'>"

Pour activer le chiffrement AES-256, suivez les étapes de cette section. Si vous comptez utiliser le chiffrement RC4, vous pouvez ignorer cette section.

Important

Pour activer le chiffrement AES-256, l’objet de domaine qui représente votre compte de stockage doit être un compte d’ordinateur (par défaut) ou un compte d’ouverture de session du service dans le domaine AD local. Si votre objet de domaine ne répond pas à ces exigences, supprimez-le et créez-en un autre qui y répond. En outre, vous devez disposer d’un accès en écriture à msDS-SupportedEncryptionTypesl’attribut de l’objet.

L’applet de commande que vous allez exécuter pour configurer la prise en charge d’AES-256 varie selon que l’objet de domaine qui représente votre compte de stockage est un compte d’ordinateur ou un compte d’ouverture de session du service (compte d’utilisateur). Dans tous les cas, les applets de commande PowerShell AD doivent être installées et vous devez exécuter l’applet de commande dans PowerShell 5.1 avec des privilèges élevés.

Pour activer le chiffrement AES-256 sur un compte d’ordinateur, exécutez la commande suivante. Remplacez <domain-object-identity> et <domain-name> par vos valeurs.

Set-ADComputer -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"

Pour activer le chiffrement AES-256 sur un compte d’ouverture de session du service, exécutez la commande suivante. Remplacez <domain-object-identity> et <domain-name> par vos valeurs.

Set-ADUser -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"

Après avoir exécuté l’applet de commande ci-dessus, remplacez <domain-object-identity> dans le script suivant par votre valeur, puis exécutez le script pour actualiser le mot de passe de votre objet de domaine :

$KeyName = "kerb1" # Could be either the first or second kerberos key, this script assumes we're refreshing the first
$KerbKeys = New-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -KeyName $KeyName
$KerbKey = $KerbKeys.keys | Where-Object {$_.KeyName -eq $KeyName} | Select-Object -ExpandProperty Value
$NewPassword = ConvertTo-SecureString -String $KerbKey -AsPlainText -Force

Set-ADAccountPassword -Identity <domain-object-identity> -Reset -NewPassword $NewPassword

Important

Si vous avez précédemment utilisé le chiffrement RC4 et mettez à jour le compte de stockage pour utiliser AES-256, vous devez exécuter klist purge sur le client, puis remonter le partage de fichiers pour obtenir de nouveaux tickets Kerberos avec AES-256.

Débogage

Si besoin, vous pouvez exécuter la cmdlet Debug-AzStorageAccountAuth pour effectuer un ensemble de vérifications de base sur votre configuration AD avec l’utilisateur AD connecté. Cette applet de commande est prise en charge sur AzFilesHybrid 0.1.2 et versions ultérieures. Ce cmdlet s’applique uniquement à l’authentification AD DS. Il ne fonctionne pas pour les comptes de stockage Microsoft Entra Domain Services ou Microsoft Entra Kerberos activés. Pour plus d’informations sur les vérifications effectuées dans cette applet de commande, consultez la section Impossible de monter des partages de fichiers Azure avec les informations d’identification AD.

Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose

Confirmer que la fonctionnalité est activée

Vous pouvez vérifier si Active Directory est activée sur votre compte de stockage avec le script suivant :

# Get the target storage account
$storageaccount = Get-AzStorageAccount `
        -ResourceGroupName "<your-resource-group-name-here>" `
        -Name "<your-storage-account-name-here>"

# List the directory service of the selected service account
$storageAccount.AzureFilesIdentityBasedAuth.DirectoryServiceOptions

# List the directory domain information if the storage account has enabled AD DS authentication for file shares
$storageAccount.AzureFilesIdentityBasedAuth.ActiveDirectoryProperties

En cas de réussite, la sortie doit ressembler à ceci :

DomainName:<yourDomainHere>
NetBiosDomainName:<yourNetBiosDomainNameHere>
ForestName:<yourForestNameHere>
DomainGuid:<yourGUIDHere>
DomainSid:<yourSIDHere>
AzureStorageID:<yourStorageSIDHere>

Étapes suivantes

Vous avez maintenant activé AD DS sur votre compte de stockage. Pour utiliser la fonctionnalité, vous devez assigner des autorisations au niveau du partage.