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

本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/361400,如需转载请自行联系原作者
相关文章
|
2天前
|
Oracle 关系型数据库 网络安全
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
|
3月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
187 11
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
4月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
1月前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
173 42
|
2天前
|
SQL 关系型数据库 MySQL
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。
|
26天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
130 25
|
14天前
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。

热门文章

最新文章

推荐镜像

更多