Oracle数据库提供的多种安全性措施


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的安全性授权和检查以及审计技术中起着重要作用

本文作者:



相关阅读:
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
PHP 清除HTML代码、空格、回车换行符的函数
asp 下产生任意位数随机密码的代码
Linux操作系统的备份方法介绍
去html代码的正则 推荐" target="_blank">去html代码的正则 推荐
简要介绍SQL Server 2008新的事件处理系统
Oracle数据库9i在AIX环境下的性能调整
CommunityServer又称CS论坛的相关学习资料
W3C教程(8):W3C XML Schema 活动
谈谈PHP语法(2)
JDBCTM 指南:入门7-CallableStatement
在PHP中使用XML
令人期待的PHP 6.0 新语法改进及特性增强
在CentOS系统安装pop3的步骤
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 学习习近平建党95周年讲话心得 小学二年级作文450字:游银凤山庄 《今天,母亲的生日》(转载)作文600字 结婚纪念日,一个属于寒冷冬季温暖的日子。 菊花——吴泥洒作文700字 彬,我真的好爱你。 成长的足迹500字作文 如何构建自己的人脉圈子 讽刺人的话大全 现在的学生诗句比李白写的还牛,老师吐血了 第一阶段实施方案 成功人生必须养成的11好习惯 杜甫《自京赴奉先县咏怀五百字》诗歌鉴赏 小学三年级班务计划 老狗大白 最伤感的文字说说心中的痛 高中高一作文900字:香皂世界奇遇记 山水印象 常用四字祝福语(附英文) 《小英雄雨来》读后感作文150字 到革命圣地井冈山参观学习心得体会,如果一个党员没有这些精神,就不能算是一名合格党员 姐姐,我爱你知道生命最后一刻作文700字 冬季同学聚会酒会主持词 2012年关于中秋节的作文:中秋节,你快乐吗? 2014届高考第一轮复习专项检测--实用类阅读 世界环境日手抄报资料 “粗心”的语文老师——许老师200字 蹲书记作文 小学五年级作文450字:校有外星人「4」 慰问高三教师大会上的讲话 2015革命先烈董存瑞英雄事迹 《金斧、银斧和铁斧》的读后感 北京实验版《未有天才之前》教学案 生活需要坚持500字 作文传奇:让“差生”脱胎换骨的10句话作文1300字 三年级记事作文 小猪小猪真笨啊 校园角落作文 青春过去进行时 一次难忘的邮票展览 穷人西蒙之死作文800字 小学五年级作文400字:小白鸡和小黑鸡 你为什么想要换工作 创建卫生先进城区工作总结 最佳百日安全总结 假如我是电脑专家作文500字 开学啦,开学啦250字 墨客(散文诗) 初中初一作文650字:杭州之游 鲁迅语录 赢在执行读后感1500字

Copyright © 2016 phpStudy |