SQL密码策略过期

时间:2012-11-13 07:30:34

标签: c# asp.net sql sql-server-2008

我确信,之前有人必须遇到这个问题。我在一个组织工作,审计要求我们的开发人员在我们的应用程序中实施密码策略。我们已经创建了SQL登录和强制密码策略。我们最近遇到的问题是密码过期时,SQL管理员必须手动解锁每个登录 并且用户抱怨他们没有得到任何提醒,他们应该更改他们的密码 我们如何实现这一目标?我们想要的是能够实施密码策略(密码长度,到期时间)并能够在密码到期前15天通知用户

编辑1
我的应用程序是基于桌面的,也是基于Web的。基于桌面的应用程序使用SQL登录来验证自己,而asp.net Intranet网站使用由ASP.NET网站管理工具创建的用户。

2 个答案:

答案 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]

之后,您需要关联用户名和密码,并在密码到期之前发送电子邮件。

答案 1 :(得分:0)

好的,您可以通过此查询选择登录

select * from sys.sql_logins where is_expiration_checked=1

然后选中LOGINPROPERTY以获取DaysUntilExpiration。只需提供一项服务,每天检查密码并通过电子邮件通知用户。