यह आपके उपयोगकर्ताओं के बीच लोकप्रिय नहीं हो सकता है, लेकिन मेरा मानना है कि एकमात्र तरीका जिसे आप निश्चित रूप से जान सकते हैं कि प्रत्येक SQL लॉगिन के लिए पासवर्ड परिवर्तन के लिए बाध्य किया जाए CHECK_POLICY = ON
। यह ALTER LOGIN
खाली पासवर्ड के साथ आदेशों का एक सेट उत्पन्न करेगा , आप क्वेरी को उन सभी को एक सामान्य पासवर्ड दे सकते हैं या मैन्युअल रूप से प्रत्येक व्यक्ति को व्यक्तिगत पासवर्ड के साथ अपडेट कर सकते हैं - बस सुनिश्चित करें कि वे आपकी नीति को पूरा करते हैं। बेशक आपको यह सुनिश्चित करने की आवश्यकता है कि पासवर्ड नीति आपकी अपेक्षा के अनुसार जटिल है, और यह सक्षम है (नियंत्रण कक्ष> प्रशासनिक उपकरण> स्थानीय सुरक्षा नीति> खाता नीतियाँ> पासवर्ड नीति> पासवर्ड जटिलता आवश्यकताओं को पूरा करना चाहिए)।
SELECT N'ALTER LOGIN ' + QUOTENAME(name)
+ N' WITH PASSWORD = N'''' MUST_CHANGE, CHECK_POLICY = ON;'
FROM sys.sql_logins
--WHERE is_policy_checked = 0;
स्टीव जोन्स ने इस बारे में कुछ समय पहले लिखा था । ध्यान दें कि - नीचे मैंने जो कुछ भी खोला है, उसके कारण - आप इस बात पर भरोसा नहीं कर सकते is_policy_checked = 1
कि पासवर्ड वास्तव में आपकी वर्तमान नीति से मिलता है, क्योंकि लॉगिन एक हैशेड पासवर्ड के साथ बनाया जा सकता था (जिस स्थिति में सादा पाठ पासवर्ड नहीं हो सकता है जाँच की गई) या जबकि स्थानीय जटिलता नीति को अक्षम कर दिया गया था (जो अभी भी होता है is_policy_checked = 1
)।
एक अन्य दृष्टिकोण जो मैंने सोचा था कि उनके वर्तमान और साथ हर लॉगिन की एक प्रति बनाने की कोशिश करने के लिए काम करेगा , और असफल होने वाले हर एक नोट को नोट करना होगा। हालांकि, यह काम नहीं कर सकता है - यहां तक कि , यह पहले से ही हैशेड पासवर्ड का कोई सत्यापन नहीं करता है। मैं पोस्टरिटी के लिए कोड शामिल करूंगा - लेकिन, डिजाइन से, पॉलिसी को आसानी से जांचा नहीं जा सकता है।password_hash
CHECK_POLICY = ON
CHECK_POLICY = ON
SELECT N'BEGIN TRY
CREATE LOGIN ' + QUOTENAME(N'copy_of_' + name)
+ N' WITH PASSWORD = '
+ CONVERT(NVARCHAR(255), password_hash, 1)
+ ' HASHED, CHECK_POLICY = ON;
DROP LOGIN ' + QUOTENAME(N'copy_of_' + name) + ';
END TRY
BEGIN CATCH
IF ERROR_NUMBER() = 15118
PRINT N''' + REPLACE(name, '''', '''''')
+ N' was not complex enough.'';
END CATCH'
FROM sys.sql_logins;
व्यक्तिगत रूप से, मुझे लगता है कि यह एक बग है। यदि सिंटैक्स मुझे एक हैशेड पासवर्ड का उपयोग करके लॉगिन बनाने की अनुमति देता है, और मैं यह निर्धारित कर सकता हूं कि उस पासवर्ड को मेरी जटिलता नीति को पूरा करना चाहिए, तो यह एक त्रुटि या चेतावनी उत्पन्न करना चाहिए कि नीति वास्तव में, जाँच नहीं की गई थी।
अद्यतन : मैंने इस व्यवहार के खिलाफ एक बग दर्ज किया।