Parte 1: abilitare l'autenticazione di Active Directory Domain Services per le condivisioni file di Azure

Questo articolo descrive il processo di abilitazione dell'autenticazione di Active Directory Domain Services (AD DS) nell'account di archiviazione. Dopo aver abilitato la funzionalità, è necessario configurare l'account di archiviazione e Active Directory Domain Services per usare le credenziali di Active Directory Domain Services per l'autenticazione nella condivisione 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.

Per abilitare l'autenticazione di Active Directory Domain Services tramite SMB per le condivisioni file di Azure, è necessario registrare l'account di archiviazione con Servizi di dominio Active Directory 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 che lo rappresenta in Active Directory Domain Services. Si può pensare 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 Sì No
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona Sì No
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Sì No

I cmdlet nel modulo AzFilesHybrid PowerShell 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 poter determinare se le modifiche sono allineate ai criteri di conformità e 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 i passaggi per consentirne l'esecuzione manuale.

Scaricare il modulo AzFilesHybrid

  • Se .NET Framework 4.7.2 non è installato, installarlo ora. È necessario che il modulo venga importato correttamente.
  • Scaricare e decomprimere il modulo AzFilesHybrid (modulo GA: v0.2.0+) Si noti che la crittografia Kerberos AES 256 è supportata nella versione 0.2.2 o successiva. Se la funzionalità è stata abilitata con una versione AzFilesHybrid seguente v0.2.2 e si vuole eseguire l'aggiornamento per supportare la crittografia Kerberos AES 256, fare riferimento a questo articolo.
  • Installare ed eseguire il modulo in un dispositivo aggiunto a Servizi di dominio Active Directory locale con le credenziali di Active Directory Domain Services che dispongono delle autorizzazioni per creare un account di accesso al servizio o un account computer nell'istanza di Active Directory di destinazione.
  • Eseguire lo script usando una credenziale di Active Directory Domain Services locale sincronizzata con Azure AD. Le credenziali di Active Directory Domain Services locali devono avere il ruolo Proprietario o Collaboratore di Azure nell'account di archiviazione.

Eseguire Join-AzStorageAccount

Il Join-AzStorageAccount cmdlet esegue l'equivalente di un aggiunta a un dominio offline per conto dell'account di archiviazione specificato. Lo script usa il 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 . Se si sceglie di eseguire manualmente il comando, è consigliabile selezionare l'account più adatto per l'ambiente.

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.

Sostituire i valori segnaposto con i propri nei parametri seguenti prima di eseguirlo in PowerShell.

Importante

Il cmdlet di aggiunta al dominio creerà un account AD per rappresentare l'account di archiviazione (condivisione file) in AD. Per informazioni dettagliate , è possibile scegliere di registrarsi come account computer o account di accesso al servizio. Per gli account computer, esiste un'età di scadenza password predefinita impostata in AD a 30 giorni. Analogamente, l'account di accesso al servizio può avere un'età di scadenza password predefinita impostata nel dominio AD o nell'unità organizzativa. Per entrambi i tipi di account, è consigliabile controllare l'età di scadenza della password configurata nell'ambiente AD e pianificare l'aggiornamento della password dell'identità dell'account di archiviazione dell'account ad 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.

# 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 the name of the to-be-created AD object, which is used by AD as the logon name 
# for the object. 
# See https://docs.microsoft.com/en-us/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>"
# Specify the encryption algorithm used for Kerberos authentication. Using AES256 is recommended.
# Note that ServiceLogonAccount does not support AES256 encryption.
$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 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. Note that 
# Service Logon Accounts do not support AES256 encryption.

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.
# Note that if you set $DomainAccountType to ServiceLogonAccount, running this command will change 
# the account type to ComputerAccount because ServiceLogonAccount doesn't support AES256.
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

Opzione due: eseguire manualmente le azioni di abilitazione

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

Controllare l'ambiente

Prima di tutto, è necessario controllare lo stato dell'ambiente. In particolare, è necessario verificare se è installato Active Directory PowerShell e se la shell viene eseguita con privilegi di amministratore. Controllare quindi se il modulo Az.Storage 2.0 (o versione successiva) è installato e installarlo in caso contrario. Dopo aver completato questi controlli, controllare che Servizi di dominio Active Directory sia presente un account computer (impostazione predefinita) o un account di accesso al servizio già creato con SPN/UPN come "cifs/your-storage-account-name-here.file.core.windows.net". Se l'account non esiste, crearne uno come descritto nella sezione seguente.

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

Per creare questo account manualmente, 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 precedenti devono restituire il valore della chiave. Dopo aver ottenuto la chiave kerb1, creare un account del servizio o un account computer in ACTIVE Directory nell'unità organizzativa e usare la chiave come password per l'identità di Active Directory.

  1. Impostare il nome SPN su cifs/your-storage-account-name-here.file.core.windows.net nell'interfaccia utente grafica di Active Directory 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):

    Setspn -S cifs/your-storage-account-name-here.file.core.windows.net
    
  2. Usare PowerShell per impostare la password dell'account AD sul valore della chiave kerb1 (è necessario avere i cmdlet di Ad PowerShell installati):

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

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.

# 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>" `
        -ActiveDirectorySamAccountName "<your-domain-object-sam-account-name>" `
        -ActiveDirectoryAccountType "<you-domain-object-account-type, the value could be 'Computer' or 'User', for AES256 must be 'Computer'>"

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

Importante

L'oggetto dominio che rappresenta l'account di archiviazione deve essere creato come oggetto computer nel dominio AD locale. Se l'oggetto dominio non soddisfa questo requisito, eliminarlo e crearne uno nuovo. Si noti che gli account di accesso al servizio non supportano la crittografia AES256.

Sostituire <domain-object-identity> e <domain-name> con i valori, quindi eseguire il cmdlet seguente per configurare il supporto di AES-256:

Set-ADComputer -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 e 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

Debug

È possibile eseguire il Debug-AzStorageAccountAuth cmdlet per eseguire un set di controlli di base sulla configurazione di ACTIVE Directory con l'utente ad connesso. Questo cmdlet è supportato nella versione AzFilesHybrid v 0.1.2+. Per altre informazioni sui controlli eseguiti in questo cmdlet, vedere Impossibile montare File di Azure con le credenziali di Active Directory nella guida alla risoluzione dei problemi per Windows.

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

Verificare che la funzionalità sia abilitata

È possibile verificare se la funzionalità è abilitata 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

La funzionalità nell'account di archiviazione è stata abilitata. Per usare la funzionalità, è necessario assegnare autorizzazioni a livello di condivisione. Passare alla sezione successiva.

Parte due: assegnare autorizzazioni a livello di condivisione a un'identità