技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  讲解oracle数据库提供的多种安全性措施 (1)     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:500次  录入:管理员--2008-05-05  
 

oracle的安全措施主要有三个方面,一是用户标识和鉴定;二是授权和检查机制;三是审计技术(是否使用审计技术可由用户灵活选择);除此之外,oracle还允许用户通过触发器灵活定义自己的安全性措施。

一、用户标识和鉴定

在oracle中,最外层的安全性措施是让用户标识自己的名字,然后由系统进行核实。oracle允许用户重复标识三次,如果三次未通过,系统自动退出。

二、授权与检查机制

oracle的权限包括系统权限和数据库对象的权限两类,采用非集中的授权机制,即dba负责授予与回收系统权限,每个用户授予与回收自己创建的数据库对象的权限。

oracle允许重复授权,即可将某一权限多次授予同一用户,系统不会出错。oracle也允许无效回收,即用户没有某种权限,但回收此权限的操作仍算成功。

1. 系统权限

oracle提供了80多种系统权限,如创建会话、创建表、创建视图、创建用户等。dba在创建一个用户时需要将其中的一些权限授予该用户。

oracle支持角色的概念。所谓角色就是一组系统权限的集合,目的在于简化权限管理。oracle除允许dba定义角色外,还提供了预定义的角色,如connect,resource和dba。

具有connect角色的用户可以登录数据库,执行数据查询和操纵。即可以执行alter table,create view,create index,drop table,drop view,drop index,grant,revoke,insert,select,update,delete,audit,noaudit等操作。

resource角色可以创建表,即执行create table操作。创建表的用户将拥有对该表的所有权限。

dba角色可以执行某些授权命令,创建表,对任何表的数据进行操纵。它涵盖了前两种角色,此外还可以执行一些管理操作,dba角色拥有最高级别的权限。

例如dba建立一用户u1后,欲将alter table,create view,create index,drop table,drop view,drop index,grant,revoke,insert,select,update,delete,audit,noaudit等系统权限授予u1,则可以只简单地将connect角色授予u1即可:

grant connect to u1;

这样就可以省略十几条grant语句。

2. 数据库对象的权限

在oracle中,可以授权的数据库对象包括基本表、视图、序列、同义词、存储过程、函数等,其中最重要的是基本表。

对于基本表oracle支持三个级别的安全性:表级、行级和列级。

(1)表级安全性

表的创建者或者dba可以把表级权限授予其他用户,表级权限包括:

alter:修改表定义

delete:删除表记录

index:在表上建索引

insert:向表中插入数据记录

select:查找表中记录

update:修改表中的数据

all:上述所有权限

表级授权使用grant和revoke语句。

(2)行级安全性

oracle行级安全性由视图实现。用视图定义表的水平子集,限定用户在视图上的操作,就为表的行级提供了保护。视图上的授权与回收与表级完全相同。

例如,只允许用户u2查看student表中信息系学生的数据,则首先创建信息系学生的视图s_is,然后将该视图的select权限授予u2用户。

(3)列级安全性

oracle列级安全性可以由视图实现,也可以直接在基本表上定义。

用视图定义表的垂直子集就可以实现列级安全性,方法与上面类似。

直接在基本表上定义和回收列级权限也是使用grant和revoke语句。目前oracle的列级权限只有update,回收列级update权限时,oracle不允许一列一列地回收,只能回收整个表的update权限。例如,

grant update(sno,cno)on sc to u2;

把对sc表中sno列和cno列的update权限授予u2用户。

revoke update on sc from u2;

回收了u2用户对sc表中sno列和cno列的update权限。

在oracle中,表、行、列三级对象自上而下构成一个层次结构,其中上一级对象的权限制约下一级对象的权限。例如当一个用户拥有了对某个表的update权限,即相当于在表的所有列都拥有了update权限。

oracle对数据库对象的权限采用分散控制方式,允许具有with grant option的用户把相应权限或其子集传递授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先。

oracle把所有权限信息记录在数据字典中,当用户进行数据库操作时,oracle首先根据数据字典中的权限信息,检查操作的合法性。在oracle中,安全性检查是任何数据库操作的第一步。

三、oracle的审计技术

在oracle中,审计分为用户级审计和系统级审计。用户级审计是任何oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的sql操作。

系统级审计只能由dba设置,用以监测成功或失败的登录要求、监测grant和revoke操作以及其他数据库级权限下的操作。

oracle的审计功能很灵活,是否使用审计,对哪些表进行审计,对哪些操作进行审计等都可以由用户选择。为此,oracle提供了audit语句设置审计功能,noaudit语句取消审计功能。设置审计时,可以详细指定对哪些sql操作进行审计。例如,

对修改sc表结构或数据的操作进行审计可使用如下语句:

audie alter,update on sc;

取消对sc表的一切审计可使用如下语句:

noaudit all on sc;

在oracle中,审计设置以及审计内容均存放在数据字典中。其中审计设置记录在数据字典表sys.tables中,审计内容记录在数据字典表sys.audit_trail中。

四、用户定义的安全性措施

除了系统级的安全性措施外,oracle还允许用户用数据库触发器定义特殊的更复杂的用户级安全措施。例如,规定只能在工作时间内更新student表,可以定义如下触发器,其中sysdate为系统当前时间: create or replace trigger secure_student

before insert or update or delete

on student

begin

if (to_char (sysdate, 'dy') in ('sat', 'sun'))

or (to_number (sysdate, 'hh24') not between 8 and 17)

then

raise_application_error

(-20506,

'you may only change data during normal business hours.'

);

end if;

end;

触发器一经定义便存放在数据字典中。用户每次对student表执行insert,update或delete操作时都会自动触发该触发器,由系统检查当时的系统时间,如果是周六或周日,或者不是8点至17点,系统会拒绝执行用户的更新操作,并提示出错信息。

类似的,用户还可以利用触发器进一步细化审计规则,使审计操作的粒度更细。

综上所述,oracle提供了多种安全性措施,提供了多级安全性检查,其安全性机制与操作系统的安全机制彼此独立,数据字典在oracle的安全性授权和检查以及审计技术中起着重要作用。

 
 
上一篇: 循序渐进讲解oracle数据库的完整性概念    下一篇: 带你快速了解oracle数据库提供的恢复机制
  相关文档
循序渐进讲解oracle数据库的hash join (1) 04-30
Oracle中有没有系统数据库? 09-29
sun oracle数据库机 可为企业增效10倍 02-03
在单机上创建物理oracle数据库9i standby 07-17
关于Oracle的虚拟专有数据库特性探讨 04-11
教你在Oracle中实现SELECT TOP N的方法 06-03
如何用组来保证"oracle"数据库的安全 01-29
通过分析SQL语句的执行计划优化SQL(一) 08-05
几种解决互联网应用程序开发的好方法 (1) 03-28
解析Oracle的操作系统项目Raw Iron计划 09-01
分析Oracle下导出某用户所有表的方法 05-13
Oracle中查找和删除重复记录方法简介 04-11
Oracle如何对CLOB行字段来执行全文检索 06-10
细化解析Oracle中限制返回结果集的大小 09-01
改变优化参数来适应库缓冲区中sql的变化 03-14
快速了解Oracle9i中的一个特殊等待事件 09-29
迅速安装Linux与Oracle数据库步骤精讲 07-07
关于Oracle 9i数据库密码重用规则分析 04-11
使用t-sql强制所有用户退出当前数据库 07-17
轻松掌握oralce数据库常用预定义的例外 04-03
返回首页 | 关于我们 | J网章程 | JSP空间 | 免责声明 | 常见问题 | JSP空间操作手册

@2005-2012福建JSP技术网 版权所有 闽ICP备09012882号
技术电话:13616026886 谢宁松
邮箱:fjjsp @ vip.163.com 站长QQ,点击这里给我发消息