Quando guardo dentro sys.sql_logins
, vedo una colonna chiamata is_policy_checked
. Posso fidarmi che la mia politica password è stata verificata per tutti gli accessi in cui si trova questo valore di colonna 1
?
Quando guardo dentro sys.sql_logins
, vedo una colonna chiamata is_policy_checked
. Posso fidarmi che la mia politica password è stata verificata per tutti gli accessi in cui si trova questo valore di colonna 1
?
Risposte:
Mentre la documentazione attualmente contiene la seguente affermazione discutibilmente ambigua sul significato di questo flag:
La politica password è selezionata.
Ciò che significa veramente, e dovrebbe dire, è che la bandiera ha due scopi:
- La politica password potrebbe essere stata verificata, ma solo se (a) la politica password era abilitata al momento dell'ultima impostazione della password e (b) la password è stata specificata in testo semplice (non con un hash).
- La politica della password verrà controllata alla successiva impostazione della politica, ma solo se (a) la politica della password è abilitata in quel momento e (b) la password è specificata in testo semplice (non con un hash).
(E nota che "la politica" si riferisce anche al rispetto della scadenza e al fatto che l'utente deve cambiare la password al prossimo accesso, ma poiché la complessità è in genere al centro delle operazioni di controllo, mi concentrerò solo su quell'aspetto. )
Il is_policy_checked
bit è impostato su 1
if CHECK_POLICY = ON
durante uno CREATE LOGIN
o un ALTER LOGIN
evento, anche se la politica non è controllata al momento. Come probabilmente puoi raccogliere dall'alto, questo controllo non si verifica in questi scenari:
HASHED
parola chiave (una tattica molto comune durante la migrazione degli accessi tra server o la copia degli accessi per accedere ai secondari spediti / con mirroring / AG). Ovviamente non è possibile verificare la complessità della password se non si dispone del valore con hash.ALTER LOGIN
senza impostare una nuova password e cambiare ancora il flag ( grazie a @AMtwo per averlo illustrato ). Sospetto che ciò possa essere stato fatto da persone intelligenti che cercano di ingannare un revisore dei conti.Questi problemi sono tutti facili da dimostrare.
Dal momento che la maggior parte delle persone con cui ho parlato di questo ha sempre assunto che is_policy_checked
ciò significhi in realtà che la password corrente soddisfa l'attuale politica delle password, penso che sia importante che qualcosa cambi qui in modo che gli utenti abbiano le giuste aspettative e capiscano che questo flag non significa necessariamente tutto bene. Per lo meno, la documentazione dovrebbe essere aggiornata per riflettere la realtà, un po 'come ho sottolineato sopra. Ma ci sono anche altre cose che possono essere fatte.
CHECK_POLICY = ON
viene specificato, potrebbe essere generato un avviso, ma in realtà la politica non può essere verificata (o perché la password è specificata con un hash o perché la politica della password è stata disabilitata o perché il comando è un semplice tentativo di bypassare o impostare la bandiera, ad es ALTER LOGIN blat WITH CHECK_POLICY = ON;
.).CHECK_POLICY
potrebbe essere deprecato, a favore ACTIVELY_CHECK_POLICY
e forse CHECK_POLICY_ON_NEXT_CHANGE
. Le colonne in sys.sql_logins
dovrebbero essere policy_has_been_checked
e policy_will_be_checked
. Non sono sposato con questi nomi, ma sono molto più precisi dell'attuale formulazione.ACTIVELY_CHECK_POLICY = ON
e la politica non può essere verificata durante l'esecuzione del comando, dovrei ricevere un messaggio di errore e il flag non dovrebbe essere impostato su 1
(o anche la creazione dell'accesso o la modifica della password non dovrebbero avere esito positivo).0
, tali bypass potrebbero essere identificati).Oggi non esiste un modo affidabile - senza cambiare manualmente le loro password in qualcosa che si sa sia sicuro - per controllare i tuoi accessi SQL ed essere sicuri che soddisfino tutti i tuoi criteri di complessità. In questi tempi di dati in costante aumento, sempre più violazioni dei dati e l'ovvia necessità di rendere i sistemi sempre più serrati, questo è un problema che deve essere affrontato. Ho scritto un blog su questo e ho creato un elemento Connect al riguardo:
Ti incoraggio a votare la voce Connect e, cosa più importante, assicurati di non controllare i tuoi sistemi con false percezioni sul funzionamento di questa opzione DDL e dei metadati.
Per favore, non considerare questo come un "non-problema" perché sei perfettamente a tuo agio nel modo in cui funziona e sai già che la bandiera non può essere attendibile - non sei l'utente di cui sono preoccupato; sono tutti gli altri.