1.物理层的安全性
数据库所在节点必须在物理上得到可靠的保护。
2.用户层的安全性
哪些用户可以使用数据库,使用数据库的哪些数据对象,具有什么样的权限等。
3.操作系统层的安全性
数据库所在的主机的操作系统的弱点将可能提供恶意攻击数据库的入口。
4.网络层的安全性
Oracle 9i数据库主要是面向网络提供服务,因此,网络软件的安全性和网络数据传输的安全性至关重
要。
5.数据库系统层的安全性
通过对用户授予特定的访问数据库对象的权利的办法来确保数据库系统层的安全。
Oracle数据库系统在利用角色管理数据库安全性方面采取的基本措施有: 通过验证用户名称和口令,防止非Oracle用户注册到Oracle数据库,对数据库进行非法存取操作。授予用户一定的权限,限制用户操纵数据库的权力。授予用户对数据库实体的存取执行权限,阻止用户访问非授权数据。提供数据库实体存取审计机制,使数据库管理员可以监视数据库中数据的存取情况和系统资源的使用情况。采用视图机制,限制存取基表的行和列集合。
ORACLE数据库系统在实现数据库安全性管理方面采取的基本措施有:通过验证用户名称和口令,防止非ORACLE用户注册到ORACLE数据库,对数据库进行非法存取操作。授予用户一定的权限,例如CONNECT,RESOURCE等,限制用户操纵数据库的权力。授予用户对数据库实体(如表、表空间、过程等)的存取执行权限,阻止用户访问非授权数据。提供数据库实体存取审计机制,使数据库管理员可以监视数据库中数据的存取情况和系统资源的使用情况。采用视图机制,限制存取基表的行和列集合。
在实际应用中,许多系统往往采用假用户(即非数据库用户)身份来管理,而真实用户的身份和登录口令就隐藏在应用系统中,或经过各种压缩加密等处理的配置文件中。但这样往往留下隐患,只要从分析应用程序入手,最终会分析出系统使用的数据库用户和口令,那么其安全性也就消失了。另一方面,系统代码是程序员写出来的,如果程序员有破坏意图,这种模式没有一丝的安全,因为他通过自己掌握的代码不经分析就轻而易举的获得登录用的数据库用户和口令。
而采用真实数据库用户,存在着权限分配上的难度,特别是用户数和应用表数都很多时,这时必然要使用角色来管理应用权限的分配。当然不能直接将权限或角色直接分配给用户,否则用户可以不同过应用系统,而采用SQL*PLUS等前端工具进入系统,进行一些没有经过应用系统检查的操作,产生的结果可能不符合应用逻辑。
我们在实践中发现,可以采用另一种方式利用角色功能,来防止上面出现的安全“漏洞”。在这种方式下,用户采用自己的标识和口令注册,但在未得到授权的角色前,是没有操纵数据库的任何权限。而授权用户使用的角色是埋在应用程序中的,只有应用程序才知道角色的名称和口令,从而激活角色,使用户拥有相应的权限。在应用系统之外,用户可以连接到ORACLE,但没有激活相应的角色,他是不能做任何事情的,而开发人员不知道用户的标识和口令,他没有办法登录到ORACLE,即使他能够推算出角色的标识和口令。
下面根据一个例子给出具体的实现过程:
我们假设用户sensory在工作中能够对工资表system.userInfo(system是表userInfo的拥有者)有查询和更新的权限,而这些权限我们不直接授予sensory,而是构造一个角色(比如考勤员checkerrole),这个角色恰好适合于sensory,再将角色授予sensory,但角色在激活时需要口令,该口令不对sensory公开。每个用户需要一个缺省的角色,是用户连接到ORACLE时的缺省角色。这个角色只有CONNECT权限,我们假为defaultrole。
1 Oracle是否连通;PL/SQL打开后输入:select sysdate from dual;如下图1:
图1
2创建userInfo表(userName ,userPwd)
3 设定各种角色,及其权限:图2
CREATE ROLE checkerrole IDENTIFIED BY xm361001;
CREATE ROLE defaultrole IDENTIFIED BY defaultrole;
GRANT UPDATE ON Sys.Userinfo TO checkerrole;
GRANT CONNECT TO defaultrole;
图2
4 创建用户:图3
CREATE USER sensory IDENTIFIED BY sensory;
图3
使用Oracle 9i的SQL*Plus运行可见入下图:图4
图4
5 授权:图5
GRANT checkerrole TO sensory;
GRANT defaultrole TO sensory;
图5
6 设定用户缺省的角色:图6
ALTER USER sensory DEFAULT ROLE defaultrole;
图6
7 激活角色: 图7
SET ROLE checkerrole IDENTIFIED BY xm361001;
图7
8 显示用户拥有的角色: 图8
图8
操作成功后,sensory拥有checkerrole的权限。
下图是MSSQLSERVER2000的联机帮助关于目录管理的说明:详见文档。图9
图9
本章的说明一个实例简单实用,是以后应用开发经常用到的一种思想。所以采用。
[1] 邵佩英 分布式数据库系统及其应用科学出版社 2005年3月
[2] 宋宝华 数据库设计三大范式应用实例剖析 http://www.xker.com/Html/sjk/Mssql/20051205110.html
[3] 萨师煊 数据库系统概论(第三版) 高等教育出版社 2004年1月
[4] http://www.chinadb.org/exam/TestListSubject.asp?chap=14
[5] 蒋年德 分布式数据库技术在人口管理信息系统中的应用
[6] Ryan K. Stephens, Ronald R. Plew , Bryan Morgan , Jeff Perkins Teach Yourself SQL in 21 Days
[7] Ozsu.
Principles of Distributed Database Systems. 2002年6月
[8] http://www.retroy.com/cgi-bin/bbs2/
[9] 任 怡 吴泉源 贾 焰 韩伟红 管剑波. 事务处理技术研究综述. 计算机研究与发展. 2005年42(10)
[10] 沈镇林 姚国祥.分布式事务处理的若干关键技术计算机科学. 2001Vo1.28
[11] 张剑王炎修 刘倩.关于分布式数据库事务处理机制的探讨山东科技大学学报(自然科学版).Jun.200
[12] 刘发军李冠宇 张俊 谢益武. 基于角色的分布式事务处理模型设计微机发展. Jun.2005
[13] 贾代平范洪达. 基于日志的数据恢复及其在Oracle中的实现. 计算机工程与设计 2004年12月
[14] 魏茂喜贺贵明 吴元保 事务管理器的事务恢复处理 微型机与应用 2004年第4期
[15] 王劲波 薛永生 徐勋民 一种基于加锁粒度的分布式高优先级两段锁的并发控制模型
[16] http://www.GamVan.com
[17] http://www.ibm.com
[18] http://www.mircrosoft.com
[19] 郑纬民胡进锋 代亚非 袁泉 马永泉 宁宁 董海涛 洪春辉 张桦楠. 对等计算研究概论
[20] 刘学平 http://xx.5i2.net/n/2005-4/18132518338.shtml 计算机世界日报
[21] http://www.oracle.com