Ketika saya melihat sys.sql_logins
, saya melihat sebuah kolom bernama is_policy_checked
. Dapatkah saya percaya bahwa kebijakan kata sandi saya telah diperiksa untuk semua login di mana nilai kolom ini berada 1
?
sumber
Ketika saya melihat sys.sql_logins
, saya melihat sebuah kolom bernama is_policy_checked
. Dapatkah saya percaya bahwa kebijakan kata sandi saya telah diperiksa untuk semua login di mana nilai kolom ini berada 1
?
Sedangkan dokumentasinya saat ini memiliki pernyataan ambigu yang dapat diperdebatkan tentang apa arti bendera ini:
Kebijakan kata sandi diperiksa.
Apa artinya sebenarnya, dan harus dikatakan, bahwa bendera memiliki dua tujuan:
- Kebijakan kata sandi mungkin telah diperiksa, tetapi hanya jika (a) kebijakan kata sandi diaktifkan pada saat kata sandi terakhir ditetapkan, dan (b) kata sandi tersebut ditentukan dalam teks biasa (bukan dengan hash).
- Kebijakan kata sandi akan diperiksa pada saat kebijakan itu ditetapkan, tetapi hanya jika (a) kebijakan kata sandi diaktifkan pada saat itu, dan (b) kata sandi ditentukan dalam teks biasa (bukan dengan hash).
(Dan perhatikan bahwa "kebijakan" juga merujuk pada penegakan kadaluwarsa dan fakta bahwa pengguna harus mengubah kata sandi pada login berikutnya, tetapi karena kerumitan biasanya fokus operasi audit, saya hanya akan fokus pada aspek itu. )
The is_policy_checked
bit diatur untuk 1
jika CHECK_POLICY = ON
selama CREATE LOGIN
atau ALTER LOGIN
acara, bahkan jika kebijakan tersebut tidak diperiksa pada saat itu. Karena Anda mungkin dapat mengumpulkan dari atas, pemeriksaan ini tidak terjadi dalam skenario ini:
HASHED
kata kunci (taktik yang sangat umum ketika memigrasi login antara server atau menyalin login untuk log sekunder yang dikirimkan / dicerminkan / AG). Jelas tidak mungkin untuk memeriksa kompleksitas kata sandi jika Anda tidak memiliki nilai pra-hash.ALTER LOGIN
tanpa menetapkan kata sandi baru, dan masih mengubah benderanya ( terima kasih kepada @ AMtwo untuk mengilustrasikan ini ). Saya menduga ini mungkin dilakukan oleh orang pintar yang mencoba menipu auditor.Semua masalah ini mudah ditunjukkan.
Karena kebanyakan orang yang saya ajak bicara tentang hal ini selalu berasumsi bahwa is_policy_checked
sebenarnya kata sandi saat ini memenuhi kebijakan kata sandi saat ini, saya pikir penting bahwa ada sesuatu yang berubah di sini sehingga pengguna memiliki harapan yang tepat dan memahami bahwa tanda ini tidak selalu berarti semua baik-baik saja. Paling tidak, dokumentasi harus diperbarui untuk mencerminkan kenyataan, agak seperti yang saya tunjukkan di atas. Tetapi ada hal lain yang bisa dilakukan juga.
CHECK_POLICY = ON
ditentukan tetapi kebijakan tidak dapat, pada kenyataannya, diperiksa (baik karena kata sandi ditentukan dengan hash, atau karena kebijakan kata sandi telah dinonaktifkan, atau karena perintah adalah upaya sederhana untuk memotong atau atur bendera, mis ALTER LOGIN blat WITH CHECK_POLICY = ON;
.).CHECK_POLICY
dapat ditinggalkan, mendukung ACTIVELY_CHECK_POLICY
dan mungkin CHECK_POLICY_ON_NEXT_CHANGE
. Kolom di sys.sql_logins
harus policy_has_been_checked
dan policy_will_be_checked
. Saya tidak menikah dengan nama-nama ini, tetapi mereka jauh lebih akurat daripada kata-kata saat ini.ACTIVELY_CHECK_POLICY = ON
dan kebijakan tidak dapat diperiksa selama pelaksanaan perintah, saya harus menerima pesan kesalahan dan bendera tidak boleh diatur ke 1
(atau bahkan pembuatan login atau perubahan kata sandi tidak boleh berhasil).0
, bypass tersebut dapat diidentifikasi).Saat ini tidak ada cara yang dapat diandalkan - tanpa secara manual mengubah kata sandi mereka untuk sesuatu yang Anda tahu aman - untuk mengaudit login SQL Anda dan yakinlah bahwa semuanya memenuhi kebijakan kompleksitas Anda. Di hari ini dan usia data yang semakin meningkat, semakin banyak pelanggaran data, dan kebutuhan yang jelas untuk mengamankan sistem semakin ketat, ini adalah masalah yang perlu ditangani. Saya telah membuat blog tentang hal ini dan membuat item Connect tentangnya:
Saya mendorong Anda untuk memilih pada item Connect dan, yang lebih penting, pastikan Anda tidak mengaudit sistem Anda dengan persepsi salah tentang cara kerja opsi dan metadata DDL ini.
Tolong jangan mengesampingkan ini sebagai "bukan masalah" karena Anda sangat nyaman dengan cara kerjanya dan sudah tahu bahwa bendera tidak dapat dipercaya - Anda bukan pengguna yang saya khawatirkan; itu orang lain.