Kiedy zaglądam do sys.sql_logins
środka, widzę kolumnę o nazwie is_policy_checked
. Czy mogę ufać, że moja polityka haseł została sprawdzona dla wszystkich loginów, w których znajduje się ta wartość kolumny 1
?
źródło
Kiedy zaglądam do sys.sql_logins
środka, widzę kolumnę o nazwie is_policy_checked
. Czy mogę ufać, że moja polityka haseł została sprawdzona dla wszystkich loginów, w których znajduje się ta wartość kolumny 1
?
Chociaż dokumentacja zawiera obecnie prawdopodobnie dwuznaczne stwierdzenie na temat znaczenia tej flagi:
Polityka haseł jest sprawdzana.
To, co naprawdę oznacza i powinno powiedzieć, to, że flaga służy dwóm celom:
- Zasady haseł mogły zostać sprawdzone, ale tylko wtedy, gdy (a) zasady haseł były włączone w momencie ostatniego ustawiania hasła, i (b) hasło zostało określone zwykłym tekstem (bez skrótu).
- Zasady haseł zostaną sprawdzone przy następnym ustawieniu zasad, ale tylko wtedy, gdy (a) zasady haseł zostaną włączone w tym czasie i (b) hasło zostanie określone w postaci zwykłego tekstu (bez skrótu).
(I zauważ, że „zasada” odnosi się również do wymuszania wygaśnięcia i faktu, że użytkownik musi zmienić hasło przy następnym logowaniu, ale ponieważ złożoność jest zwykle przedmiotem operacji kontrolnych, skupię się tylko na tym aspekcie. )
is_policy_checked
Bit jest ustawiony 1
, jeśli CHECK_POLICY = ON
podczas CREATE LOGIN
lub ALTER LOGIN
wydarzenia, nawet jeśli polityka nie jest sprawdzany w czasie. Jak zapewne można zebrać z góry, ta kontrola nie występuje w następujących scenariuszach:
HASHED
słowa kluczowego (bardzo powszechna taktyka podczas migracji loginów między serwerami lub kopiowania loginów do logów wysyłanych / dublowanych / AG drugorzędnych). Oczywiście nie jest możliwe sprawdzenie złożoności hasła, jeśli nie masz wstępnie zakodowanej wartości.ALTER LOGIN
bez ustawiania nowego hasła i nadal zmieniać flagę ( dzięki @AMtwo za zilustrowanie tego ). Podejrzewam, że mogły to zrobić sprytni ludzie próbujący oszukać audytora.Wszystkie te problemy można łatwo wykazać.
Ponieważ większość osób, z którymi rozmawiałem na ten temat, zawsze zakładało, że is_policy_checked
faktycznie oznacza to, że bieżące hasło jest zgodne z obecną polityką haseł, myślę, że ważne jest, aby coś się tutaj zmieniło, aby użytkownicy mieli odpowiednie oczekiwania i zrozumieli, że ta flaga niekoniecznie oznacza wszystko dobrze. Dokumentacja powinna przynajmniej zostać zaktualizowana, aby odzwierciedlić rzeczywistość, podobnie jak wskazałem powyżej. Ale są też inne rzeczy, które można zrobić.
CHECK_POLICY = ON
jest określone, ale zasady nie można w rzeczywistości sprawdzić (albo dlatego, że hasło zostało określone za pomocą skrótu, albo dlatego, że zasada hasła została wyłączona, lub ponieważ polecenie jest prostą próbą obejścia lub ustaw flagę, np ALTER LOGIN blat WITH CHECK_POLICY = ON;
.).CHECK_POLICY
może być przestarzałe, na korzyść ACTIVELY_CHECK_POLICY
i być może CHECK_POLICY_ON_NEXT_CHANGE
. Kolumny w sys.sql_logins
powinny być policy_has_been_checked
i policy_will_be_checked
. Nie jestem żonaty z tymi nazwiskami, ale są one o wiele dokładniejsze niż obecne sformułowanie.ACTIVELY_CHECK_POLICY = ON
a zasady nie będzie można sprawdzić podczas wykonywania polecenia, powinienem otrzymać komunikat o błędzie, a flaga nie powinna być ustawiona na 1
(lub nawet tworzenie logowania lub zmiana hasła nie powinny się powieść).0
, takie bypassy mogłyby zostać zidentyfikowane).Obecnie nie ma niezawodnego sposobu - bez ręcznej zmiany haseł na coś, co wiesz, że jest bezpieczne - do audytu twoich loginów SQL i upewnienia się, że wszystkie spełniają twoje zasady złożoności. W dobie coraz większej ilości danych, coraz większej liczby naruszeń danych i oczywistej potrzeby coraz mocniejszego zabezpieczania systemów, jest to problem, którym należy się zająć. Napisałem o tym na blogu i utworzyłem na ten temat element Connect:
Zachęcam do głosowania na element Connect i, co ważniejsze, upewnij się, że nie kontrolujesz swoich systemów pod kątem fałszywych poglądów na temat działania tej opcji DDL i metadanych.
Proszę nie odsuwać tego na bok jako „bez problemu”, ponieważ doskonale czujesz się z jego działaniem i już wiesz, że flagi nie można ufać - nie jesteś użytkownikiem, o którego się martwię; to wszyscy inni.