去评论
海欣资源

SQL Server 数据库的安全设置教程

ertfg
2022/05/27 19:48:10
1. 介绍
数据库服务器是所有应用的数据中转站,若数据库服务被恶意攻击,可能会造成数据泄露、数据丢失、数据被恶意篡改等诸多无法挽回的损失;
所以,对数据库进行安全设置是每一个数据库管理人员都应掌握的知识;

2. 更改登录用户验证方式
SQL Server 登录模式分为 “Windows 身份验证模式” 和 “SQL Server 身份验证模式” 两种,若在安装 SQL Server 时选择的是 “Windows 身份验证模式 ”,则 sa 登录账号被禁用;若想开启 sa 账户,则能使用 ALTER LOGIN 语句;
    在 SQL Server 对象资源管理器中,右击服务器,属性;

安全性 → 服务器身份验证 ,选择新的服务器身份验证 → 确定;

确定,重启 SQL Server ,新的验证方式被启用;

3. 创建与删除登录用户
在 SQL Server 中能创建多个登录用户来访问数据库服务器,SQL Server 能对创建的登录用户做严格的设置来控制账户的访问权限、密码策略等;
在 SQL Server 数据库中创建新的登录用户步骤如下:
    在对象资源管理器中找到安全性节点,展开登录名,选择 新建登录名;

在 登录名-新建对话框 → 常规,输入新建账户的名字 Tim → SQL Server 身份验证,输入密码;

若用户在上述操作中选中了 强制实施密码策略,系统就会对所设置的密码的长度组合复杂度哟一个强制性的要求,提高密码的安全性;
    打开 服务器角色 ,对服务器角色用户向用户授予服务器范围内的安全特权方式进行设定;

注意: 选中的是 pubic 特权,这是 SQL Server 中的一类默认角色,若想让角色拥有服务器管理的最高权限,可选择 sysadmin;
    打开 用户映射 → 在右上部分选中此账户能操作的数据库 → 在右下部分选中定义登陆者的角色身份;

最后选择 状态,在此页中选中授予允许连接到数据库引擎和已启用登录;

设置完毕后单击 确定,新的登录账户创建完毕,可在登录名节点下找到新建的登录用户 Tim;

若需删除某个账户,只需右击登录名,选择 删除;

常规 → 登录名 → 输入 登录名;

4. 创建与删除数据库用户
数据库用户是映射到登录账户上的;
在 SQL Server 数据库中能为一个数据库创建多个数据库用户,
创建数据库用户的操作步骤如下所示:
    数据库 → 安全性 → 用户,右击选择 新建用户;

常规 → 登录名 → 输入 登录名;

在 此用户拥有的架构 中勾线 db_accessadmin;

在数据库角色成员身份中勾选 db_accessadmin;

    单击确定,即可完成数据库用户的添加;
若想删除数据库,只需要右击要删除的用户名,选择 删除,即可;
注意: 除了使用用户资源管理器进行创建用户之外,新建用户还能用 T-SQL 语句 CREATE USER、CREATE LOGIN 语句进行创建;

5. 设置服务器角色权限
当几个用户需要在某个特定的数据库中执行类型的动作时,能向该数据库中添加一个角色;
数据库角色指定了能访问相同数据库对象的一组数据库用户;
固定服务器角色已经具备了执行指定操作的权限,能把其他登录名作为成员添加到固定服务器角色中,这样该登录名就能继承固定服务器角色的权限;
在 SQL Server 数据库中默认的服务器角色如下:

服务器角色的作用和权限,如下所示:
    bulkadmin: 这个服务器角色的成员能运行 BULK INSERT 语句;这条语句运行从文本文件中将数据导入 SQL Server 数据库中,为需要执行大容量插入数据的域账户而设计;
    dbcreator: 这个服务器角色成员能创建、更改、删除和还原任何数据库;这既是适合助理 DBA 的角色,也可能是适合开发人员的角色;
    diskadmin: 这个服务器角色能用于管理磁盘文件,它适合助理 DBA;
    processadmin: SQL Server 数据库能够多任务化,就是能通过执行多个进程做多个事件;
    serveradmin: 这个数据库角色的成员能更改服务器范围的配置选项和关闭服务器;
    setupadmin: 为需要管理链接服务器和控制启动的存储过程的用户而设计,这个角色的成员能添加到 setupadmin,能增加、删除和配置服务器,并控制启动过程;
    sysadmin: 这个服务器角色有权在 SQL Server 数据库中执行任何任务;
    pubilc: 两大特点,一个初始状态时没有权限,二是所有的数据库用户都是它的成员;

5.1. 查看角色属性
要查看服务器角色的属性时,右击需要查看的角色名 → 属性;


5.2 操作权限
对角色权限的操作分为 3 种状态,授予、撤销、拒绝,分别用 GRANT、REVOKE、DENY 语句进行操作;
授予权限的基本语法格式如下:
GRANT
{ALL|statement [,..n] }
TO security_account [,..n]

注意: 将权限授予角色,而不是单独的登录名或用户;当某个用户由其他人取代时,能从角色中删除离开的用户,并向角色中添加新用户,与该角色关联的许多权限都将自动应用于新用户;
6. 密码策略

在 Windows Server 2003 或更高版本中运行时,SQL Server 数据库能使用 Windows 密码策略机制;
SQL Server 数据库能将在内部使用的密码应用在 Windows Server 2003 中,两者使用相同的复杂性策略和过期策略;
此功能需要通过 NetValidatePasswordPolicy API 实现,该 API 只在 Windows Server 2003 和更高版本中提供;
6.1. 密码复杂性
密码复杂性策略通过增加可能密码的数量来阻止强力攻击;实施密码复杂性策略时,新密码必须符合密码不能包含全部或部分用户账户名的原则,部分账户名是指 3 个或 3 个以上两端用 “空白”(空格、制表符、回车符等)或任何以下字符分隔的连续字母数字字符:逗号(,)、句号(.)、连字符(-)、下划线(_)或数字字符号(#);
密码的设置时要注意:
    密码长度至少为 8 个字符;
    密码包含以下 4 类字符中的 3 类:拉丁文大写字母(AZ)、拉丁文小写字母(az)、10 个基本数字(0~9);
    非字母数字字符,如感叹号(!)、美元符号($)、数字字符(#)或百分号(%);
密码最长可为 128 个字符;使用的密码应尽可能长、尽可能复杂;

6.2. 密码过期
密码过期策略用于管理密码的使用过程;若 SQL Server 数据库中试试密码过期策略,则系统将提醒用户更改旧密码,并禁用带有过期密码的账户;
用户能为每个 SQL Server 登录名单独配置密码策略实施,通过使用 ALTER LOGIN(T-SQL) 来配置 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 语句将失败;