数据库是为了方便存储大量的数据,那么怎么样才能合理的维护数据库,保证数据库不被受攻击,保证数据库的正常工作与安全性呢?今天我就来给大家介绍一下SQL Server数据服务器的安全性,也是基本的常用的一些方法。
SQL Server服务器本身的配置有载体安全配置性和相关安全配置。
载体安全性:
1、 及时的下载相应补丁,对数据库进行更新
2、 安装正版的杀毒软件
3、 安装安全的文件系统,我们现在认为最安全的文件系统就是NTFS了
4、 经常使用注册表和组策略对数据库进行维护
相关安全配置:
1、 首先是用户的访问控制
2、 数据库存储的安全性(备份策略)
3、 网络传输的安全性:SSL通讯、使用IPsec
4、 对数据进行加密
用户管理:Windows用户和SQL Server 用户
Windows用户的验证工作是由操作系统进行的,而SQL Server 用户的验证则是由SQL Server数据库进行验证的。
身份验证的方式:Windows验证方式和混合验证(Windows验证与SQL Server验证)
查看更改验证方式:右击SQLServer服务器名-------属性-----安全性----验证方式
clip_image001
clip_image003
更改Sa用户密码:安全性------登录名-----选择sa属性
clip_image004
clip_image006
实例:创建windows 用户hongwei除了对员工表中作查询操作外,无任何权限。
一、开始---程序----Microsoft SQL Server 2005----配置工具----外围配置器中开启xp_cmdshell。在SQL Server2000中这个功能默认是开启的,所以有些黑客就会趁虚而入,大大减小的SQL Server数据库的安全性,还好在SQL Server2005的时候这个功能默认为关闭状态了。
clip_image008
选择“功能的外围应用适配器”
clip_image010
勾选“启用xp_cmdshell”
clip_image012
二、创建一个Windows用户“hongwei”
打开SQL Server数据库输入以下命令;xp_cmdshell ‘net user hongwei hongwei /add’
clip_image014
三、执行以下命令,赋予用户hongwei登录SQL Server 数据库的权限
clip_image016
四、在接着执行以下命令,让用户hongwei成为指定数据库的合法用户
clip_image018
五、分配权限。
只给用户hongwei一个select权限对员工表进行操作。
clip_image020
六、测试:
由于SQL Server数据库采用的是集成身份验证方式。所以我们要以hongwei用户登陆到beijing计算机中,然后在登陆进SQL Server数据库中
clip_image021
登录进数据库中我们来测试一下,首先执行一下select命令,ok没问题,成功执行了。
clip_image023
接下来我们再在员工表中插入一条记录,如图显示拒绝了此操作,没权限。
clip_image025
SQL Server2005用户安全性加强了。用户策略来限制用户的登陆次数。
密码策略:是受操作系统组策略的影响。
clip_image026
锁定策略:用来限制用户的登录次数
clip_image027
如果用户被锁定了,那么用具有权限的用户,如管理员,运行一下命令即可解锁。
Alter login 数据库名称 with password=’原密码’ unlock 注意:这里的元密码指的是被锁用户的密码。
架构:(schmea)
架构(Schema)是一组数据库对象的集合,它被单个负责人(可以是用户或角色)所拥有并构成唯一命名空间。你可以将架构看成是对象的容器。
在 SQL Server 2000 中,用户(User)和架构是隐含关联的,即每个用户拥有与其同名的架构。因此要删除一个用户,必须先删除或修改这个用户所拥有的所有数据库对象。
在 SQL Server 2005 中,架构和创建它的数据库用户不再关联,完全限定名(fully-qualified name)现在包含4个部分:server.database.schema.object
用四点表示把表示:服务器名、数据库名、用户名、对象。
1、 架构与用户的管理没有从属关系
2、 创建用户的时候可以指定默认架构,一般都推荐使用这种方法。
3、 如果不指定,则用户属于DBO,拥有所有的权限
4、 如果存在架构名,对象名访问对象是一直按在指定架构中查找。如果找不到,则在DBO中查找。
对于架构特点的理解小节如下:
1.一个架构中不能包含相同名称的对象,相同名称的对象可以在不同的架构中存在。
2.一个架构只能有一个所有者,所有者可以是用户, 数据库角色, 应用程序角色。
3.一个用数据库角色可以可以拥有一个默认架构,和多个架构。
4.多个数据库用户可以共享单个默认架构。
5.由于架构与用户独立,删除用户不会删除架构中的对象。
创建架构命令:create schema 架构名
将表放入架构中:create table 架构名.表名(姓名,年龄,………)
给架构分配权限:grant 权限 on schema::架构名 to 用户名
更改用户架构:alter user 用户名 with defaule_schema=架构名
clip_image029
显示当前用户:select user
增加角色:sp_addrole 角色名
加入用户:sp_addrolemember 角色名 用户名
查看角色中的现有用户:sp_helprolemember 角色名
把角色加入某个架构:alter authorization on schema::架构名 to 角色名
image