Yet again I’ve seen an audit request where the auditor wants the DBA to show what SQL Server’s settings are for this set of information:
- Account Lockout settings
- Password Expiration settings
- Password Complexity settings
If you’re dealing with an auditor who is asking for this on your SQL Server, please refer them to:
Then show them this quote (emphasis mine):
When it is running on Windows Server 2003 or later versions, SQL Server 2005 can use Windows password policy mechanisms.
SQL Server 2005 can apply the same complexity and expiration policies used in Windows Server 2003 to passwords used inside SQL Server. This functionality depends on the NetValidatePasswordPolicy API, which is only available in Windows Server 2003 and later versions.
If they aren’t familiar with that function, point them here:
In other words, SQL Server is passing off the password check to the OS. Therefore, the settings are at the OS. This is true of every version since SQL Server 2005. Hit the same topic, regardless of version, and you’ll see something similar with regards to the text. The bottom line is that there are no separate settings in SQL Server. Furthermore,if your Windows computer is in an Active Directory domain, then most likely your OS is getting them from the Default Domain Policy, which is stored in Active Directory. In short, the auditors need to look there, not in SQL Server.
If they’re interested in seeing what SQL-based logins which are enforcing password policy/expiration, that’s a different story. Query sys.sql_logins and you’ll get that information. But as far as the settings are concerned, they aren’t “settable” within SQL Server. They come from the OS. If they still insist on seeing the settings, point them to this article and send them off to your friendly (well, until the auditor shows up at his or her desk) Windows administrator: