Implementare la sincronizzazione dell'hash delle password con il servizio di sincronizzazione Azure AD ConnectImplement password hash synchronization with Azure AD Connect sync

Questo articolo contiene le informazioni necessarie per sincronizzare le password utente da un'istanza di Active Directory locale a un'istanza di Azure Active Directory (Azure AD) basata sul cloud.This article provides information that you need to synchronize your user passwords from an on-premises Active Directory instance to a cloud-based Azure Active Directory (Azure AD) instance.

Funzionamento della sincronizzazione dell'hash delle passwordHow password hash synchronization works

Il servizio di dominio Active Directory archivia le password come rappresentazioni con valore hash delle password utente reali.The Active Directory domain service stores passwords in the form of a hash value representation, of the actual user password. Un valore hash è il risultato di una funzione matematica unidirezionale, chiamata algoritmo di hash.A hash value is a result of a one-way mathematical function (the hashing algorithm). Non esiste un metodo per ripristinare la versione in testo normale di una password dal risultato di una funzione unidirezionale.There is no method to revert the result of a one-way function to the plain text version of a password. Non è possibile usare l'hash della password per accedere alla rete locale.You cannot use a password hash to sign in to your on-premises network.

Per sincronizzare la password, il servizio di sincronizzazione Azure AD Connect estrae l'hash della password dall'istanza di Active Directory locale.To synchronize your password, Azure AD Connect sync extracts your password hash from the on-premises Active Directory instance. All'hash della password viene applicata un'elaborazione di sicurezza aggiuntiva prima della sincronizzazione con il servizio di autenticazione di Azure Active Directory.Extra security processing is applied to the password hash before it is synchronized to the Azure Active Directory authentication service. Le password vengono sincronizzate per ogni singolo utente e in ordine cronologico.Passwords are synchronized on a per-user basis and in chronological order.

Il flusso di dati del processo di sincronizzazione hash delle password è simile alla sincronizzazione dei dati utente.The actual data flow of the password hash synchronization process is similar to the synchronization of user data. Le password vengono tuttavia sincronizzate con una frequenza maggiore rispetto alla finestra di sincronizzazione standard della directory per altri attributi.However, passwords are synchronized more frequently than the standard directory synchronization window for other attributes. Il processo di sincronizzazione dell'hash delle password viene eseguito ogni 2 minuti.The password hash synchronization process runs every 2 minutes. Non è possibile modificare la frequenza del processo.You cannot modify the frequency of this process. Se si sincronizza una password, la password sincronizzata sovrascrive quella esistente nel cloud.When you synchronize a password, it overwrites the existing cloud password.

Quando si abilita la funzionalità di sincronizzazione dell'hash delle password per la prima volta, viene eseguita una sincronizzazione iniziale delle password di tutti gli utenti inclusi nell'ambito.The first time you enable the password hash synchronization feature, it performs an initial synchronization of the passwords of all in-scope users. Non è possibile definire in modo esplicito un subset di password utente da sincronizzare.You cannot explicitly define a subset of user passwords that you want to synchronize.

Quando si modifica una password locale, la password aggiornata viene sincronizzata, spesso in pochi minuti.When you change an on-premises password, the updated password is synchronized, most often in a matter of minutes. In caso di sincronizzazioni non riuscite, la funzionalità di sincronizzazione dell'hash delle password esegue automaticamente nuovi tentativi di sincronizzazione.The password hash synchronization feature automatically retries failed synchronization attempts. Se si verifica un errore durante un tentativo di sincronizzazione di una password, viene registrato un errore nel visualizzatore eventi.If an error occurs during an attempt to synchronize a password, an error is logged in your event viewer.

La sincronizzazione di una password non ha alcun impatto sull'utente attualmente connesso.The synchronization of a password has no impact on the user who is currently signed in. Se si modifica una password sincronizzata dopo aver eseguito l'accesso a un servizio cloud, la sessione corrente del servizio cloud non rileva immediatamente la modifica.Your current cloud service session is not immediately affected by a synchronized password change that occurs, while you are signed in, to a cloud service. Tuttavia, quando il servizio cloud richiede di nuovo l'autenticazione, è necessario specificare la nuova password.However, when the cloud service requires you to authenticate again, you need to provide your new password.

Un utente deve immettere le proprie credenziali aziendali una seconda volta per l'autenticazione in Azure AD, indipendentemente dal fatto che abbia effettuato l'accesso alla rete aziendale.A user must enter their corporate credentials a second time to authenticate to Azure AD, regardless of whether they're signed in to their corporate network. Gli effetti di questo criterio possono essere ridotti al minimo se al momento dell'accesso l'utente seleziona la casella di controllo Mantieni l'accesso.This pattern can be minimized, however, if the user selects the Keep me signed in (KMSI) check box at sign-in. La selezione di questa opzione imposta un cookie di sessione che permette di ignorare l'autenticazione per 180 giorni.This selection sets a session cookie that bypasses authentication for 180 days. Il comportamento dell'opzione Mantieni l'accesso può essere abilitato o disabilitato dall'amministratore di Azure AD.KMSI behavior can be enabled or disabled by the Azure AD administrator. È anche possibile ridurre le richieste di password attivando l'accesso Seamless SSO che consente agli utenti di accedere automaticamente dai dispositivi di proprietà dell'azienda connessi alla rete aziendale.In addition, you can reduce password prompts by turning on Seamless SSO, which automatically signs users in when they are on their corporate devices connected to your corporate network.

Nota

La sincronizzazione delle password è supportata solo per l'utente del tipo di oggetto in Active Directory.Password sync is only supported for the object type user in Active Directory. Non è supportata per il tipo di oggetto iNetOrgPerson.It is not supported for the iNetOrgPerson object type.

Descrizione dettagliata del funzionamento della sincronizzazione dell'hash delle passwordDetailed description of how password hash synchronization works

La sezione seguente illustra in dettaglio il funzionamento della sincronizzazione hash delle password tra Active Directory e Azure AD.The following section describes, in-depth, how password hash synchronization works between Active Directory and Azure AD.

Flusso dettagliato della sincronizzazione password

  1. Ogni due minuti, l'agente di sincronizzazione hash delle password nel server AD Connect richiede gli hash delle password archiviate (attributo unicodePwd) da un controller di dominio.Every two minutes, the password hash synchronization agent on the AD Connect server requests stored password hashes (the unicodePwd attribute) from a DC. La richiesta si avvale del protocollo di replica standard MS-DRSR usato per sincronizzare i dati tra i controller di dominio.This request is via the standard MS-DRSR replication protocol used to synchronize data between DCs. L'account di servizio deve disporre delle autorizzazioni di Azure AD Replica modifiche directory e Replica modifiche directory - Tutto (concesse per impostazione predefinita in fase di installazione) per ottenere gli hash delle password.The service account must have Replicate Directory Changes and Replicate Directory Changes All AD permissions (granted by default on installation) to obtain the password hashes.
  2. Prima dell'invio, il controller di dominio crittografa l'hash della password MD4 tramite una chiave corrispondente a un hash MD5 della chiave di sessione RPC e a un valore salt.Before sending, the DC encrypts the MD4 password hash by using a key that is a MD5 hash of the RPC session key and a salt. Invia quindi il risultato dell'agente di sincronizzazione dell'hash delle password tramite RPC.It then sends the result to the password hash synchronization agent over RPC. Il controller di dominio passa inoltre il valore salt all'agente di sincronizzazione usando il protocollo di replica del controller di dominio, in modo che l'agente sia in grado di decrittografare la busta.The DC also passes the salt to the synchronization agent by using the DC replication protocol, so the agent will be able to decrypt the envelope.
  3. Dopo aver ottenuto la busta crittografata, l'agente di sincronizzazione dell'hash delle password usa MD5CryptoServiceProvider e il valore salt per generare una chiave per decrittografare i dati ricevuti riportandoli nel formato MD4 originale.After the password hash synchronization agent has the encrypted envelope, it uses MD5CryptoServiceProvider and the salt to generate a key to decrypt the received data back to its original MD4 format. L'agente di sincronizzazione hash delle password non ha mai accesso alla password non crittografata.The password hash synchronization agent never has access to the clear text password. L'uso di MD5 da parte dell'agente di sincronizzazione dell'hash delle password è esclusivamente per la compatibilità del protocollo di replica con il controller di dominio e viene usato solo in locale tra il controller di dominio e l'agente di sincronizzazione dell'hash delle password.The password hash synchronization agent’s use of MD5 is strictly for replication protocol compatibility with the DC, and it is only used on premises between the DC and the password hash synchronization agent.
  4. L'agente di sincronizzazione dell'hash delle password espande l'hash della password binario a 16 byte in 64 byte convertendo per prima cosa l'hash in una stringa esadecimale a 32 byte e quindi riconvertendo questa stessa stringa in formato binario con la codifica UTF-16.The password hash synchronization agent expands the 16-byte binary password hash to 64 bytes by first converting the hash to a 32-byte hexadecimal string, then converting this string back into binary with UTF-16 encoding.
  5. L'agente di sincronizzazione dell'hash delle password aggiunge un valore salt per utente lungo 10 byte al file binario a 64 byte per proteggere ulteriormente l'hash originale.The password hash synchronization agent adds a per user salt, consisting of a 10-byte length salt, to the 64-byte binary to further protect the original hash.
  6. L'agente di sincronizzazione dell'hash delle password combina quindi l'hash MD4 con il valore salt per utente e li inserisce nella funzione PBKDF2.The password hash synchronization agent then combines the MD4 hash plus the per user salt, and inputs it into the PBKDF2 function. Vengono usate 1000 iterazioni dell'algoritmo di hash con chiave HMAC-SHA256.1000 iterations of the HMAC-SHA256 keyed hashing algorithm are used.
  7. L'agente di sincronizzazione dell'hash delle password concatena all'hash a 32 byte risultante sia il valore salt per utente sia il numero di iterazioni SHA256 (per l'uso con Azure AD) e quindi trasmette la stringa da Azure AD Connect ad Azure AD tramite SSL.The password hash synchronization agent takes the resulting 32-byte hash, concatenates both the per user salt and the number of SHA256 iterations to it (for use by Azure AD), then transmits the string from Azure AD Connect to Azure AD over SSL.
  8. Quando un utente prova ad accedere ad Azure AD e immette la password, la password viene eseguita tramite lo stesso processo MD4 + valore salt + PBKDF2 + HMAC-SHA256.When a user attempts to sign in to Azure AD and enters their password, the password is run through the same MD4+salt+PBKDF2+HMAC-SHA256 process. Se l'hash risultante corrisponde all'hash archiviato in Azure AD, l'utente ha immesso la password corretta e viene autenticato.If the resulting hash matches the hash stored in Azure AD, the user has entered the correct password and is authenticated.

Nota

L'hash MD4 originale non viene trasmesso ad Azure AD.The original MD4 hash is not transmitted to Azure AD. Viene invece trasmesso l'hash SHA256 dell'hash MD4 originale.Instead, the SHA256 hash of the original MD4 hash is transmitted. Di conseguenza, se si riesce a ottenere l'hash archiviato in Azure AD, questo non può essere usato in un attacco di tipo Pass-the-Hash locale.As a result, if the hash stored in Azure AD is obtained, it cannot be used in an on-premises pass-the-hash attack.

Funzionamento della sincronizzazione dell'hash delle password con Azure Active Directory Domain ServicesHow password hash synchronization works with Azure Active Directory Domain Services

È possibile usare la funzionalità di sincronizzazione dell'hash delle password anche per sincronizzare le password locali con Azure Active Directory Domain Services.You can also use the password hash synchronization feature to synchronize your on-premises passwords to Azure Active Directory Domain Services. In questo scenario l'istanza di Azure Active Directory Domain Services autentica gli utenti nel cloud con tutti i metodi disponibili nell'istanza di Active Directory locale.In this scenario, the Azure Active Directory Domain Services instance authenticates your users in the cloud with all the methods available in your on-premises Active Directory instance. L'esperienza di questo scenario è simile all'uso dell'Utilità di migrazione ad Active Directory (ADMT) in un ambiente locale.The experience of this scenario is similar to using the Active Directory Migration Tool (ADMT) in an on-premises environment.

Considerazioni relative alla sicurezzaSecurity considerations

Quando si sincronizzano le password, la versione in testo normale della password non viene esposta alla funzionalità di sincronizzazione dell'hash delle password, né ad Azure AD o a qualsiasi servizio associato.When synchronizing passwords, the plain-text version of your password is not exposed to the password hash synchronization feature, to Azure AD, or any of the associated services.

L'autenticazione utente viene eseguita in Azure AD e non nell'istanza di Active Directory dell'organizzazione.User authentication takes place against Azure AD rather than against the organization's own Active Directory instance. I dati delle password SHA256 archiviati in Azure AD (un hash dell'hash MD4 originale) sono più sicuri di quelli archiviati in Active Directory.The SHA256 password data stored in Azure AD--a hash of the original MD4 hash--is more secure than what is stored in Active Directory. Inoltre, dal momento che questo hash SHA256 non può essere decrittografato, non potrà essere ripresentato nell'ambiente Active Directory dell'organizzazione come una password utente valida in un attacco di tipo Pass-the-Hash.Further, because this SHA256 hash cannot be decrypted, it cannot be brought back to the organization's Active Directory environment and presented as a valid user password in a pass-the-hash attack.

Considerazioni relative ai criteri passwordPassword policy considerations

L'abilitazione della sincronizzazione dell'hash delle password influisce su due tipi di criteri password:There are two types of password policies that are affected by enabling password hash synchronization:

  • Criteri di complessità delle passwordPassword complexity policy
  • Criteri di scadenza delle passwordPassword expiration policy

Criteri di complessità delle passwordPassword complexity policy

Quando la sincronizzazione dell'hash delle password è abilitata, i criteri di complessità delle password presenti nell'istanza di Active Directory locale sostituiscono i criteri di complessità definiti nel cloud per gli utenti sincronizzati.When password hash synchronization is enabled, the password complexity policies in your on-premises Active Directory instance override complexity policies in the cloud for synchronized users. È possibile usare tutte le password valide dell'istanza di Active Directory locale per accedere ai servizi Azure AD.You can use all of the valid passwords from your on-premises Active Directory instance to access Azure AD services.

Nota

Le password degli utenti create direttamente nel cloud restano soggette ai criteri password definiti nel cloud.Passwords for users that are created directly in the cloud are still subject to password policies as defined in the cloud.

Criteri di scadenza delle passwordPassword expiration policy

Se un utente è incluso nell'ambito della sincronizzazione dell'hash delle password, la password dell'account cloud viene impostata su Non scade mai.If a user is in the scope of password hash synchronization, the cloud account password is set to Never Expire.

È possibile continuare ad accedere ai servizi cloud usando una password sincronizzata che è in realtà scaduta nell'ambiente locale.You can continue to sign in to your cloud services by using a synchronized password that is expired in your on-premises environment. La password cloud viene aggiornata alla modifica successiva della password nell'ambiente locale.Your cloud password is updated the next time you change the password in the on-premises environment.

Scadenza dell'accountAccount expiration

Se l'organizzazione usa l'attributo accountExpires nella gestione degli account utente, tenere presente che questo attributo non viene sincronizzato con Azure AD.If your organization uses the accountExpires attribute as part of user account management, this attribute is not synchronized to Azure AD. Di conseguenza, un account Active Directory scaduto in un ambiente configurato per la sincronizzazione dell'hash delle password continuerà a essere attivo in Azure AD.As a result, an expired Active Directory account in an environment configured for password hash synchronization will still be active in Azure AD. Se l'account è scaduto, è consigliabile fare in modo che un'azione del flusso di lavoro attivi uno script di PowerShell per disabilitare l'account Azure AD dell'utente (usare il cmdlet Set-AzureADUser).We recommend that if the account is expired, a workflow action should trigger a PowerShell script that disables the user's Azure AD account (use the Set-AzureADUser cmdlet). Al contrario, quando l'account è attivato, è necessario attivare anche l'istanza di Azure AD.Conversely, when the account is turned on, the Azure AD instance should be turned on.

Sovrascrivere password sincronizzateOverwrite synchronized passwords

Un amministratore può reimpostare manualmente la password usando Windows PowerShell.An administrator can manually reset your password by using Windows PowerShell.

In questo caso, la password sincronizzata viene sostituita dalla nuova password, a cui si applicano tutti i criteri password definiti nel cloud.In this case, the new password overrides your synchronized password, and all password policies defined in the cloud are applied to the new password.

Se si modifica di nuovo la password locale, la nuova password viene sincronizzata nel cloud e sostituisce la password aggiornata manualmente.If you change your on-premises password again, the new password is synchronized to the cloud, and it overrides the manually updated password.

La sincronizzazione di una password non ha alcun impatto sull'utente di Azure connesso.The synchronization of a password has no impact on the Azure user who is signed in. Se si modifica una password sincronizzata dopo aver eseguito l'accesso a un servizio cloud, questa operazione non ha un impatto immediato sulla sessione corrente del servizio cloud.Your current cloud service session is not immediately affected by a synchronized password change that occurs while you're signed in to a cloud service. L'opzione Mantieni l'accesso estende la durata in base a questa differenza.KMSI extends the duration of this difference. Quando il servizio cloud richiede di nuovo l'autenticazione, è necessario specificare la nuova password.When the cloud service requires you to authenticate again, you need to provide your new password.

Vantaggi aggiuntiviAdditional advantages

  • In genere, la sincronizzazione dell'hash delle password è più semplice da implementare rispetto a un servizio federativo.Generally, password hash synchronization is simpler to implement than a federation service. Non richiede altri server e permette di eliminare la dipendenza da un servizio federativo a disponibilità elevata per l'autenticazione degli utenti.It doesn't require any additional servers, and eliminates dependence on a highly available federation service to authenticate users.
  • La sincronizzazione dell'hash delle password può anche essere abilitata in aggiunta alla federazione.Password hash synchronization can also be enabled in addition to federation. Può inoltre essere usata come fallback in caso di interruzione del servizio federativo.It may be used as a fallback if your federation service experiences an outage.

Abilitare la sincronizzazione dell'hash delle passwordEnable password hash synchronization

Importante

Se si esegue la migrazione da AD FS (o da altre tecnologia federative) per la sincronizzazione dell'hash delle password, si consiglia vivamente di seguire la guida per la distribuzione dettagliata pubblicata qui.If you are migrating from AD FS (or other federation technologies) to Password Hash Synchronization, we highly recommend that you follow our detailed deployment guide published here.

Quando si installa Azure AD Connect usando l'opzione Impostazioni rapide, la sincronizzazione dell'hash delle password viene abilitata automaticamente.When you install Azure AD Connect by using the Express Settings option, password hash synchronization is automatically enabled. Per altre informazioni, vedere Introduzione alle impostazioni rapide per Azure AD Connect.For more information, see Getting started with Azure AD Connect using express settings.

Se si usano impostazioni personalizzate quando si installa Azure AD Connect, la sincronizzazione dell'hash delle password è disponibile nella pagina di accesso dell'utente.If you use custom settings when you install Azure AD Connect, password hash synchronization is available on the user sign-in page. Per altre informazioni, vedere Installazione personalizzata di Azure AD Connect.For more information, see Custom installation of Azure AD Connect.

Abilitazione della sincronizzazione dell'hash delle password

Sincronizzazione dell'hash delle password e FIPSPassword hash synchronization and FIPS

Se il server è stato bloccato in conformità allo standard FIPS (Federal Information Processing Standard), MD5 è disabilitato.If your server has been locked down according to Federal Information Processing Standard (FIPS), then MD5 is disabled.

Per abilitare MD5 per la sincronizzazione dell'hash delle password, seguire questa procedura:To enable MD5 for password hash synchronization, perform the following steps:

  1. Passare a %programmi%\Azure AD Sync\Bin.Go to %programfiles%\Azure AD Sync\Bin.
  2. Aprire miiserver.exe.config.Open miiserver.exe.config.
  3. Passare al nodo configuration/runtime alla fine del file.Go to the configuration/runtime node at the end of the file.
  4. Aggiungere il nodo seguente: <enforceFIPSPolicy enabled="false"/>Add the following node: <enforceFIPSPolicy enabled="false"/>
  5. Salvare le modifiche.Save your changes.

Come riferimento, il frammento di codice dovrà essere simile al seguente:For reference, this snippet is what it should look like:

    <configuration>
        <runtime>
            <enforceFIPSPolicy enabled="false"/>
        </runtime>
    </configuration>

Per informazioni sulla sicurezza e su FIPS, vedere Azure AD password hash sync, encryption, and FIPS compliance (Sincronizzazione password, crittografia e conformità FIPS di Azure AD).For information about security and FIPS, see Azure AD password hash sync, encryption, and FIPS compliance.

Risolvere i problemi di sincronizzazione dell'hash delle passwordTroubleshoot password hash synchronization

In caso di problemi di sincronizzazione dell'hash delle password, vedere Risolvere i problemi di sincronizzazione dell'hash delle password.If you have problems with password hash synchronization, see Troubleshoot password hash synchronization.

Passaggi successiviNext steps