3.SQL Server配置安全性
a.服务帐号的安全性
使用本地系统帐号 LocalSystem
使用域用户帐号 windows帐号
b.用户及登录
1)登录的类型 两种
windows验证,SQL Server验证。可以利用windows用户验证的许多特性和功能。如密码复杂度,登录错误后锁定帐号等。
2)登录模式
windows验证模式,windows和SQL Server混合模式
3)用户
登录是对连接而言,用户是对数据库拥有的权限。
guest可以登录,但是不是数据库的用户;
sa可以登录,而且是所有数据库的用户,类似于windows的Administrator;
dbo用户是暗示性的用户,如果登录拥有system administrator的登录权限,创建对象的默认拥有者就是dbo,应该尽量让对象的所有者是dbo;
对象的拥有者owner。
Note:
设定SQL Server的验证模式的方法:SQL Server注册右键->【属性】->【安全性】;
设定本次登录的方式:SQL Server注册右键->【编辑 SQL Server注册属性】;
如果SQL Server的验证模式是Windows验证模式,则使用SQL Server身份验证,即使是sa也无法登录;
添加新的登录的方法:【安全性】->【登录】,新建的登录有两种类型:Windows身份验证和SQL Server身份验证。其中windows身份验证可以选择域下的组或者用户。
c权限与角色
角色相当于windows中的组。
分配权限的架构:在windows中建组,在SQL Server中创建登录方式为windows组。
数据库的public角色相当于windows的user,用户不能删除public角色。
数据库的角色只对一个数据库,不能跨数据库。
如果一个数据库有guest用户,那么其它不是这个数据库的用户登录时,对这个数据库将会拥有guest用户拥有的权限。
1)固定服务器角色
2)固定数据库角色
3)自定义用户角色
4)应用程序角色
sp_setapprole存储过程,将会获得应用程序角色,但是当前会话将会失去登录用户的权限,知道会话关闭。
5)所有者的权限
能授予其他用户访问权限
6)所有权链
SQL Server属性的安全页中应该设置不允许跨数据库所有权链接。
7)权限的授予及授予权限委派
with grant option,授予权限的同时,把授权的权限委派给了用户。
d.使用加密
加密数据库对象定义
在服务器网络实用工具和客户端网络实用工具中强制协议加密
创建语句中加with encryption,将以加密的形式保存定义语句;系统表syscomments中可以看到对象的定义语句。编辑SQL Server注册属性中可以设定是否显示系统数据库和对象。
e.委派和扮演
f.活动审核
登录审核
c2审核 能记录所有事件,在SQL事件探查器中查看
SQL Server属性设置的安全页中设置审核,就可以在windows的事件查看器中看到登录的事件。
启动c2审核的方法:
exec sp_configure 'show advanced option', '1'
exec sp_configure 'c2 audit mode', '1'
reconfigure
执行结果:
已将配置选项 'show advanced options' 从 1 改为 1。请运行 RECONFIGURE 语句以安装。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'c2 audit mode' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。
停止c2审核的方法:
exec sp_configure 'show advanced option', '1'
exec sp_configure 'c2 audit mode', '0'
reconfigure
重启服务,运行的所有命令都会记录到%MSSQL_BASE%/Data目录的*.trc中,可以用事件探查器查看。注意:当前正在记录的trace的文件大小为0,不能查看,只有停止服务后,才会把trace写到文件,才能查看。
安全扫描
Baseline Security Analyzer
Kill password
SQL Server在安装过程中会把用户设置的sa的密码保存在安装日志中。