SQL Server数据库的安全性
SQL #sql server #安全2012-10-23 16:56
安全性是指保护数据以防止不合法的使用造成数据泄漏、更改和破坏;完整性是指数据的准确性和有效性。通俗地讲:
• 安全性( 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),并允许组内每一用户共享对同一数据对象的相同存取权限。将用户加入用户组以及将用户从用户组删除的操作应与指定用户组对哪些数据对象拥有哪些权限的操作分离。但是注意记录用户组内有哪些用户的最佳位置还是目录(或为数据库自身)。描述了一个用户组嵌套的系统,并提到“将用户分成有层次的用户组,提供了强有力的管理有着大量用户以及数据对象的大型系统的工具”。
相关文章
- SQL Server数据库设计技巧 2012/10/23
- SQL Server数据库中的快照 2012/10/23
- SQL Server关系代数中的语义 2012/10/23
- SQL Server如何正确认识触发器 2012/10/23
- SQL Server如何正确理解存储过程 2012/10/23
- SQL Server视图的认识与原理 2012/10/23
- SQL Server中最小函数依赖集 2012/10/23
- Transact-SQL中的一些命名规范 2012/10/22
- SQL命名与注释规范 2012/10/22
- SQL编写规范 2012/10/22