当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server:浅谈数据库的安全性

MSSQL
SQL Server中选出指定范围行的SQL语句写法
Microsoft SQL Server 2000安装问题集锦
修改SQL Server 2005 sa用户密码的方法
SQL Server数据库查询优化的常用方法总结
两种与SQL Server数据库交换数据的方法
Sun正式发布MySQL 5.1版 简化数据库应用
使用SQL Server 2008中对象相关性
SQL注入防御:用三种策略应对SQL注入攻击
SQL Server 2005 SP3正式版
MySQL数据库中使用GRANT语句增添新用户
讲解数据库加密技术的功能特性与实现方法
如何在SQL Server数据库中加密数据
30步检查SQL Server安全列表
在SQL Server数据库开发中的十大问题
向外扩展SQL Server 实现更高扩展性
SQL Server 2005 五个动态管理对象
从算法入手讲解SQL Server的典型示例
如何解决SQLServer占内存过多的问题
SQL指令植入式攻击的危害及其防范措施
SQL游标原理和使用方法

MSSQL 中的 SQL Server:浅谈数据库的安全性


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 152 ::
收藏到网摘: n/a

安全性( security )保护数据以防止不合法用户故意造成的破坏;

完整性( integrity )保护数据以防止合法用户无意中造成的破坏;

或者简单地说就是:安全性确保用户被允许做其想做的事情;完整性确保用户所做的事

情是正确的。

当然这两个概念也有相似点:系统应对用户不能违背的约束了如指掌;这些约束必须用

合适的语言给出(通常由DBA),而且必须通过系统日志进行维护; DBMS必须监控用户的操作以确定约束发挥了效用概述安全性问题涉及许多方面,如:

• 法律、社会以及伦理问题(例如:请求者对其请求的信息是否具有合法权利?);

• 物理控制(例如:计算机或终端所在房间是否上锁或受到保护?);

• 政策问题(例如:拥有系统的企业如何控制使用者对数据的存取?);

• 可操作性问题(例如:如果某个密码方案被采用,密码自身又如何保密?);

• 硬件控制(例如:处理单元是否具备安全特性,如存储保护键或保护操作模式?);

• 操作系统支持(例如:底层操作系统在退出时是否抹去了主存和磁盘上的内容?);

最后还包括

数据库系统需专门考虑的问题(例如:数据库系统是否具有数据所有权的概念?)。

现代的DBMS通常采用自主存取控制和强制存取控制这两种方法来解决安全性问题,有的只提供其中的一种方法,有的两种都提供。无论采用哪种存取控制方法,需要保护的数据单元或数据对象包括从整个数据库到某个元组的某个部分。两者的区别为:

• 在自主存取控制方法(discretionary control)中,用户对不同的数据对象具有不同的存取权限(也称为优先权),而且没有固有的关于哪些用户对哪些数据对象具有哪些存取权限

的限制(例如:用户U1能看到A但看不到B,而用户U2能看到B但看不到A)。因此自主存取控制非常灵活。

• 在强制存取控制方法(mandatory control) 中,每一个数据对象被标以一定的密级

(classification level),每一个用户也被授予一个许可证级别(clearance level)。对于任意一个对象,只有具有合法许可证的用户才可以存取。因此,强制存取控制本质上具有分

层特点,且相对比较严格(例如:如果用户U1能看到A但看不到B,这说明B的密级高于A,因此不存在用户U2能看到B但看不到A)。不管我们采用的是自主存取控制方法还是强制存取控制方法,所有有关哪些用户可对哪些数据对象进行操作的决定都是政策决定,这显然超出了DBMS的权限,DBMS只是实施这些决定。这就要求:

• 政策决定的结果( a)需为系统所知(这可通过某一特定的定义语言的语句来实现);

b)需被系统记住(这可通过将它们保存在目录中实现)。

• 必须采用一定的方式检查存取请求是否违背目录中适用的安全性约束(通常用“存取请

求”表示涉及的请求操作、请求对象以及请求用户),这主要通过DBMS的安全性子系(security subsystem)或者授权子系统(authorization subsystem)实现。

• 为了决定哪些安全性约束适用于给定的存取请求,系统必须能识别请求的来源,也就是

请求用户。因此,当用户登录系统时必须给出用户ID以及口令( password )。口令只能为系统所知,并用以保证用户ID的合法性。

关于最后一点,注意一定数量的不同用户可能共享同一ID。这种情况下系统支持用户组(user group),并允许组内每一用户共享对同一数据对象的相同存取权限。将用户加入用户组以及将用户从用户组删除的操作应与指定用户组对哪些数据对象拥有哪些权限的操作分离。但是注意记录用户组内有哪些用户的最佳位置还是目录(或为数据库自身)。描述了一个用户组嵌套的系统,并提到“将用户分成有层次的用户组,提供了强有力的管理有着大量用户以及数据对象的大型系统的工具”。