栏目分类
安装配置 | PLSQL | 备份恢复 | 性能调优 | 开发技术 | 资讯动态 | 考试认证 | 入门基础
排行榜
·如何直接解压.tar.gz文件
·Linux下的远程控制—VNC
·在VMware下配置显卡
·Linux挂载文件系统
·定时执行crontab使用方法详解
·ORACLE数据库备份方法
·PL/SQL入门教程
·Oracle存储过程返回结果集
·ORACLE数据库PROC编程经验介绍
·linux之间如何进行串口通讯
·ORACLE建库过程与操作
·oracle联机热备原理及rman增量备份原理
·如何实现数据库完整备份
·Oracle体系结构简介
·Oracle临时表使用补充
·从黑客角度检验oracle数据库
·Webmin--Linux下的用户管理工具
·mount使用指南
·利用Ghost复制您的Linux系统
·浅谈Oracle10G中的新事物:闪回恢复区

    您现在的位置: Linux宝库 >> Oracle >> 备份恢复 >> 文章正文
利用角色增强应用系统安全性
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/51441.html
联系:linuxmine#gmail.com
分类:[备份恢复]
  数据安全性是指保护数据以防止非法的使用,避免造成数据有意或无意的丢失、泄露或破坏。由于数据库系统中集中存放有大量的数据,这些数据又为众多用户所共享,所以安全约束是一个极为突出的问题。

  ----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.sqlcode<>0then

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

  DisconnectUsinggtr_Oracle7;

  return-1

  Endif

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

  本文来自:http://doc.linuxpk.com/51441.html

 
     最新更新
·Oracle课程描述
·Oracle数据库的灾难恢复
·Oracle8i概述
·ORACLE数据库备份技术
·Oracle数据库系统使用经验六则
·在oracle中运行OS命令
·Oracledba日常管理
·ORACLE数据库的启动和关闭
·如何在两个oracle服务器之间交换数据?
·关于恢复数据库的说明
·Re:关于oracle的备份与恢复问题
·Re:紧急求救:oracle的数据导入!
·其他数据库向Oracle8i的转移分析
·Oracle8.0使用技巧
·ORACLEFORSUNSOLARIS维护手册
·在ORACLE数据库中实现从非归档模式到归档模式的转化
·UNIX平台上分布式数据库管理的经验
·Oracle8的不安全因素及几点说明
·OracleCRM解决方案
·ORACLE8的分区管理
·回滚段问题
·利用角色增强应用系统安全性
·数据库服务器的安全
·sun上oraclecluster
·手工建立ORACLE数据库步骤
·关于SELECTN问题
·rem--创建回滚段
·RedHat6.0上安装Oracle8
·如何有效地利用数据字典
·用ORACLE*Forms和ORACLE*Graphics实现数据与图形动态显示