Implementace synchronizace hodnot hash hesel pomocí synchronizace Azure AD Connect

Tento článek obsahuje informace, které potřebujete k synchronizaci uživatelských hesel z instance místní Active Directory do cloudové instance Azure Active Directory (Azure AD).

Jak funguje synchronizace hodnot hash hesel

Doménová služba Active Directory ukládá hesla ve formě vyjádření hodnoty hash skutečného hesla uživatele. Hodnota hash je výsledkem jednosměrné matematické funkce ( hashovací algoritmus). Neexistuje žádný způsob, jak výsledek jednosměrné funkce převést zpět na heslo v prostém textu.

Pokud chcete synchronizovat heslo, Azure AD Connect sync extrahuje hodnotu hash hesla z instance místní Active Directory. Před synchronizací s ověřovací službou Azure Active Directory se u hodnoty hash hesla použije další bezpečnostní zpracování. Hesla se synchronizují pro jednotlivé uživatele a v chronologickém pořadí.

Skutečný tok dat procesu synchronizace hodnot hash hesel je podobný synchronizaci uživatelských dat. Hesla se ale synchronizují častěji než standardní synchronizační okno adresářů pro ostatní atributy. Proces synchronizace hodnot hash hesel se spouští každé 2 minuty. Četnost tohoto procesu nelze změnit. Když synchronizujete heslo, přepíše stávající cloudové heslo.

Při prvním povolení funkce synchronizace hodnot hash hesel provede počáteční synchronizaci hesel všech uživatelů v oboru. Nemůžete explicitně definovat podmnožinu uživatelských hesel, která chcete synchronizovat. Pokud však existuje více konektorů, je možné zakázat synchronizaci hodnot hash hesel pro některé konektory, ale ne pro jiné pomocí rutiny Set-ADSyncAADPasswordSyncConfiguration .

Když změníte místní heslo, aktualizované heslo se synchronizuje, nejčastěji během několika minut. Funkce synchronizace hodnot hash hesel automaticky opakuje neúspěšné pokusy o synchronizaci. Pokud při pokusu o synchronizaci hesla dojde k chybě, do prohlížeče událostí se zaprotokoluje chyba.

Synchronizace hesla nemá žádný vliv na aktuálně přihlášeného uživatele. Vaše aktuální relace cloudové služby není okamžitě ovlivněna synchronizovanou změnou hesla, ke které dojde, když jste přihlášeni ke cloudové službě. Pokud ale cloudová služba vyžaduje, abyste se znovu ověřili, musíte zadat nové heslo.

Uživatel musí zadat své podnikové přihlašovací údaje podruhé, aby se ověřil v Azure AD, bez ohledu na to, jestli je přihlášený ke své podnikové síti. Tento model se ale dá minimalizovat, pokud uživatel při přihlášení zaškrtne políčko Zůstat přihlášeni (KMSI). Tento výběr nastaví soubor cookie relace, který obchází ověřování po dobu 180 dnů. Chování Služby správy klíčů může povolit nebo zakázat správce Azure AD. Kromě toho můžete snížit počet výzev k zadání hesla tím, že zapnete bezproblémové jednotné přihlašování, které automaticky přihlásí uživatele, když jsou na svých podnikových zařízeních připojených k vaší podnikové síti.

Poznámka

Synchronizace hesel je podporována pouze pro uživatele typu objekt ve službě Active Directory. Typ objektu iNetOrgPerson není podporován.

Podrobný popis fungování synchronizace hodnot hash hesel

Následující část podrobně popisuje, jak funguje synchronizace hodnot hash hesel mezi službou Active Directory a Azure AD.

Podrobný postup hesla

  1. Každé dvě minuty agent synchronizace hodnot hash hesel na serveru AD Connect požaduje uložené hodnoty hash hesel (atribut unicodePwd) z řadiče domény. Tento požadavek se provádí prostřednictvím standardního replikačního protokolu MS-DRSR , který se používá k synchronizaci dat mezi řadiči domény. Aby účet služby získal hodnoty hash hesel, musí mít oprávnění Replikovat změny adresáře a Replikovat změny adresáře pro všechny služby AD (udělená ve výchozím nastavení při instalaci).
  2. Před odesláním řadič domény zašifruje hodnotu hash hesla MD4 pomocí klíče, který je hodnotou hash MD5 klíče relace RPC a solí. Poté odešle výsledek do agenta synchronizace hodnot hash hesel přes RPC. Řadič domény také předává sůl agentu synchronizace pomocí protokolu replikace řadiče domény, takže agent bude moct obálku dešifrovat.
  3. Jakmile má agent synchronizace hodnot hash hesel zašifrovanou obálku, použije MD5CryptoServiceProvider a sůl k vygenerování klíče pro dešifrování přijatých dat zpět do původního formátu MD4. Agent synchronizace hodnot hash hesel nikdy nemá přístup k nešifrovacímu heslu. Agent synchronizace hodnot hash hesel používá MD5 výhradně kvůli kompatibilitě protokolu replikace s řadičem domény a používá se pouze místně mezi řadičem domény a agentem synchronizace hodnot hash hesel.
  4. Agent synchronizace hodnot hash hesel rozšiřuje hodnotu hash 16 bajtů binárního hesla na 64 bajtů tím, že nejprve převede hodnotu hash na šestnáctkový řetězec o délce 32 bajtů a pak převede tento řetězec zpět na binární s kódováním UTF-16.
  5. Agent synchronizace hodnot hash hesel přidá do 64 bajtového binárního souboru pro lepší ochranu původní hodnoty hash 10 bajtů solí na uživatele.
  6. Agent synchronizace hodnot hash hesel pak zkombinuje hodnotu hash MD4 a sůl podle uživatele a zadává ji do funkce PBKDF2 . Používá se 1000 iterací algoritmu hash s klíčem HMAC-SHA256 . Další podrobnosti najdete v Azure AD dokumentu white paper.
  7. Agent synchronizace hodnot hash hesel vezme výslednou hodnotu hash 32 bajtů, zřetězí solu pro jednotlivé uživatele i počet iterací SHA256 (pro použití Azure AD) a pak přenese řetězec z Azure AD Connect do Azure AD přes protokol TLS.
  8. Když se uživatel pokusí přihlásit k Azure AD a zadá heslo, heslo se spustí stejným procesem MD4+salt+PBKDF2+HMAC-SHA256. Pokud výsledná hodnota hash odpovídá hodnotě hash uložené v Azure AD, uživatel zadal správné heslo a je ověřený.

Poznámka

Původní hodnota hash MD4 se nepřenese do Azure AD. Místo toho se přenese hodnota hash SHA256 původní hodnoty hash MD4. Výsledkem je, že pokud se hodnota hash uložená v Azure AD získá, nedá se použít v místním útoku pass-the-hash.

Důležité informace o zabezpečení

Při synchronizaci hesel není verze vašeho hesla ve formátu prostého textu zpřístupněna funkci synchronizace hodnot hash hesel, Azure AD ani žádné z přidružených služeb.

Ověřování uživatelů se provádí s Azure AD, nikoli s vlastní instancí služby Active Directory organizace. Data hesla SHA256 uložená v Azure AD (hodnota hash původní hodnoty hash MD4) jsou bezpečnější než data uložená ve službě Active Directory. Vzhledem k tomu, že tuto hodnotu hash SHA256 nelze dešifrovat, nelze ji přenést zpět do prostředí Active Directory organizace a prezentovat ji jako platné uživatelské heslo při útoku pass-the-hash.

Důležité informace o zásadách hesel

Povolení synchronizace hodnot hash hesel ovlivňuje dva typy zásad hesel:

  • Zásady složitosti hesel
  • Zásady vypršení platnosti hesla

Zásady složitosti hesel

Pokud je povolená synchronizace hodnot hash hesel, zásady složitosti hesel ve vaší instanci místní Active Directory přepíší zásady složitosti v cloudu pro synchronizované uživatele. Pro přístup ke službám Azure AD můžete použít všechna platná hesla z vaší instance místní Active Directory.

Poznámka

Hesla pro uživatele, kteří jsou vytvořena přímo v cloudu, stále podléhají zásadám hesel definovaným v cloudu.

Zásady vypršení platnosti hesla

Pokud je uživatel v rozsahu synchronizace hodnot hash hesel, je ve výchozím nastavení heslo cloudového účtu nastavené na Nikdy nevyprší platnost.

Ke cloudovým službám se můžete dál přihlašovat pomocí synchronizovaného hesla, jehož platnost vypršela ve vašem místním prostředí. Cloudové heslo se aktualizuje při příští změně hesla v místním prostředí.

EnforceCloudPasswordPolicyForPasswordSyncedUsers

Pokud existují synchronizovaní uživatelé, kteří pracují pouze s Azure AD integrovanými službami a musí také dodržovat zásady vypršení platnosti hesla, můžete je vynutit, aby dodržovali zásady vypršení platnosti hesla Azure AD povolením funkce EnforceCloudPasswordPolicyForPasswordSyncedUsers.

Když je zakázáno EnforceCloudPasswordPolicyForPasswordSyncedUsers (což je výchozí nastavení), Azure AD Connect nastaví atribut PasswordPolicies synchronizovaných uživatelů na DisablePasswordExpiration. To se provádí při každé synchronizaci hesla uživatele a dává Azure AD pokyn, aby cloudové zásady vypršení platnosti hesla pro tohoto uživatele ignorovali. Hodnotu atributu můžete zkontrolovat pomocí modulu Azure AD PowerShellu pomocí následujícího příkazu:

(Get-AzureADUser -objectID <User Object ID>).passwordpolicies

Funkci EnforceCloudPasswordPolicyForPasswordSyncedUsers povolíte spuštěním následujícího příkazu pomocí modulu MSOnline PowerShellu, jak je znázorněno níže. Jako parametr Enable byste museli zadat yes, jak je znázorněno níže:

Set-MsolDirSyncFeature -Feature EnforceCloudPasswordPolicyForPasswordSyncedUsers
cmdlet Set-MsolDirSyncFeature at command pipeline position 1
Supply values for the following parameters:
Enable: yes
Confirm
Continue with this operation?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y

Po povolení Azure AD nepřejde ke každému synchronizovaným uživatelům a neodebere DisablePasswordExpiration hodnotu z atributu PasswordPolicies. Místo toho se DisablePasswordExpiration hodnota odebere z PasswordPolicies při další synchronizaci hodnot hash hesel pro každého uživatele při jejich další změně hesla v místní službě AD.

Po povolení funkce EnforceCloudPasswordPolicyForPasswordSyncedUsers se noví uživatelé zřídí bez hodnoty PasswordPolicies.

Doporučujeme povolit EnforceCloudPasswordPolicyForPasswordSyncedUsers před povolením synchronizace hodnot hash hesel, aby počáteční synchronizace hodnot hash hesel nepřidá DisablePasswordExpiration hodnotu do atributu PasswordPolicies pro uživatele.

Výchozí zásady Azure AD hesel vyžadují, aby uživatelé měnili hesla každých 90 dní. Pokud vaše zásady ve službě AD mají také 90 dnů, měly by se tyto dvě zásady shodovat. Pokud ale zásada AD není 90 dnů, můžete zásady Azure AD hesel aktualizovat tak, aby odpovídaly, pomocí příkazu Set-MsolPasswordPolicy PowerShellu.

Azure AD podporuje samostatné zásady vypršení platnosti hesla pro každou zaregistrovanou doménu.

Upozornění: Pokud existují synchronizované účty, jejichž platnost nevypršela platnost hesel v Azure AD, musíte explicitně přidat DisablePasswordExpiration hodnotu do atributu PasswordPolicies objektu uživatele v Azure AD. Můžete to provést spuštěním následujícího příkazu.

Set-AzureADUser -ObjectID <User Object ID> -PasswordPolicies "DisablePasswordExpiration"

Poznámka

U hybridních uživatelů, kteří mají hodnotu PasswordPolicies nastavenou na DisablePasswordExpiration, se tato hodnota přepne na None po provedení změny hesla v místním prostředí.

Poznámka

Příkaz Set-MsolPasswordPolicy PowerShellu nebude ve federovaných doménách fungovat.

Poznámka

Příkaz Set-AzureADUser PowerShellu nebude ve federovaných doménách fungovat.

Synchronizace dočasných hesel a vynucení změny hesla při dalším přihlášení

Obvykle je nutné, aby uživatel změnil heslo při prvním přihlášení, zejména když dojde k resetování hesla správce. Běžně se označuje jako nastavení "dočasného" hesla a dokončí se zaškrtnutím příznaku Uživatel musí změnit heslo při příštím přihlášení u objektu uživatele ve službě Active Directory (AD).

Funkce dočasného hesla pomáhá zajistit, aby se převod vlastnictví přihlašovacích údajů dokončil při prvním použití, aby se minimalizovala doba, po kterou má o těchto přihlašovacích údajích znalost více osob.

Pokud chcete podporovat dočasná hesla v Azure AD pro synchronizované uživatele, můžete povolit funkci ForcePasswordChangeOnLogOn spuštěním následujícího příkazu na serveru Azure AD Connect:

Set-ADSyncAADCompanyFeature -ForcePasswordChangeOnLogOn $true

Poznámka

Vynucení změny hesla uživatele při příštím přihlášení vyžaduje změnu hesla současně. Azure AD Connect samo o sobě nezachytí příznak vynucené změny hesla. Je to doplněk ke zjištěné změně hesla, ke které dochází během synchronizace hodnot hash hesel.

Pokud má uživatel ve službě Active Directory (AD) nastavenou možnost Heslo nikdy nevyprší, příznak vynucené změny hesla se ve službě Active Directory (AD) nenastaví, takže se uživateli při dalším přihlášení nezobrazí výzva ke změně hesla.

Upozornění

Tuto funkci byste měli používat jenom v případě, že jsou v tenantovi povolené SSPR a zpětný zápis hesla. Pokud si uživatel změní heslo prostřednictvím SSPR, synchronizuje se se službou Active Directory.

Vypršení platnosti účtu

Pokud vaše organizace používá atribut accountExpires jako součást správy uživatelských účtů, tento atribut se nesynchronizuje s Azure AD. V důsledku toho bude účet Služby Active Directory s vypršenou platností v prostředí nakonfigurované pro synchronizaci hodnot hash hesel stále aktivní v Azure AD. Doporučujeme použít naplánovaný skript PowerShellu, který po vypršení jejich platnosti zakáže účty AD uživatelů (použijte rutinu Set-ADUser ). Naopak během procesu odebrání vypršení platnosti z účtu AD by se měl účet znovu povolit.

Přepsání synchronizovaných hesel

Správce může heslo resetovat ručně pomocí Windows PowerShell.

V takovém případě nové heslo přepíše vaše synchronizované heslo a na nové heslo se použijí všechny zásady hesel definované v cloudu.

Pokud místní heslo znovu změníte, nové heslo se synchronizuje do cloudu a přepíše ručně aktualizované heslo.

Synchronizace hesla nemá žádný vliv na přihlášeného uživatele Azure. Vaše aktuální relace cloudové služby není okamžitě ovlivněna synchronizovanou změnou hesla, ke které dojde, když jste přihlášeni ke cloudové službě. KmSI prodlouží dobu trvání tohoto rozdílu. Když cloudová služba vyžaduje, abyste se znovu ověřili, musíte zadat nové heslo.

Další výhody

  • Obecně platí, že implementace synchronizace hodnot hash hesel je jednodušší než u služby FEDERATION Service. Nevyžaduje žádné další servery a eliminuje závislost na vysoce dostupné federační službě pro ověřování uživatelů.
  • Kromě federace je také možné povolit synchronizaci hodnot hash hesel. Může se použít jako záložní řešení, pokud dojde k výpadku vaší služby FEDERATION Service.

Proces synchronizace hodnot hash hesel pro Azure AD Domain Services

Pokud používáte službu Azure AD Domain Services k poskytování starší verze ověřování pro aplikace a služby, které potřebují používat protokoly Kerberos, LDAP nebo NTLM, jsou součástí toku synchronizace hodnot hash hesel některé další procesy. Azure AD Connect pomocí následujícího procesu synchronizuje hodnoty hash hesel do Azure AD pro použití ve službě Azure AD Domain Services:

Důležité

Azure AD Connect by měl být nainstalovaný a nakonfigurovaný jenom pro synchronizaci s místními prostředími AD DS. Instalace nástroje Azure AD Connect ve spravované doméně Azure AD DS není podporovaná, aby bylo možné synchronizovat objekty zpět do Azure AD.

Azure AD Connect synchronizuje hodnoty hash starších hesel jenom v případě, že pro tenanta Azure AD povolíte Azure AD DS. Následující kroky se nepoužívají, pokud používáte Azure AD Connect jenom k synchronizaci místního prostředí SLUŽBY AD DS s Azure AD.

Pokud vaše starší aplikace nepoužívají ověřování NTLM nebo jednoduché vazby LDAP, doporučujeme zakázat synchronizaci hodnot hash hesel NTLM pro Azure AD DS. Další informace najdete v tématech Zákaz slabých šifrovacích sad a synchronizace hodnot hash přihlašovacích údajů PROTOKOLU NTLM.

  1. Azure AD Connect načte veřejný klíč pro instanci tenanta služby Azure AD Domain Services.
  2. Když uživatel změní heslo, místní řadič domény uloží výsledek změny hesla (hodnoty hash) do dvou atributů:
    • unicodePwd pro hodnotu hash hesla NTLM.
    • supplementalCredentials pro hodnotu hash hesla protokolu Kerberos.
  3. Azure AD Connect zjistí změny hesel prostřednictvím kanálu replikace adresáře (změny atributů, které je potřeba replikovat do jiných řadičů domény).
  4. Pro každého uživatele, jehož heslo se změnilo, provede Azure AD Connect následující kroky:
    • Vygeneruje náhodný 256bitový symetrický klíč AES.
    • Vygeneruje vektor náhodné inicializace potřebný pro první kolo šifrování.
    • Extrahuje hodnoty hash hesel protokolu Kerberos z atributů supplementalCredentials .
    • Zkontroluje nastavení konfigurace zabezpečení služby Azure AD Domain Services SyncNtlmPasswords.
      • Pokud je toto nastavení zakázané, vygeneruje náhodnou hodnotu hash NTLM s vysokou entropií (odlišnou od hesla uživatele). Tato hodnota hash se pak zkombinuje s přesnými hodnotami hash hesel Protokolu Kerberos z atributu supplementalCrendetials do jedné datové struktury.
      • Pokud je povoleno, kombinuje hodnotu atributu unicodePwd s extrahovanými hodnotami hash hesel Protokolu Kerberos z atributu supplementalCredentials do jedné datové struktury.
    • Zašifruje jednu datovou strukturu pomocí symetrického klíče AES.
    • Zašifruje symetrický klíč AES pomocí veřejného klíče služby Domain Services Azure AD tenanta.
  5. Azure AD Connect přenáší šifrovaný symetrický klíč AES, zašifrovanou datovou strukturu obsahující hodnoty hash hesel a inicializační vektor do Azure AD.
  6. Azure AD ukládá šifrovaný symetrický klíč AES, šifrovanou datovou strukturu a inicializační vektor pro uživatele.
  7. Azure AD odešle šifrovaný symetrický klíč AES, šifrovanou datovou strukturu a vektor inicializace pomocí mechanismu interní synchronizace přes šifrovanou relaci HTTP do Azure AD Domain Services.
  8. Azure AD Domain Services načte privátní klíč instance tenanta ze služby Azure Key Vault.
  9. Pro každou zašifrovanou sadu dat (představující změnu hesla jednoho uživatele) pak Azure AD Domain Services provede následující kroky:
    • Používá svůj privátní klíč k dešifrování symetrického klíče AES.
    • Používá symetrický klíč AES s inicializačním vektorem k dešifrování šifrované datové struktury, která obsahuje hodnoty hash hesel.
    • Zapíše hodnoty hash hesel Protokolu Kerberos, které přijímá, do řadiče domény Azure AD Domain Services. Hodnoty hash jsou uloženy do atributu supplementalCredentials objektu uživatele, který je šifrovaný na veřejný klíč řadiče domény Azure AD Domain Services.
    • Azure AD Domain Services zapíše hodnotu hash hesla PROTOKOLU NTLM, kterou přijala, na řadič domény Azure AD Domain Services. Hodnota hash se uloží do atributu unicodePwd objektu uživatele, který je šifrovaný na veřejný klíč řadiče domény Azure AD Domain Services.

Povolení synchronizace hodnoty hash hesel

Důležité

Pokud migrujete ze služby AD FS (nebo jiných federačních technologií) na synchronizaci hodnot hash hesel, důrazně doporučujeme postupovat podle podrobného průvodce nasazením, který je tady uvedený.

Při instalaci Azure AD Connect pomocí možnosti Expresní nastavení se automaticky povolí synchronizace hodnot hash hesel. Další informace najdete v tématu Začínáme s Azure AD Připojení pomocí expresního nastavení.

Pokud při instalaci Azure AD Connect použijete vlastní nastavení, synchronizace hodnot hash hesel je k dispozici na přihlašovací stránce uživatele. Další informace najdete v tématu Vlastní instalace nástroje Azure AD Connect.

Povolení synchronizace hodnot hash hesel

Synchronizace hodnot hash hesel a FIPS

Pokud je váš server uzamčený podle standardu FIPS (Federal Information Processing Standard), je md5 zakázané.

Pokud chcete povolit md5 pro synchronizaci hodnot hash hesel, proveďte následující kroky:

  1. Přejděte na %programfiles%\Microsoft Azure AD Sync\Bin.
  2. Otevřete miiserver.exe.config.
  3. Na konci souboru přejděte do uzlu konfigurace nebo modulu runtime.
  4. Přidejte následující uzel: <enforceFIPSPolicy enabled="false"/>
  5. Uložte provedené změny.
  6. Změny se projeví restartováním.

Pro referenci by měl tento fragment kódu vypadat takto:

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

Informace o zabezpečení a standardu FIPS najdete v tématu Azure AD synchronizace hodnot hash hesel, šifrování a dodržování předpisů FIPS.

Řešení potíží se synchronizací hodnot hash hesel

Pokud máte problémy se synchronizací hodnot hash hesel, přečtěte si téma Řešení potíží se synchronizací hodnot hash hesel.

Další kroky