SQL Server学习笔记之三(如何让数据库抵御外界的攻击)

时间:2022-12-28 23:30:30
 

3.SQL Server配置安全性

a.服务帐号的安全性

  使用本地系统帐号   LocalSystem

  使用域用户帐号      windows帐号

b.用户及登录

  1)登录的类型 两种

windows验证,SQL Server验证。可以利用windows用户验证的许多特性和功能。如密码复杂度,登录错误后锁定帐号等。

  2)登录模式

windows验证模式,windowsSQL Server混合模式

3)用户

   登录是对连接而言,用户是对数据库拥有的权限。

   guest可以登录,但是不是数据库的用户;

   sa可以登录,而且是所有数据库的用户,类似于windowsAdministrator;

   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角色相当于windowsuser,用户不能删除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的密码保存在安装日志中。