0

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

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

4

2 回答 2

2

作为 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]

之后,您需要以某种方式关联用户名和他们的密码,并在密码过期之前发送电子邮件。

于 2012-11-13T07:43:40.530 回答
0

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

select * from sys.sql_logins where is_expiration_checked=1

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

于 2012-11-13T07:37:02.627 回答