Implementowanie synchronizacji skrótów haseł za pomocą usługi synchronizacji programu Azure AD Connect

Ten artykuł zawiera informacje potrzebne do zsynchronizowania haseł użytkowników z wystąpienia lokalna usługa Active Directory z wystąpieniem usługi Azure Active Directory (Azure AD) w chmurze.

Jak działa synchronizacja skrótów haseł

Usługa domenowa Active Directory przechowuje hasła w postaci reprezentacji wartości skrótu rzeczywistego hasła użytkownika. Wartość skrótu jest wynikiem jednokierunkowej funkcji matematycznej ( algorytmu tworzenia skrótów). Nie ma możliwości przywrócenia wyniku tej jednokierunkowej funkcji z powrotem do hasła w postaci zwykłego tekstu.

Aby zsynchronizować hasło, synchronizacja programu Azure AD Connect wyodrębnia skrót hasła z wystąpienia lokalna usługa Active Directory. Dodatkowe przetwarzanie zabezpieczeń jest stosowane do skrótu hasła przed synchronizacją z usługą uwierzytelniania azure Active Directory. Hasła są synchronizowane na podstawie poszczególnych użytkowników i w kolejności chronologicznej.

Rzeczywisty przepływ danych procesu synchronizacji skrótów haseł jest podobny do synchronizacji danych użytkownika. Jednak hasła są synchronizowane częściej niż standardowe okno synchronizacji katalogów dla innych atrybutów. Proces synchronizacji skrótów haseł jest uruchamiany co 2 minuty. Nie można zmodyfikować częstotliwości tego procesu. Podczas synchronizowania hasła zastępuje ono istniejące hasło w chmurze.

Przy pierwszym włączeniu funkcji synchronizacji skrótów haseł wykonuje początkową synchronizację haseł wszystkich użytkowników w zakresie. Nie można jawnie zdefiniować podzestawu haseł użytkowników, które chcesz zsynchronizować. Jeśli jednak istnieje wiele łączników, można wyłączyć synchronizację skrótów haseł dla niektórych łączników, ale nie innych przy użyciu polecenia cmdlet Set-ADSyncAADPasswordSyncConfiguration .

Po zmianie hasła lokalnego zaktualizowane hasło jest synchronizowane najczęściej w ciągu kilku minut. Funkcja synchronizacji skrótów haseł automatycznie ponawia próby synchronizacji zakończyły się niepowodzeniem. Jeśli podczas próby zsynchronizowania hasła wystąpi błąd, w podglądzie zdarzeń zostanie zarejestrowany błąd.

Synchronizacja hasła nie ma wpływu na użytkownika, który jest obecnie zalogowany. Bieżąca sesja usługi w chmurze nie ma natychmiastowego wpływu na zsynchronizowaną zmianę hasła, która występuje podczas logowania do usługi w chmurze. Jeśli jednak usługa w chmurze wymaga ponownego uwierzytelnienia, musisz podać nowe hasło.

Użytkownik musi po raz drugi wprowadzić poświadczenia firmowe, aby uwierzytelnić się w Azure AD, niezależnie od tego, czy zalogował się do sieci firmowej. Ten wzorzec można jednak zminimalizować, jeśli użytkownik wybierze pole wyboru Nie wylogowuj mnie (KMSI) podczas logowania. Ten wybór ustawia plik cookie sesji, który pomija uwierzytelnianie przez 180 dni. Zachowanie kmSI można włączyć lub wyłączyć przez administratora Azure AD. Ponadto można zmniejszyć liczbę monitów o podanie hasła, włączając bezproblemowe logowanie jednokrotne, które automatycznie loguje użytkowników, gdy znajdują się na ich urządzeniach firmowych połączonych z siecią firmową.

Uwaga

Synchronizacja haseł jest obsługiwana tylko dla użytkownika typu obiektu w usłudze Active Directory. Typ obiektu iNetOrgPerson nie jest obsługiwany.

Szczegółowy opis działania synchronizacji skrótów haseł

W poniższej sekcji opisano szczegółowo, jak działa synchronizacja skrótów haseł między usługą Active Directory i Azure AD.

Szczegółowy przepływ haseł

  1. Co dwie minuty agent synchronizacji skrótów haseł na serwerze programu AD Connect żąda zapisanych skrótów haseł (atrybutu UnicodePwd) z kontrolera domeny. To żądanie odbywa się za pośrednictwem standardowego protokołu replikacji MS-DRSR używanego do synchronizowania danych między kontrolerami domeny. Aby uzyskać skróty haseł, konto usługi musi mieć opcję Replikuj zmiany katalogu i Replikuj zmiany katalogu wszystkie uprawnienia usługi AD (domyślnie przyznane podczas instalacji).
  2. Przed wysłaniem kontroler domeny szyfruje skrót hasła MD4 przy użyciu klucza, który jest skrótem MD5 klucza sesji RPC i soli. Następnie wysyła wynik do agenta synchronizacji skrótów haseł za pośrednictwem RPC. Kontroler domeny przekazuje również sól do agenta synchronizacji przy użyciu protokołu replikacji kontrolera domeny, więc agent będzie mógł odszyfrować kopertę.
  3. Gdy agent synchronizacji skrótów haseł ma zaszyfrowaną kopertę, używa elementu MD5CryptoServiceProvider i soli do wygenerowania klucza w celu odszyfrowania odebranych danych z powrotem do oryginalnego formatu MD4. Agent synchronizacji skrótów haseł nigdy nie ma dostępu do hasła w postaci zwykłego tekstu. Użycie agenta synchronizacji skrótów haseł MD5 jest ściśle zgodne z protokołem replikacji z kontrolerem domeny i jest używane tylko lokalnie między kontrolerem domeny a agentem synchronizacji skrótów haseł.
  4. Agent synchronizacji skrótów haseł rozszerza skrót 16-bajtowy skrót hasła binarnego na 64 bajty, konwertując skrót na ciąg szesnastkowy 32-bajtowy, a następnie konwertuje ten ciąg z powrotem na binarny z kodowaniem UTF-16.
  5. Agent synchronizacji skrótów haseł dodaje na użytkownika sól składającą się z soli o długości 10 bajtów do pliku binarnego 64-bajtowego w celu dalszej ochrony oryginalnego skrótu.
  6. Agent synchronizacji skrótów haseł łączy skrót MD4 oraz sól na użytkownika i wprowadza go do funkcji PBKDF2 . Używane są 1000 iteracji algorytmu wyznaczania wartości skrótu klucza HMAC-SHA256 . Aby uzyskać dodatkowe informacje, zapoznaj się z oficjalnym dokumentem Azure AD.
  7. Agent synchronizacji skrótów haseł przyjmuje wynikowy skrót 32-bajtowy, łączy zarówno sól na użytkownika, jak i liczbę iteracji SHA256 (do użycia przez Azure AD), a następnie przesyła ciąg z Azure AD Connect do Azure AD za pośrednictwem protokołu TLS.
  8. Gdy użytkownik próbuje zalogować się do Azure AD i wprowadza swoje hasło, hasło jest uruchamiane przez ten sam proces MD4+salt+PBKDF2+HMAC-SHA256. Jeśli wynikowy skrót jest zgodny z wartością skrótu przechowywaną w Azure AD, użytkownik wprowadził poprawne hasło i jest uwierzytelniony.

Uwaga

Oryginalny skrót MD4 nie jest przesyłany do Azure AD. Zamiast tego jest przesyłany skrót SHA256 oryginalnego skrótu MD4. W związku z tym, jeśli skrót przechowywany w Azure AD zostanie uzyskany, nie można go użyć w lokalnym ataku typu pass-the-hash.

Zagadnienia dotyczące bezpieczeństwa

Podczas synchronizowania haseł wersja hasła w postaci zwykłego tekstu hasła nie jest widoczna dla funkcji synchronizacji skrótów haseł, Azure AD ani żadnej ze skojarzonych usług.

Uwierzytelnianie użytkowników odbywa się w Azure AD, a nie względem własnego wystąpienia usługi Active Directory organizacji. Dane hasła SHA256 przechowywane w Azure AD — skrót oryginalnego skrótu MD4 — jest bezpieczniejsze niż to, co jest przechowywane w usłudze Active Directory. Ponadto, ponieważ nie można odszyfrować tego skrótu SHA256, nie można go przywrócić do środowiska usługi Active Directory organizacji i przedstawić jako prawidłowe hasło użytkownika w ataku typu pass-the-hash.

Zagadnienia dotyczące zasad haseł

Istnieją dwa typy zasad haseł, których dotyczy włączenie synchronizacji skrótów haseł:

  • Zasady złożoności hasła
  • Zasady wygasania haseł

Zasady złożoności hasła

Po włączeniu synchronizacji skrótów haseł zasady złożoności haseł w wystąpieniu lokalna usługa Active Directory zastępują zasady złożoności w chmurze dla zsynchronizowanych użytkowników. Aby uzyskać dostęp do usług Azure AD, możesz użyć wszystkich prawidłowych haseł z wystąpienia lokalna usługa Active Directory.

Uwaga

Hasła użytkowników utworzonych bezpośrednio w chmurze nadal podlegają zasadom haseł zdefiniowanym w chmurze.

Zasady wygasania haseł

Jeśli użytkownik znajduje się w zakresie synchronizacji skrótów haseł, domyślnie hasło konta w chmurze ma wartość Nigdy nie wygasaj.

Możesz nadal logować się do usług w chmurze przy użyciu zsynchronizowanego hasła, które wygasło w środowisku lokalnym. Hasło do chmury zostanie zaktualizowane przy następnej zmianie hasła w środowisku lokalnym.

EnforceCloudPasswordPolicyForPasswordSyncedUsers

Jeśli istnieją zsynchronizowani użytkownicy, którzy korzystają tylko z Azure AD zintegrowanych usług, a także muszą być zgodni z zasadami wygasania haseł, możesz wymusić ich zgodność z zasadami wygasania haseł Azure AD, włączając funkcję EnforceCloudPasswordPolicyForPasswordSyncedUsers.

Gdy właściwość EnforceCloudPasswordPolicyForPasswordSyncedUsers jest wyłączona (czyli ustawienie domyślne), Azure AD Connect ustawia atrybut PasswordPolicies zsynchronizowanych użytkowników na wartość "DisablePasswordExpiration". Odbywa się to za każdym razem, gdy hasło użytkownika jest synchronizowane i nakazuje Azure AD ignorowanie zasad wygasania haseł w chmurze dla tego użytkownika. Wartość atrybutu można sprawdzić przy użyciu modułu Azure AD PowerShell za pomocą następującego polecenia:

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

Aby włączyć funkcję EnforceCloudPasswordPolicyForPasswordSyncedUsers, uruchom następujące polecenie przy użyciu modułu MSOnline programu PowerShell, jak pokazano poniżej. Musisz wpisać tak dla parametru Enable, jak pokazano poniżej:

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 włączeniu Azure AD nie przechodzi do każdego zsynchronizowanego użytkownika w celu usunięcia DisablePasswordExpiration wartości z atrybutu PasswordPolicies. DisablePasswordExpiration Zamiast tego wartość jest usuwana z zasad PasswordPolicies podczas następnej synchronizacji skrótów haseł dla każdego użytkownika po kolejnej zmianie hasła w lokalnej usłudze AD.

Po włączeniu funkcji EnforceCloudPasswordPolicyForPasswordSyncedUsers nowi użytkownicy są aprowizowani bez wartości PasswordPolicies.

Zaleca się włączenie funkcji EnforceCloudPasswordPolicyForPasswordSyncedUsers przed włączeniem synchronizacji skrótów haseł, aby początkowa synchronizacja skrótów haseł nie dodawała DisablePasswordExpiration wartości do atrybutu PasswordPolicies dla użytkowników.

Domyślne zasady Azure AD hasła wymagają, aby użytkownicy zmieniali swoje hasła co 90 dni. Jeśli zasady w usłudze AD są również 90 dni, te dwie zasady powinny być zgodne. Jeśli jednak zasady usługi AD nie mają 90 dni, możesz zaktualizować zasady haseł Azure AD tak, aby odpowiadały za pomocą polecenia programu Set-MsolPasswordPolicy PowerShell.

Azure AD obsługuje oddzielne zasady wygasania haseł dla zarejestrowanej domeny.

Zastrzeżenie: jeśli w Azure AD istnieją zsynchronizowane konta, które muszą mieć hasła nie wygasające, musisz jawnie dodać DisablePasswordExpiration wartość do atrybutu PasswordPolicies obiektu użytkownika w Azure AD. Możesz to zrobić, uruchamiając następujące polecenie.

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

Uwaga

W przypadku użytkowników hybrydowych, którzy mają ustawioną DisablePasswordExpirationwartość PasswordPolicies na wartość , ta wartość przełącza się na None po wykonaniu lokalnej zmiany hasła.

Uwaga

Polecenie Set-MsolPasswordPolicy programu PowerShell nie będzie działać w domenach federacyjnych.

Synchronizowanie haseł tymczasowych i "Wymuś zmianę hasła przy następnym logowaniu"

Zazwyczaj wymusić na użytkowniku zmianę hasła podczas pierwszego logowania, zwłaszcza po zakończeniu resetowania hasła administratora. Jest on powszechnie znany jako ustawienie "tymczasowego" hasła i jest wykonywany przez sprawdzenie flagi "Użytkownik musi zmienić hasło przy następnym logowaniu" w obiekcie użytkownika w usłudze Active Directory (AD).

Funkcja tymczasowego hasła pomaga zapewnić, że przeniesienie własności poświadczeń zostało ukończone przy pierwszym użyciu, aby zminimalizować czas trwania, w którym więcej niż jedna osoba ma wiedzę o tym poświadczeniu.

Aby obsługiwać tymczasowe hasła w Azure AD dla zsynchronizowanych użytkowników, możesz włączyć funkcję ForcePasswordChangeOnLogOn, uruchamiając następujące polecenie na serwerze Azure AD Connect:

Set-ADSyncAADCompanyFeature -ForcePasswordChangeOnLogOn $true

Uwaga

Wymuszenie zmiany hasła przez użytkownika podczas następnego logowania wymaga jednocześnie zmiany hasła. Azure AD Connect nie będzie pobierać flagi wymuszania zmiany hasła. Jest to uzupełnienie wykrytej zmiany hasła, która występuje podczas synchronizacji skrótów haseł.

Jeśli użytkownik ma opcję "Hasło nigdy nie wygaśnie" w usłudze Active Directory (AD), wymuś flagę zmiany hasła nie zostanie ustawiona w usłudze Active Directory (AD), więc użytkownik nie będzie monitowany o zmianę hasła podczas następnego logowania.

Przestroga

Ta funkcja powinna być używana tylko wtedy, gdy funkcja zapisywania zwrotnego haseł i samoobsługowego resetowania haseł jest włączona w dzierżawie. Jest tak, że jeśli użytkownik zmieni swoje hasło za pośrednictwem samoobsługowego resetowania hasła, zostanie zsynchronizowany z usługą Active Directory.

Wygaśnięcie konta

Jeśli organizacja używa atrybutu accountExpires w ramach zarządzania kontami użytkowników, ten atrybut nie jest synchronizowany z Azure AD. W związku z tym wygasłe konto usługi Active Directory w środowisku skonfigurowanym do synchronizacji skrótów haseł będzie nadal aktywne w Azure AD. Zalecamy użycie zaplanowanego skryptu programu PowerShell, który wyłącza konta usługi AD użytkowników po wygaśnięciu (użyj polecenia cmdlet Set-ADUser ). Z drugiej strony podczas usuwania wygaśnięcia z konta usługi AD konto powinno zostać ponownie włączone.

Zastępowanie zsynchronizowanych haseł

Administrator może ręcznie zresetować hasło przy użyciu Windows PowerShell.

W takim przypadku nowe hasło zastępuje zsynchronizowane hasło, a wszystkie zasady haseł zdefiniowane w chmurze są stosowane do nowego hasła.

Jeśli ponownie zmienisz hasło lokalne, nowe hasło zostanie zsynchronizowane z chmurą i zastąpi ręcznie zaktualizowane hasło.

Synchronizacja hasła nie ma wpływu na zalogowanego użytkownika platformy Azure. Bieżąca sesja usługi w chmurze nie ma natychmiastowego wpływu na zsynchronizowaną zmianę hasła, która występuje podczas logowania się do usługi w chmurze. KmSI rozszerza czas trwania tej różnicy. Gdy usługa w chmurze wymaga ponownego uwierzytelnienia, musisz podać nowe hasło.

Dodatkowe korzyści

  • Ogólnie rzecz biorąc, synchronizacja skrótów haseł jest prostsza do zaimplementowania niż usługa federacyjna. Nie wymaga żadnych dodatkowych serwerów i eliminuje zależność od usługi federacyjnej o wysokiej dostępności do uwierzytelniania użytkowników.
  • Synchronizacja skrótów haseł może być również włączona oprócz federacji. Może być używana jako rezerwa, jeśli usługa federacyjna wystąpi awaria.

Proces synchronizacji skrótów haseł dla usług Azure AD Domain Services

Jeśli używasz usług Azure AD Domain Services do zapewnienia starszego uwierzytelniania dla aplikacji i usług, które muszą używać protokołu Kerberos, LDAP lub NTLM, niektóre dodatkowe procesy są częścią przepływu synchronizacji skrótów haseł. program Azure AD Connect używa dodatkowego procesu do synchronizowania skrótów haseł w celu Azure AD do użycia w usługach Azure AD Domain Services:

Ważne

Azure AD Connect należy zainstalować i skonfigurować tylko do synchronizacji z lokalnymi środowiskami usług AD DS. Nie jest obsługiwane instalowanie programu Azure AD Connect w domenie zarządzanej Azure AD DS w celu synchronizowania obiektów z powrotem do Azure AD.

Azure AD Connect synchronizuje tylko starsze skróty haseł po włączeniu usług Azure AD DS dla dzierżawy Azure AD. Poniższe kroki nie są używane tylko w przypadku używania programu Azure AD Connect do synchronizowania lokalnego środowiska usług AD DS z Azure AD.

Jeśli starsze aplikacje nie używają uwierzytelniania NTLM ani prostych powiązań LDAP, zalecamy wyłączenie synchronizacji skrótów haseł NTLM dla Azure AD DS. Aby uzyskać więcej informacji, zobacz Wyłączanie słabych pakietów szyfrowania i synchronizacji skrótów poświadczeń NTLM.

  1. Azure AD Connect pobiera klucz publiczny dla wystąpienia dzierżawy usług Azure AD Domain Services.
  2. Gdy użytkownik zmieni hasło, lokalny kontroler domeny przechowuje wynik zmiany hasła (skróty) w dwóch atrybutach:
    • unicodePwd dla skrótu hasła NTLM.
    • supplementalCredentials dla skrótu hasła Kerberos.
  3. Azure AD Connect wykrywa zmiany haseł za pośrednictwem kanału replikacji katalogu (zmiany atrybutów, które muszą być replikowane do innych kontrolerów domeny).
  4. Dla każdego użytkownika, którego hasło zostało zmienione, Azure AD Connect wykonuje następujące kroki:
    • Generuje losowy klucz symetryczny AES 256-bitowy.
    • Generuje losowy wektor inicjowania wymagany do pierwszej rundy szyfrowania.
    • Wyodrębnia skróty haseł Kerberos z atrybutów uzupełniającegoCredentials .
    • Sprawdza ustawienie synchronizacji zabezpieczeń usług Azure AD Domain Services SyncNtlmPasswords.
      • Jeśli to ustawienie jest wyłączone, generuje losowy skrót NTLM o wysokiej entropii (różni się od hasła użytkownika). Ten skrót jest następnie łączony z dokładnymi skrótami haseł Kerberos z atrybutu supplementalCrendetials w jedną strukturę danych.
      • Jeśli to ustawienie jest włączone, łączy wartość atrybutu unicodePwd z wyodrębnionym skrótami haseł Kerberos z atrybutu supplementalCredentials w jedną strukturę danych.
    • Szyfruje jedną strukturę danych przy użyciu klucza symetrycznego AES.
    • Szyfruje klucz symetryczny AES przy użyciu klucza publicznego usług domenowych Azure AD dzierżawy.
  5. Azure AD Connect przesyła zaszyfrowany klucz symetryczny AES, zaszyfrowaną strukturę danych zawierającą skróty haseł i wektor inicjowania do Azure AD.
  6. Azure AD przechowuje zaszyfrowany klucz symetryczny AES, zaszyfrowaną strukturę danych i wektor inicjowania użytkownika.
  7. Azure AD wypycha zaszyfrowany klucz symetryczny AES, zaszyfrowaną strukturę danych i wektor inicjowania przy użyciu wewnętrznego mechanizmu synchronizacji za pośrednictwem zaszyfrowanej sesji HTTP w celu Azure AD usług domenowych.
  8. Azure AD Domain Services pobiera klucz prywatny dla wystąpienia dzierżawy z usługi Azure Key Vault.
  9. Dla każdego zaszyfrowanego zestawu danych (reprezentującego zmianę hasła pojedynczego użytkownika) Azure AD Usług domenowych wykonuje następujące kroki:
    • Używa klucza prywatnego do odszyfrowywania klucza symetrycznego AES.
    • Używa klucza symetrycznego AES z wektorem inicjowania, aby odszyfrować zaszyfrowaną strukturę danych zawierającą skróty haseł.
    • Zapisuje skróty haseł protokołu Kerberos odbierane do kontrolera domeny usług domenowych Azure AD. Skróty są zapisywane w atrybucie uzupełniającegoCredentials obiektu użytkownika, który jest szyfrowany w kluczu publicznym kontrolera domeny usług Azure AD Domain Services.
    • Azure AD Domain Services zapisuje skrót hasła NTLM odebrany na kontrolerze domeny usług Azure AD Domain Services. Skrót jest zapisywany w atrybucie unicodePwd obiektu użytkownika, który jest szyfrowany w kluczu publicznym kontrolera domeny usługi Azure AD Domain Services.

Włączanie synchronizacji skrótów haseł

Ważne

Jeśli migrujesz z usług AD FS (lub innych technologii federacyjnych) do synchronizacji skrótów haseł, zdecydowanie zalecamy przestrzeganie naszego szczegółowego przewodnika wdrażania opublikowanego tutaj.

Po zainstalowaniu programu Azure AD Connect przy użyciu opcji Ustawienia ekspresowej synchronizacja skrótów haseł jest automatycznie włączona. Aby uzyskać więcej informacji, zobacz Wprowadzenie do Azure AD Connect przy użyciu ustawień ekspresowych.

Jeśli podczas instalowania programu Azure AD Connect używasz ustawień niestandardowych, synchronizacja skrótów haseł jest dostępna na stronie logowania użytkownika. Aby uzyskać więcej informacji, zobacz Niestandardowa instalacja programu Azure AD Connect.

Włączanie synchronizacji skrótów haseł

Synchronizacja skrótów haseł i fiPS

Jeśli serwer został zablokowany zgodnie z Federal Information Processing Standard (FIPS), rozwiązanie MD5 jest wyłączone.

Aby włączyć synchronizację skrótów haseł MD5, wykonaj następujące kroki:

  1. Przejdź do folderu %programfiles%\Microsoft Azure AD Sync\Bin.
  2. Otwórz miiserver.exe.config.
  3. Przejdź do węzła konfiguracji/środowiska uruchomieniowego na końcu pliku.
  4. Dodaj następujący węzeł: <enforceFIPSPolicy enabled="false"/>
  5. Zapisz zmiany.
  6. Uruchom ponownie, aby zmiany zaczęły obowiązywać.

W tym fragmencie kodu powinien wyglądać następująco:

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

Aby uzyskać informacje na temat zabezpieczeń i fiPS, zobacz Azure AD synchronizacji skrótów haseł, szyfrowania i zgodności ze standardem FIPS.

Rozwiązywanie problemów z synchronizacją skrótów haseł

Jeśli masz problemy z synchronizacją skrótów haseł, zobacz Rozwiązywanie problemów z synchronizacją skrótów haseł.

Następne kroki