Première partie : activer l’authentification AD DS pour vos partages de fichiers Azure

Cet article décrit le processus à suivre pour activer l’authentification AD DS (Active Directory Domain Services) sur votre compte de stockage. Après avoir activé la fonctionnalité, vous devez configurer votre compte de stockage et votre AD DS afin d’utiliser les informations d’identification AD DS pour vous authentifier auprès de votre partage 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.

Pour activer l’authentification AD DS sur SMB pour les partages de fichiers Azure, vous devez inscrire votre compte de stockage à AD DS, puis définir les propriétés de domaine requises sur le compte de stockage. Pour inscrire votre compte de stockage auprès d’AD DS, créez un compte qui le représente dans votre AD DS. Vous pouvez vous représenter 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

Les applets de commande du module PowerShell AzFilesHybrid effectuent 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. Nous vous recommandons d’utiliser le module AzFilesHybrid, mais si ce n’est pas possible, nous vous indiquons les étapes à effectuer manuellement.

Télécharger le module AzFilesHybrid

  • Si .NET Framework 4.7.2 n’est pas installé, installez-le maintenant. Il est requis pour que le module s’importe correctement.
  • Téléchargez et décompressez le module AzFilesHybrid (module GA : v0.2.0+) Notez que le chiffrement Kerberos 256 AES est pris en charge sur la v0.2.2 et les versions ultérieures. Si vous avez activé la fonctionnalité avec une version de AzFilesHybrid inférieure à la v0.2.2 et souhaitez la mettre à jour pour prendre en charge le chiffrement Kerberos 256 AES, consultez cet article.
  • Installez et exécutez le module dans un appareil dont le domaine est joint à AD DS en local avec des informations d’identification AD DS et qui dispose des autorisations nécessaires pour créer un compte d’ouverture de session du service ou un compte d’ordinateur dans l’instance AD cible.
  • Exécutez le script à l’aide des informations d’identification AD DS en local synchronisées à votre Azure AD. Les informations d’identification AD DS locales doivent disposer du rôle Azure Propriétaire ou Contributeur sur le compte de stockage.

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 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 d’ouverture de session de service. Si vous choisissez d’exécuter la commande manuellement, vous devez sélectionner le compte le mieux adapté à votre environnement.

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.

Remplacer les valeurs des espaces réservés par les vôtres dans les paramètres ci-dessous avant d’exécuter le script dans PowerShell.

Important

La cmdlet de jonction de domaine 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. Pour les comptes d’ordinateur, la durée de vie du mot de passe par défaut est définie à 30 jours dans AD. De même, le compte de connexion au service peut avoir une durée de vie de mot de passe par défaut définie sur le domaine AD ou l’unité d’organisation (UO). Pour les deux types de comptes, nous vous recommandons de vérifier le délai d’expiration du mot de passe défini dans votre environnement AD et 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 créer une unité d’organisation (UO) AD dans AD et désactiver en conséquence la stratégie d’expiration de mot de passe pour les comptes d’ordinateur ou les comptes de connexion au service.

# 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 with an Azure AD 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://docs.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 an AD object, see https://docs.microsoft.com/en-us/windows/win32/adschema/a-samaccountname
# for more information.
# If you want to use AES256 encryption (recommended), except for the trailing '$', the storage account name must be the same as the computer object's SamAccountName.
$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>"
# Specify the encryption algorithm used for Kerberos authentication. Using AES256 is recommended.
$EncryptionType = "<AES256|RC4|AES256,RC4>"

# 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 to 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), depends on the AD permission you have 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 `
        -EncryptionType $EncryptionType

#Run the command below to enable AES256 encryption. If you plan to use RC4, you can skip this step.
Update-AzStorageAccountAuthForAES256 -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName

#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

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

Vérifier l’environnement

Vous devez d’abord vérifier l’état de votre environnement. En particulier, vous devez vérifier 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. Vérifiez ensuite si le module Az.Storage 2.0 (ou version plus récente) est installé, et installez-le si ce n’est pas le cas. 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.

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

Pour créer ce compte manuellement, créez une clé Kerberos pour votre compte de stockage. Ensuite, utilisez cette clé Kerberos comme mot de passe pour votre compte avec les applets de commande PowerShell ci-dessous. Cette clé est utilisée uniquement lors de la configuration et ne peut pas être utilisée pour des opérations de contrôle ou de plan 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"}

Une fois que vous avez cette clé, créez un compte de service ou d’ordinateur sous votre UO. Utilisez la spécification suivante (n’oubliez pas de remplacer l’exemple de texte par le nom de votre compte de stockage) :

SPN : « cifs/votre-nom-de-compte-de-stockage-ici.file.core.windows.net » Mot de passe : Clé Kerberos pour votre compte de stockage.

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 Azure AD.

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.

# Set the feature flag on the target storage account and provide the required AD domain information
Set-AzStorageAccount `
        -ResourceGroupName "<your-resource-group-name-here>" `
        -Name "<your-storage-account-name-here>" `
        -EnableActiveDirectoryDomainServicesForFile $true `
        -ActiveDirectoryDomainName "<your-domain-dns-root-here>" `
        -ActiveDirectoryNetBiosDomainName "<your-domain-dns-root-here>" `
        -ActiveDirectoryForestName "<your-forest-name-here>" `
        -ActiveDirectoryDomainGuid "<your-guid-here>" `
        -ActiveDirectoryDomainsid "<your-domain-sid-here>" `
        -ActiveDirectoryAzureStorageSid "<your-storage-account-sid>"

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

L’objet de domaine qui représente votre compte de stockage doit remplir les conditions suivantes :

  • L’objet de domaine doit être créé en tant qu’objet ordinateur dans le domaine AD local.
  • À l’exception du caractère « $ » final, le nom du compte de stockage doit être le même que le SamAccountName de l’objet de l’ordinateur.

Si votre objet de domaine ne répond pas à ces exigences, supprimez-le et créez un nouvel objet de domaine.

Remplacez <domain-object-identity> et <domain-name> par vos valeurs, puis exécutez la cmdlet suivante pour configurer la prise en charge d’AES-256 :

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

Après avoir exécuté cette cmdlet, 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

Débogage

Vous pouvez exécuter l’applet de commande 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. Pour plus d’informations sur les vérifications effectuées dans cette applet de commande, consultez Impossible de monter Azure Files avec les informations d’identification AD dans le guide de résolution des problèmes pour Windows.

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

Confirmer que la fonctionnalité est activée

Vous pouvez vérifier si la fonctionnalité 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é la fonctionnalité sur votre compte de stockage. Pour utiliser la fonctionnalité, vous devez assigner des autorisations au niveau du partage. Passez à la section suivante.

Deuxième partie : affecter des autorisations au niveau du partage à une identité