2012-11-13 119 views
0

我確定,以前肯定有人有過這個問題。我在審計署要求我們開發人員在我們的應用程序中執行密碼策略的組織中工作。我們已經創建了SQL登錄並實施了密碼策略。我們最近面臨的問題是密碼過期時,SQL管理員必須手動解鎖每個登錄。
用戶抱怨說他們沒有得到任何提醒他們應該更改密碼。
我們如何實現這一目標?我們要的是SQL密碼策略到期

編輯1個
我的應用程序是基於桌面的,也基於Web的是能夠執行密碼策略(密碼長度,到期),並能夠給他的密碼到期之前ATLEAST後15天內通知用戶。基於桌面的應用程序使用SQL登錄來驗證自己,而asp.net Intranet網站使用由ASP.NET網站管理工具創建的用戶。

回答

0

好吧,你可以通過這個查詢選擇登錄

select * from sys.sql_logins where is_expiration_checked=1 

再檢查LOGINPROPERTY得到DaysUntilExpiration。只需製作一項服務即可每天檢查密碼並通過電子郵件通知用戶。

+0

這是一個正常的程序?我的意思是,每個開發都必須在審計需要這樣的標準的情況下做到嗎?另外,我將如何檢查密碼的長度和標準? –

+0

將取決於你的系統是如何構建的。您是否允許用戶直接訪問數據庫。我使用特殊的內部網站來允許用戶更改密碼,並擁有我自己的優秀提供者。這使我可以輕鬆控制過期和密碼複雜性。 –

+0

如果你不介意,你能告訴我你的工作的任何代碼嗎? –

1

你可以使用這個腳本來獲取時,用戶的密碼將作爲SQL代理作業或SSIS包的一部分到期(如果你需要更復雜的處理):

USE [master] 
GO 
SELECT [name] AS [sa] 
     ,LOGINPROPERTY([name], 'PasswordLastSetTime') AS [PasswordLastResetDT] 
     ,DATEDIFF(DAY, CONVERT([datetime],LOGINPROPERTY([name],'PasswordLastSetTime')),GETDATE()) AS [DaysUntilExpiration] 
     ,LOGINPROPERTY([name], 'BadPasswordCount') AS [BadPasswordCount] 
     ,LOGINPROPERTY([name], 'BadPasswordTime') AS [BadPasswordDT] 
     ,LOGINPROPERTY([name], 'HistoryLength') AS [HistoryLength] 
     ,LOGINPROPERTY([name], 'IsExpired') AS [IsExpired] 
     ,LOGINPROPERTY([name], 'IsLocked') AS [IsLocked] 
     ,LOGINPROPERTY([name], 'IsMustChange') AS [IsMustChange] 
     ,LOGINPROPERTY([name], 'LockoutTime') AS [LockoutTime] 
FROM [sys].[sql_logins] 
GROUP BY [name] 

之後,你以某種方式需要用戶關聯名稱和密碼,並在密碼過期前發送電子郵件。

+0

那些使用ASP.NET網站管理工具創建的用戶名稱 –

+0

請編輯您的問題並闡述您的問題。 TX。 –

+0

請檢查編輯 –