SQL server数据库本身没有密码复杂度策略设置,它是使用Windows操作系统的校验函数来校验账户密码的,所以查看SQL server数据库密码复杂度需要结合操作系统本地安全策略的密码策略来看。

下面实验一下,实验环境是在Windows server 2008虚拟机上装了SQL server20008数据库。

一、设置SQL server的密码复杂度策略

首先禁用服务器密码策略

7846119b3ecc179a8589e32dc2afb2c0.png

使用sa账户登录SQL server,打开安全性-登录名-右键-输入登录名test,选择SQL server身份验证,输入密码“123”(此时勾选了强制实时密码策略),点击确定

d124427668b70ffbe8b2306e59c6ffb4.png

可以成功创建了test账户,并且设置了弱口令“123”,然后右键test账户看一下属性。

01af861d41ec3174201e3d8a5151f059.png

下图中显示test账户勾选了强制实施密码策略,密码位置:显示15个圈,是看不出弱口令的。

6fd6002e49da1482cb911470c12cbee5.png

用弱口令登录test账户也是没有问题的

306763b69f0c72b5c49b04ab72b2c65f.png

98ec35bb668abdda99bbba580955b8ff.png

然后开启服务器密码策略,使用管理员sa新建一个弱口令账户

2bbe20e6e80e42d826836115ec0bea53.png

依然使用sa账户登录SQL server,打开安全性-登录名-右键-输入登录名test1,选择SQL server身份验证,输入密码“123”(此时勾选了强制实施密码策略),点击确定

2012905a27cb3d87d222fead17ba36c9.png

此时数据库报错提示“密码有效性验证失败,该密码不够复杂,不符合Windows策略要求”,证明了开启服务器密码策略并勾选账户强制实施密码策略,是有效果的。

a48f4e618dc8629bb2aad305b74f560d.png

但我看了一下Windows操作系统的密码策略也是挺下饭-..-最少六个字符长!!

d731d2ca7ef83629666cfb2b0ef9d7b4.png

就是说即使开了密码策略,还可以将密码设置为Qwe!23的六位数

7e8df6b05aaf2b575fe41753d7287bc1.png

如果想要设置密码最小长度的话,在服务器密码策略上修改就可以了

最后试一下开启Windows操作系统密码策略,不勾选数据库账户的强制实施密码策略,看看能不能,设置弱口令

c483c029c9e21832e96e850283cbadab.png

b4950fd69088921802ac66055a86aaad.png

果然结果是可以的。

总结一下就是SQL server密码策略要同时满足开启Windows密码策略并且勾选SQL server账户的强制实施密码策略才算是符合,但即使这样的话一样可以设置6位长度的口令,所以还要设置服务器的密码最小长度值。

二、设置SQL server的账户锁定策略

SQL server的账户锁定策略原理也是一样的,都是参照Windows操作系统的校验函数来校验的,所以需要勾选账户的强制密码过期,并且开启操作系统的账户锁定策略。

然后我试了一下:

1、只勾选数据库强制密码过期,不设置操作系统密码锁定策略

测试同一个账户输错10次密码,再输入正确直接进入数据库,账户没有被锁定

2、勾选数据库强制密码过期,设置操作系统密码锁定策略

输错三次密码,再输入正确密码,无法进入数据库,账户被锁定

3、取消数据库强制密码过期,设置操作系统密码锁定策略

此时使用同一个账户输错10次密码,再输入正确可以直接进入数据库,账户没有被锁定

总结:勾选数据库强制密码过期,设置操作系统密码锁定策略

60a01af775a5e3e838e93995f8fd9c0d.png

39194501f632cebb96a86755563f7dd6.png

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐