分享
 
 
 

在ORACLE中利用角色增强应用系统安全性

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

----数据安全性是指保护数据以防止非法的使用,避免造成数据有意或无意的丢失、泄露或破坏。由于数据库系统中集中存放有大量的数据,这些数据又为众多用户所共享,所以安全约束是一个极为突出的问题。

----ORACLE数据库系统在实现数据库安全性管理方面采取的基本措施有:

通过验证用户名称和口令,防止非ORACLE用户注册到ORACLE数据库,对数据库进行非法存取操作。

授予用户一定的权限,例如CONNECT,RESOURCE等,限制用户操纵数据库的权力。

授予用户对数据库实体(如表、表空间、过程等)的存取执行权限,阻止用户访问非授权数据。

提供数据库实体存取审计机制,使数据库管理员可以监视数据库中数据的存取情况和系统资源的使用情况。

采用视图机制,限制存取基表的行和列集合。

----在实际应用中,许多系统往往采用假用户(即非数据库用户)身份来管理,而真实用户的身份和登录口令就隐藏在应用系统中,或经过各种压缩加密等处理的配置文件中。但这样往往留下隐患,只要从分析应用程序入手,最终会分析出系统使用的数据库用户和口令,那么其安全性也就消失了。另一方面,系统代码是程序员写出来的,如果程序员有破坏意图,这种模式没有一丝的安全,因为他通过自己掌握的代码不经分析就轻而易举的获得登录用的数据库用户和口令。

----而采用真实数据库用户,存在着权限分配上的难度,特别是用户数和应用表数都很多时,这时必然要使用角色来管理应用权限的分配。当然不能直接将权限或角色直接分配给用户,否则用户可以不同过应用系统,而采用SQL*PLUS等前端工具进入系统,进行一些没有经过应用系统检查的操作,产生的结果可能不符合应用逻辑。

----我们在实践中发现,可以采用另一种方式利用角色功能,来防止上面出现的安全“漏洞”。在这种方式下,用户采用自己的标识和口令注册,但在未得到授权的角色前,是没有操纵数据库的任何权限。而授权用户使用的角色是埋在应用程序中的,只有应用程序才知道角色的名称和口令,从而激活角色,使用户拥有相应的权限。在应用系统之外,用户可以连接到ORACLE,但没有激活相应的角色,他是不能做任何事情的,而开发人员不知道用户的标识和口令,他没有办法登录到ORACLE,即使他能够推算出角色的标识和口令。

----下面根据一个例子给出具体的实现过程:

----我们假设用户xiaoli在工作中能够对工资表account.paytable(account是表paytable的拥有者)有查询和更新的权限,而这些权限我们不直接授予xiaoli,而是构造一个角色(比如考勤员checkerrole),这个角色恰好适合于xiaoli,再将角色授予xiaoli,但角色在激活时需要口令,该口令不对xiaoli公开。每个用户需要一个缺省的角色,是用户连接到ORACLE时的缺省角色。这个角色只有CONNECT权限,我们假为defaultrole。

----下面给出具体的操作SQL:

(1)设定各种角色,及其权限

CREATE ROLE checkerrole IDENTIFIEDBYxm361001;

CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;

GRANTSELECT,UPDATEONaccount.paytableTOcheckerrole;

GRANTCONNECTTOdefaultrole;

(2)创建用户

CREATEUSERxiaoliIDENTIFIEDBYxiaoli;

(3)授权

GRANTcheckerroleTOxiaoli;

GRANTdefaultroleTOxiaoli;

(4)设定用户缺省的角色

ALTERUSERxiaoliDEFAULTROLEdefaultrole;

(5)注册过程

CONNECTxiaoli/xiaoli@oracle

此时用户只有其缺省角色的权限。

(6)激活角色

SETROLEcheckerroleIDENTIFIEDBYxm361001;

----操作成功后,xiaoli拥有checkerrole的权限。

----这里的角色和口令是固定的,在应用系统中可以由应用管理人员自行设置则更为方便安全。

----上面给出的是在SQL*PLUS下的操作过程,在实际中还是要与应用系统联系在一起。我们不讨论用户和角色的创建怎样在应用开发语言中的实现过程,在这里给出用户登录时的POWERBUILDER代码,理解了这个例子,前者的实现也不难。

Transactiongtr_Oracle7

gtr_Oracle7=createTransaction

gtr_Oracle7.DBMS="O73"

gtr_Oracle7.database=""

gtr_Oracle7.UserID=ls_UserID

//通过对话框取得的用户标识

gtr_Oracle7.DBPass=ls_Passwd

//通过对话框取得的用户口令

gtr_Oracle7.LogID=ls_UserID

gtr_Oracle7.LogPass=ls_Passwd

gtr_Oracle7.ServerName="@oracle"

//在SQL*NET中创建的别名

gtr_Oracle7.DBParm=""

ConnectUsinggtr_Oracle7;

ifgtr_Orale7.sqlcode=-1then

MessageBox("错误","没有注册到数据库系统!")

return-1

endif

//ls_Role和ls_RolePasswd为从配置文件中

或通过其它途径获得的用户的角色名和口令

ExecuteImmediate"SETROLE"+ls_Role+

"IDENTIFIEDBY"+ls_RolePasswd

Usinggtr_Oracle7;

Ifgtr_Oracle7.sqlcode0then

MessageBox("错误","没有激活相应的数据库系统角色!")

DisconnectUsinggtr_Oracle7;

return-1

Endif

Return1//成功注册并激活角色!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有