写在前面
提到微软SQL Server数据库安全策略,首先会想到windows安全策略设置。那数据库用户的安全策略到底如何设置呢?其实SQL Server就可使用 Windows密码策略机制。-密码策略可使用SQL Server身份验证的登陆名,而且也能够应用于具备密码的数据库用户。另外SQL Server数据库能够对在SQL内部使用的密码应用在widnows中使用相同复杂度和过时的策略。
注意:SQL Server数据库强制实施密码复杂性,具体密码过时和密码实施部分并不适用于SQL Sece数据库。sql
安全策略介绍
密码的复杂度
密码复杂性策略经过增长可能密码的数量来阻止强力攻击。 实施密码复杂性策略时,新密码必须符合如下原则:数据库
- 密码复杂性策略经过增长可能密码的数量来阻止强力攻击。 实施密码复杂性策略时,新密码必须符合如下原则:
- 密码不得包含用户的账户名。
- 密码长度至少为八个字符。
- 密码包含如下四类字符中的三类:
- 拉丁文大写字母 (A - Z)
- 拉丁文小写字母 (a - z)
- 10 个基本数字 (0 - 9)
- 非字母数字字符,如感叹号 (!)、美圆符号 ($)、数字符号 (#) 或百分号 (%)。
- 密码可最长为 128 个字符。 使用的密码应尽量长,尽量复杂。
密码过时
密码过时策略用于管理密码的使用期限。 若是 SQL Server 实施密码过时策略,则系统将提醒用户更改旧密码,并禁用带有过时密码的账户。windows
安全策略实施
利用SSMS建立用户
- 在对象资源管理器中,展开要在其中建立新登陆名的服务器实例的文件夹。
- 右键单击“安全性”文件夹,指向“新建”,而后选择“登陆名…”。
- 在“登陆名 - 新建”对话框的“常规”页中,在“登陆名”框中输入用户的名称。 或者,单击“搜索…”以打开“选择用户或组”对话框。
- 若是单击“搜索…”:
- 在“选择此对象类型”下,单击“对象类型…”以打开“对象类型”对话框,并选择如下任意或所有选项:“内置安全主体”、“组”和“用户”。 默认状况下,将选中“内置安全主体”和“用户”。 完成后,单击 “肯定”。
- 在“今后位置”下,单击“位置…”以打开“位置”对话框,并选择一个可用的服务器位置。 完成后,单击 “肯定”。
- 在“输入要选择的对象名称(示例)”下,输入你想要查找的用户或组名。单击“高级…”以显示更多高级搜索选项。
- 单击 “肯定” 中建立登陆名。
- 若要基于 Windows 主体建立一个登陆名,请选择 “Windows 身份验证”。 这是默认选项。
- 若要建立一个保存在 SQL Server 数据库中的登陆名,请选择 “SQL Server 身份验证”。
- 在 “密码” 框中,输入新用户的密码。 在 “确认密码” 框中再次输入该密码。
- 在更改现有密码时,选择 “指定旧密码”,而后在 “旧密码” 框中键入旧密码。
- 若要强制实施有关复杂性和强制执行的密码策略选项,请选择 “强制实施密码策略”。 选中 “SQL Server 身份验证” 时,这是默认选项。
- 若要强制实施有关过时的密码策略选项,请选中 “强制密码过时”。 必须选择 “强制实施密码策略” 才能启用此复选框。 选中 “SQL Server 身份验证” 时,这是默认选项。
- 若要在首次使用登陆名后强制用户建立新密码,请选择 “用户在下次登陆时必须更改密码”。 必须选择 “强制密码过时” 才能启用此复选框。 选中 “SQL Server 身份验证” 时,这是默认选项。
- 若要将登陆名与独立的安全性证书相关联,请选择“映射到证书”,而后再从列表中选择现有证书的名称。
- 若要将登陆名与独立的非对称密钥相关联,请选择“映射到非对称密钥”,而后再从列表中选择现有密钥的名称。
- 若要将登陆名与安全凭据相关联,请选中 “映射到凭据” 复选框,而后再从列表中选择现有凭据或单击 “添加” 以建立新的凭据。 若要从登陆名删除与某个安全凭据的映射,请从 “映射的凭据” 中选择该凭据,而后单击 “删除”。从 “默认数据库” 列表中,选择登陆名的默认数据库。 “Master” 是此选项的默认值。
- 从 “默认语言” 列表中,选择登陆名的默认语言。
- 单击“肯定”。
修改用户策略
可为每一个 SQL Server 登陆名单独配置密码策略实施。 配置密码策略实施时,适用如下规则:安全
若是 CHECK_POLICY 改成 ON,则将出现如下行为:服务器
- 除非将 CHECK_EXPIRATION 显式设置为 OFF,不然也会将其设置为 ON。
- 用当前的密码哈希值初始化密码历史记录。
- 还将启用账户锁定时间, 账户锁定阈值和 在此后重置账户锁定计数器 。
若是 CHECK_POLICY 改成 OFF,则将出现如下行为操作系统
- CHECK_EXPIRATION 也设置为 OFF。
- 清除密码历史记录。
- lockout_time 的值被重置。
- 不支持策略选项的某些组合。
若是指定 MUST_CHANGE,则 CHECK_EXPIRATION 和 CHECK_POLICY 必须设置为 ON。 不然,该语句将失败。
若是 CHECK_POLICY 设置为 OFF,则 CHECK_EXPIRATION 不能设置为 ON。 包含此选项组合的 ALTER LOGIN 语句将失败。
设置 CHECK_POLICY = ON 将禁止建立如下类型的密码:server
- 为 NULL 或空
- 与计算机名或登陆名相同
- 下列任意项:“password”、“admin”、“administrator”、“sa”、“sysadmin”
另外,能够在 Windows 中设置安全策略,也能够从域接收安全策略。 若要查看计算机上的密码策略,请使用本地安全策略 MMC 管理单元 (secpol.msc)。
对象
总结
关于SQL Server数据库安全策略,为了保证数据库安全、稳定运行,最主要的要保证操做系统更加安全,必定要作好相应的安全加固工做。数据库用户建议利用SQL Server身份验证为不一样的应用程序,根据不一样的权限建立其对应的用户,不建议应用直接利用sa用户,sa用户仅限于数据库DBA使用。blog
参考:https://docs.microsoft.com/zh-cn/sql/relational-databases/security/password-policy?view=sql-server-2017资源