您的位置:首页 > 数据库

秣马厉兵——SQL数据库安全(一)

2009-06-20 04:03 141 查看
IT界有一句话“硬盘有价,数据无价!”,我奉之为经典。信息时代的今天,有效信息的收集、分析、利用、储存、安全是IT信息产业发展过程中相当重要的环节,对于企业的发展、壮大来说是不可或缺的,因此对于数据信息 的存储和安全就有相应的要求。如此我就来向大家介绍一下保证SQL数据库安全的的一些知识。 数据库安全分为四个大块: 一、用户安全 二、存储安全 三、网络传输安全 四、 数据加密安全 要对数据库进行安全管理实现要对数据库进行规范的如下,我先来介绍一下规范数据库 *规范数据库 当我们收集到许多有效信息后,需要对这些杂乱的信息进行一下规范。这样多的目的很简单:保证数据的有效性和合法性!!!这需要用到约束来维护数据的完整性。数据库的完整性有域完整性、实体完整性、引用完整性。 #对于域完整性需要用default约束和check约束来保证字段取值合法性。 #实体完整性包含primary key约束和unique约束,以此来保证记录的有效性 #用foreign key 约束保证引用完整性,即保证数据的一贯性和一致性。 接下来我来说一下这些约束的具体使用方法和作用! @、default约束 作用:默认值绑定 实例:1 创建新表默认年龄为25 如下图:出入记录,但是不插入年龄记录。

结果显示年龄为25。 2 修改默认绑定 如下图:修改过后在出入记录显示出默认性别为男性

@、check约束 可以使用图形界面来做check约束,暂不做介绍。 实例:创建新表设置check约束,年龄限制在20到40岁,在为该表增加一个check约束,来限制性别默认为女性。

如上图 已经成功限制年龄超出范围的记录添加。

如上图在增加一条只允许女性记录的check约束后,加入一条男性的记录就报错啦,与check约束的性别约束相冲突。 @、主键约束 作用:保证表中字段的记录唯一性,不允许为空,以此统一管理数据。 实例:创建新表设置ID为主键,插入没有ID号的记录。

如图所示,插入失败,不允许空值。 @、unique约束 作用:保证字段不重复 @、外键约束 作用:实现多个表的级联删除以及级联更新 实例:创建两个表部门表和员工表,为员工表设定外键为部门ID create table 部门表 (部门id int not null primary key, uname varchar(8), 电话 varchar(11)) create table 员工表 (员工id int not null primary key, 姓名 varchar(8), 部门id int foreign key references 部门表(部门id)) sp_helpconstraint 员工表 ——显示员工表的所有约束 alter table 员工表 drop constraint fk_部门id ——删除约束 alter table 员工表 add constraint fk_部门id foreign key (部门id) references 部门表(部门id) on delete cascade on update cascade 重新使用命令使用级联删除和级联更新 除了这五个约束之外还有比如可编程性(默认值)以及规则来全方面的约束数据表。我就不在过多的介绍啦! 进入下一个重点:数据库服务器的安全 这个讲的事服务器本身的安全,它又分为载体安全性和物理安全性。我们来分别论述。 载体安全性分为两种1、操作系统的安全性 2、应用程序的安全性 其中对操作系统安全性要求较高,我们需要为其安装所有的安全补丁、正版的杀毒软件,要经常使用注册表和组策略对操作系统进行日常维护! 物理安全性针对的事服务器本身的管理环境这就需要公司本身对其实施行政手段啦,我就不做过多的论述啦! !!!!!!!!!!!!! 一、用户安全 要保证服务器的安全,对用户的管理是在正常不过的事啦! 要求我们对用户进行限制。 用户分为两大种类:1、windows本地用户 2、SQL SERVER用户 这也就需要使用两种不同的身份验证方式啦!1windows验证 2 混合身份验证 3 SQL SERVER验证 两者的不同在于windows验证只验证windows用户 混合身份验证则验证SQL SERVER用户和windows用户。有一点很重要的只要是SQL SERVER用户 一定就是windows用户,SQL SERVER验证灵活,但不安全。 我们先来创建windows用户,并且对这个用户进行分配权限和删除权限的操作。 首先创建windows用户,叫做“Jim”,然后在SQL服务器上打开XP_cmdshell 特权模式,用于在SQL环境下添加windows用户,路径如下图



选择“功能的外围应用配置器”

勾选 “启用XP_cmdshell” 然后我们开始进行运作

xp_cmdshell 'net user Jim Ccjsj1200\add' 建立Jim用户(windows之前要创建这个用户),使SQL识别该windows用户 create login [beijing\Jim] from windows with default_database=master 创建该用户的登录名 create user Jim for login [beijing\Jim] 使Jim用户成为SQL数据库的合法用户

为Jim用户添加浏览check1表的权限,然后开始测试,用Jim用户登陆服务器,运行SQL SERVER



正如所料,Jim用户只能查看check1的信息,不能进行其他的操作。成功完成测试。 删除权限,删除登陆用户!

对于用户限制我们还可以使用组策略来进行限制。



对于这些限制相信大家都很熟悉,我就不在阐述啦!唯一需要说明是当用户被锁定后需要用这条命令进行解锁,如下 alter login 用户名 with password=‘密码’unlock login 即可! !!!!!!架构 应用架构概念可以更好的管理用户。 架构使用四点法:服务器名。数据库名。用户名。对象。 值得注意是1、架构与用户管理是没有从属关系的 2、我们只需要在创建用户时制定用户的架构就可以规范用户管理啦。 3、不指定架构就会默认属于dbo 4、若存在架构名。对象名,访问时则直接在指定架构中访问,反之,则在dbo中查找 我们来创建一个架构

架构成功建立,并且加入一个用户来应用架构中的内容。 !!!!!!!角色 角色:它的作用就相当于windows中的组,权限相同的用户集合 它分为两个部分服务器角色和数据库角色。 做个实例吧 ,创建一个角色,一用户加入其中,并且对test架构有查询权限。

进行测试一下吧 Yangyang登录进来



正常显示员工表的内容

拒绝对无权限用户的非法操作。 至此数据库安全性的用户安全暂告一段落,接下来我们讲数据存储安全。 请参见下一篇博客。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息