Abilitare l'autenticazione di Active Directory Domain Services per le condivisioni file di Azure

Questo articolo descrive il processo di abilitazione dell'autenticazione Dominio di Active Directory Services (AD DS) nell'account di archiviazione per usare le credenziali di Active Directory locale (AD) per l'autenticazione nelle condivisioni file di Azure.

Importante

Prima di abilitare l'autenticazione di Active Directory Domain Services, assicurarsi di comprendere gli scenari e i requisiti supportati nell'articolo di panoramica e completare i prerequisiti necessari. Se l'ambiente Active Directory si estende su più foreste, vedere Usare File di Azure con più foreste di Active Directory.

Per abilitare l'autenticazione di Active Directory Domain Services tramite SMB per le condivisioni file di Azure, è necessario registrare l'account di archiviazione di Azure con Active Directory Domain Services locale e quindi impostare le proprietà di dominio necessarie nell'account di archiviazione. Per registrare l'account di archiviazione con Active Directory Domain Services, creare un account computer (o un account di accesso al servizio) che lo rappresenti in Active Directory Domain Services. Si pensi a questo processo come se fosse come creare un account che rappresenta un file server Windows locale in Active Directory Domain Services. Quando la funzionalità è abilitata nell'account di archiviazione, si applica a tutte le condivisioni file nuove ed esistenti nell'account.

Si applica a

Tipo di condivisione file SMB NFS
Condivisioni file Standard (GPv2), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Yes No
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona Yes No
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Yes No

Il modulo AzFilesHybrid di PowerShell fornisce i cmdlet per la distribuzione e la configurazione di File di Azure. Include i cmdlet per l'aggiunta di account di archiviazione ai Active Directory locale e la configurazione dei server DNS. I cmdlet apportano le modifiche necessarie e abilitano la funzionalità. Poiché alcune parti dei cmdlet interagiscono con Active Directory Domain Services locale, vengono illustrate le operazioni eseguite dai cmdlet, in modo da determinare se le modifiche sono allineate ai criteri di conformità e di sicurezza e assicurarsi di disporre delle autorizzazioni appropriate per eseguire i cmdlet. Anche se è consigliabile usare il modulo AzFilesHybrid, se non è possibile farlo, vengono forniti passaggi manuali.

Importante

La crittografia Kerberos AES-256 è ora l'unico metodo di crittografia supportato dal modulo AzFilesHybrid. Se si preferisce usare la crittografia RC4, vedere Opzione due: Eseguire manualmente le azioni di abilitazione. Se in precedenza è stata abilitata la funzionalità con una versione precedente di AzFilesHybrid (sotto la versione 0.2.2) che usaVA RC4 come metodo di crittografia predefinito e si vuole aggiornare per supportare AES-256, vedere Risolvere i problemi File di Azure'autenticazione SMB.

Prerequisiti

Scaricare il modulo AzFilesHybrid

Scaricare e decomprimere la versione più recente del modulo AzFilesHybrid.

Eseguire Join-Az Archiviazione Account

Il Join-AzStorageAccount cmdlet esegue l'equivalente di un aggiunta a un dominio offline per conto dell'account di archiviazione specificato. Lo script seguente usa questo cmdlet per creare un account computer nel dominio di ACTIVE Directory. Se per qualsiasi motivo non è possibile usare un account computer, è possibile modificare lo script per creare invece un account di accesso al servizio. L'uso della crittografia AES-256 con account di accesso al servizio è supportato a partire da AzFilesHybrid versione 0.2.5.

L'account di Active Directory Domain Services creato dal cmdlet rappresenta l'account di archiviazione. Se l'account di Active Directory Domain Services viene creato in un'unità organizzativa (OU) che impone la scadenza della password, è necessario aggiornare la password prima della validità massima della password. Se non si aggiorna la password dell'account prima di tale data, si verificano errori di autenticazione durante l'accesso alle condivisioni file di Azure. Per informazioni su come aggiornare la password, vedere Aggiornare la password dell'account di Active Directory Domain Services.

Importante

Il Join-AzStorageAccount cmdlet creerà un account AD per rappresentare l'account di archiviazione (condivisione file) in AD. È possibile scegliere di registrarsi come account computer o account di accesso al servizio. Per informazioni dettagliate, vedere Domande frequenti . Le password dell'account di accesso al servizio possono scadere in AD se hanno un'età di scadenza della password predefinita impostata nel dominio o nell'unità organizzativa di Active Directory. Poiché le modifiche alle password dell'account computer sono guidate dal computer client e non da Active Directory, non scadono in Active Directory, anche se i computer client modificano le password per impostazione predefinita ogni 30 giorni. Per entrambi i tipi di account, è consigliabile controllare l'età di scadenza della password configurata e pianificare l'aggiornamento della password dell'identità dell'account di archiviazione dell'account di Active Directory prima della validità massima della password. È possibile prendere in considerazione la creazione di una nuova unità organizzativa di Active Directory in Active Directory e la disabilitazione dei criteri di scadenza delle password negli account computer o negli account di accesso al servizio di conseguenza.

È necessario eseguire lo script seguente in PowerShell 5.1 in un dispositivo aggiunto all'istanza locale di Active Directory Domain Services usando le credenziali di Active Directory Domain Services locali che dispongono delle autorizzazioni per creare un account computer o un account di accesso al servizio nell'istanza di Active Directory di destinazione, ad esempio domain admin. Per seguire il principio dei privilegi minimi, le credenziali di Active Directory Domain Services locali devono avere i ruoli di Azure seguenti:

  • Lettore nel gruppo di risorse in cui si trova l'account di archiviazione di destinazione.
  • Collaboratore dell'account di archiviazione da aggiungere ad Active Directory Domain Services.

Se l'account usato per aggiungere l'account di archiviazione in Servizi di dominio Active Directory è proprietario o collaboratore nella sottoscrizione di Azure in cui si trovano le risorse di destinazione, tale account è già abilitato per eseguire l'aggiunta e non sono necessarie altre assegnazioni.

Le credenziali di Active Directory Domain Services devono avere anche le autorizzazioni per creare un account computer o un account di accesso al servizio nell'entità di dominio Active Directory di destinazione. Sostituire i valori segnaposto con i propri prima di eseguire lo 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

Opzione due: eseguire manualmente le azioni di abilitazione

La maggior parte dei clienti deve scegliere Opzione uno precedente e usare il modulo AzFilesHybrid PowerShell per abilitare l'autenticazione di Active Directory Domain Services con File di Azure. Tuttavia, se si preferisce eseguire manualmente i passaggi usando PowerShell di Active Directory, i passaggi sono descritti qui.

Importante

Se lo script precedente è già stato eseguito Join-AzStorageAccount correttamente, passare direttamente alla sezione Conferma che la funzionalità è abilitata . Non è necessario eseguire i passaggi manuali seguenti.

Controllare l'ambiente

Prima di tutto, controllare lo stato dell'ambiente.

  • Controllare se è installato Active Directory PowerShell e se la shell viene eseguita con privilegi di amministratore.
  • Assicurarsi che il modulo Az.Archiviazione sia installato e installarlo in caso contrario. Sarà necessaria almeno la versione 2.0.
  • Dopo aver completato questi controlli, verificare se è presente un account computer (impostazione predefinita) o un account di accesso al servizio già creato con SPN/UPN, ad esempio "cifs/your-storage-account-name-here.file.core.windows.net". Se l'account non esiste, crearne uno come descritto nella sezione seguente.

Importante

I cmdlet di PowerShell di Windows Server Active Directory in questa sezione devono essere eseguiti in Windows PowerShell 5.1. PowerShell 7.x e Azure Cloud Shell non funzioneranno in questo scenario.

Creare un'identità che rappresenta l'account di archiviazione in Active Directory manualmente

Per creare manualmente questo account, creare prima di tutto una nuova chiave Kerberos per l'account di archiviazione e ottenere la chiave di accesso usando i cmdlet di PowerShell seguenti. Questa chiave viene usata solo durante l'installazione. Non può essere usato per le operazioni del controllo o del piano dati sull'account di archiviazione.

# 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"}

I cmdlet devono restituire il valore della chiave. Dopo aver ottenuto la chiave kerb1, creare un account computer o un account del servizio in AD nell'unità organizzativa e usare la chiave come password per l'identità di ACTIVE Directory.

  1. Impostare SPN su cifs/your-storage-account-name-here.file.core.windows.net nell'interfaccia utente grafica di AD o eseguendo il Setspn comando dalla riga di comando di Windows come amministratore (ricordarsi di sostituire il testo di esempio con il nome dell'account di archiviazione e <ADAccountName> con il nome dell'account AD).

    Setspn -S cifs/your-storage-account-name-here.file.core.windows.net <ADAccountName>
    
  2. Se si dispone di un account utente, modificare l'UPN in modo che corrisponda al nome SPN per l'oggetto AD . È necessario che i cmdlet di Ad PowerShell siano installati ed eseguano i cmdlet in PowerShell 5.1 con privilegi elevati.

    Set-ADUser -Identity $UserSamAccountName -UserPrincipalName cifs/<StorageAccountName>.file.core.windows.net@<DNSRoot>
    
  3. Impostare la password dell'account AD sul valore della chiave kerb1.

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

Se l'unità organizzativa applica la scadenza della password, è necessario aggiornare la password prima della validità massima della password per evitare errori di autenticazione durante l'accesso alle condivisioni file di Azure. Per informazioni dettagliate, vedere Aggiornare la password dell'identità dell'account di archiviazione in AD .

Mantenere il SID dell'identità appena creata, sarà necessario per il passaggio successivo. L'identità creata che rappresenta l'account di archiviazione non deve essere sincronizzata con Microsoft Entra ID.

Abilitare la funzionalità nell'account di archiviazione

Modificare il comando seguente per includere i dettagli di configurazione per le proprietà del dominio nel comando seguente, quindi eseguirlo per abilitare la funzionalità. Il SID dell'account di archiviazione necessario nel comando seguente è il SID dell'identità creata in Active Directory Domain Services nella sezione precedente. Assicurarsi di fornire la proprietà ActiveDirectorySamAccountName senza il segno finale '$'.

# 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'>"

Per abilitare la crittografia AES-256, seguire la procedura descritta in questa sezione. Se si prevede di usare la crittografia RC4, ignorare questa sezione.

Importante

Per abilitare la crittografia AES-256, l'oggetto di dominio che rappresenta l'account di archiviazione deve essere un account computer (impostazione predefinita) o un account di accesso al servizio nel dominio AD locale. Se l'oggetto di dominio non soddisfa questo requisito, eliminarlo e crearne uno nuovo. Inoltre, è necessario disporre dell'accesso in scrittura all'attributo msDS-SupportedEncryptionTypes dell'oggetto .

Il cmdlet che verrà eseguito per configurare il supporto di AES-256 dipende dal fatto che l'oggetto di dominio che rappresenta l'account di archiviazione sia un account computer o un account di accesso al servizio (account utente). In entrambi i casi, è necessario avere installato i cmdlet di PowerShell di AD ed eseguire il cmdlet in PowerShell 5.1 con privilegi elevati.

Per abilitare la crittografia AES-256 in un account computer, eseguire il comando seguente. Sostituire <domain-object-identity> e <domain-name> con i propri valori.

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

Per abilitare la crittografia AES-256 in un account di accesso al servizio, eseguire il comando seguente. Sostituire <domain-object-identity> e <domain-name> con i propri valori.

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

Dopo aver eseguito il cmdlet precedente, sostituire <domain-object-identity> nello script seguente con il valore , quindi eseguire lo script per aggiornare la password dell'oggetto di dominio:

$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

Importante

Se in precedenza si usava la crittografia RC4 e si aggiorna l'account di archiviazione per usare AES-256, è necessario eseguire klist purge sul client e quindi rimontare la condivisione file per ottenere nuovi ticket Kerberos con AES-256.

Debug

Se necessario, è possibile eseguire il Debug-AzStorageAccountAuth cmdlet per eseguire un set di controlli di base sulla configurazione di ACTIVE Directory con l'utente connesso ad Ad. Questo cmdlet è supportato in AzFilesHybrid v0.1.2 e versioni successive. Questo cmdlet è applicabile solo per l'autenticazione di Active Directory Domain Services. Non funziona per gli account di archiviazione abilitati per Microsoft Entra Domain Services o Microsoft Entra Kerberos. Per altre informazioni sui controlli eseguiti in questo cmdlet, vedere Impossibile montare condivisioni file di Azure con le credenziali di AD.

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

Verificare che la funzionalità sia abilitata

È possibile verificare se Active Directory è abilitato nell'account di archiviazione con lo script seguente:

# 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

In caso di esito positivo, l'output sarà simile al seguente:

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

Passaggi successivi

È stato abilitato Active Directory Domain Services nell'account di archiviazione. Per usare la funzionalità, è necessario assegnare autorizzazioni a livello di condivisione.