详解Oracle数据库安全

随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题,更是被很多人所熟悉的,数据安全已经不再是以前的“老生长谈”,也更不是以前书本上那些“可望不可及”的条条框框。同时,安全问题也是现今最为热门的话题,也是企业比较关心的问题,可见安全问题的重要性,那就大家一起来探讨一下Oracle数据库安全问题。

以下就数据库系统不被非法用户侵入这个问题作进一步的阐述。

一、组和安全性:

在操作系统下建立用户组也是保证数据库安全性的一种有效方法。Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的几种方法:

(1)在安装Oracle Server前,创建数据库管理员组(DBA)而且分配root和Oracle软件拥有者的用户ID给这个组。DBA能执行的程序只有710权限。在安装过程中SQL*DBA系统权限命令被自动分配给DBA组。

(2)允许一部分Unix用户有限制地访问Oracle服务器系统,增加一个由授权用户组的Oracle组,确保给Oracle服务器实用例程Oracle组ID,公用的可执行程序,比如SQL*Plus,SQL*forms等,应该可被这组执行,然后该这个实用例程的权限为710,它将允许同组的用户执行,而其他用户不能。

(3)改那些不会影响数据库安全性的程序的权限为711。(注:在我们的系统中为了安装和调试的方便,Oracle数据库中的两个具有DBA权限的用户Sys和System的缺省密码是manager。为了您数据库系统的安全,我们强烈建议您该掉这两个用户的密码,具体操作如下:

在SQL*DBA下键入:

alter user sys indentified by password;

alter user system indentified by password;

其中password为您为用户设置的密码。

二、Oracle服务器实用例程的安全性:

以下是保护Oracle服务器不被非法用户使用的几条建议:

(1) 确保$ORACLE_HOME/bin目录下的所有程序的拥有权归Oracle软件拥有者所有;

(2) 给所有用户实用便程(sqiplus,sqiforms,exp,imp等)711权限,使服务器上所有的用户都可访问Oracle服务器;

(3) 给所有的DBA实用例程(比如SQL*DBA)700权限。Oracle服务器和Unix组当访问本地的服务时,您可以通过在操作系统下把Oracle服务器的角色映射到Unix的组的方式来使用Unix管理服务器的安全性,这种方法适应于本地访问。

1、在Unix中指定Oracle服务器角色的格式如下:

ora_sid_role[_dla]

其中 sid 是您Oracle数据库的oracle_sid;

role 是Oracle服务器中角色的名字;

d (可选)表示这个角色是缺省值;a (可选)表示这个角色带有WITH ADMIN选项,您只可以把这个角色授予其他角色,不能是其他用户。

2、以下是在/etc/group文件中设置的例子:

ora_test_osoper_d:NONE:1:jim,narry,scott

ora_test_osdba_a:NONE:3:pat

ora_test_role1:NONE:4:bob,jane,tom,mary,jim

bin: NONE:5:root,oracle,dba

root:NONE:7:root

词组“ora_test_osoper_d”表示组的名字;词组“NONE”表示这个组的密码;数字1表示这个组的ID;接下来的是这个组的成员。前两行是Oracle服务器角色的例子,使用test作为sid,osoper和osdba作为Oracle服务器角色的名字。osoper是分配给用户的缺省角色,osdba带有WITH ADMIN选项。为了使这些数据库角色起作用,您必须shutdown您的数据库系统,设置Oracle数据库参数文件initORACLE_SID.ora中os_roles参数为True,然后重新启动您的数据库。如果您想让这些角色有connect internal权限,运行orapwd为这些角色设置密码。当您尝试connect internal时,您键入的密码表示了角色所对应的权限。

3、SQL*DBA命令的安全性:

如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些命令被授予了特殊的系统权限。

(1) startup

(2) shutdown

(3) connect internal

4、数据库文件的安全性:

Oracle软件的拥有者应该这些数据库文件($ORACLE_HOME/dbs/*.dbf)设置这些文件的使用权限为0600:文件的拥有者可读可写,同组的和其他组的用户没有写的权限。

Oracle软件的拥有者应该拥有包含数据库文件的目录,为了增加安全性,建议收回同组和其他组用户对这些文件的可读权限。

5、网络安全性:

当处理网络安全性时,以下是额外要考虑的几个问题。

(1) 在网络上使用密码在网上的远端用户可以通过加密或不加密方式键入密码,当您用不加密方式键入密码时,您的密码很有可能被非法用户截获,导致破坏了系统的安全性。

(2) 网络上的DBA权限控制您可以通过下列两种方式对网络上的DBA权限进行控制:

A 设置成拒绝远程DBA访问;

B 通过orapwd给DBA设置特殊的密码。[nextpage]

三、建立安全性策略:

1、系统安全性策略

(1)管理数据库用户:数据库用户是访问Oracle数据库信息的途径,因此,应该很好地维护管理数据库用户的安全性。按照数据库系统的大小和管理数据库用户所需的工作量,数据库安全性管理者可能只是拥有create,alter,或drop数据库用户的一个特殊用户,或者是拥有这些权限的一组用户,应注意的是,只有那些值得信任的个人才应该有管理数据库用户的权限。

(2) 用户身份确认:数据库用户可以通过操作系统,网络服务,或数据库进行身份确认,通过主机操作系统进行用户身份认证的优点有:

A 用户能更快,更方便地联入数据库;

B 通过操作系统对用户身份确认进行集中控制:如果操作系统与数据库用户信息一致,Oracle无须存储和管理用户名以及密码;

C 用户进入数据库和操作系统审计信息一致。

(3) 操作系统安全性

A 数据库管理员必须有create和delete文件的操作系统权限;

B 一般数据库用户不应该有create或delete与数据库相关文件的操作系统权限;

C 如果操作系统能为数据库用户分配角色,那么安全性管理者必须有修改操作系统帐户安全性区域的操作系统权限。

2、数据的安全性策略:

数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该有一谨慎的安全性策略,用它来维护对数据对象访问的有效控制。

3、用户安全性策略:

时间: 2024-10-06 04:55:50

详解Oracle数据库安全的相关文章

详解ORACLE SEQUENCE用法_oracle

在oracle中sequence就是序号,每次取的时候它会自动增加.sequence与表没有关系. 1.Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限. 创建语句如下: CREATE SEQUENCE seqTest INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXvalue -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; --设置缓存ca

详解Oracle RAC的Failover

Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换. Oracle 10g RAC 的Failover 可以分为3种: 1. Client-Side Connect time Failover 2. TAF 3. Service-Side TAF 注意事

详解oracle的跟踪文件和转储命令

一.Oracle跟踪文件 Oracle跟踪文件分为三种类型: 一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消息等.在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系.后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.LOG. 另一种类型是DBWR.LGWR.SMON等后台进程创建的后台跟踪文件.后台跟踪文件根据后台进程运行

详解Oracle建立用户和对用户的管理

# 合法的Oracle标识符号 1.不能是保留关键字 2.必须使用1到30个字符.数据库的名称最多是8个字符. 3.必须以数据库字符集中的字母字符开头 4.只能够包含数据库字符集中的字母字符,以及以下字符:#.$._,另外数据库链接可以包含@符号和'.'(句号) 5.不能包含引号 # 建立用户 create user angeos identified by angeos; 建立了用户:angeos,密码为:angeos # 对用户授权 grant connect,resource to ang

详解Oracle数据库中不同的恢复特性

由于Oracle数据库备份有三种方式,每种方式具有不同的恢复特性,因此应集成数据库与文件系统备份,集成逻辑备份和物理备份. 一.备份策略 1.在操作系统级,使用大容量磁盘阵列,通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘.这样,当某个磁盘出现物理损坏时,操作系统会自动引发映像磁盘来取代失效的磁盘,保证数据库的正常运行. 由于我们使用的是双服务器,因此在另一服务器上保留一个备份数据库.备份数据库与正在使用的数据库具有相同的参数状态,这样在数据库故障中,只需作必须的最少恢复,最大限度地缩

详解Oracle的几种分页查询语句

分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40和RN >= 21控制分页查询的每页的范围. 上面给出的这个分页查询语句,在大多数情况拥有较高的效率.分页的目的就是控制输出结果集大小,

详解oracle顺序文件上的索引

研究索引结构,我们首先来考虑最简单的一种:由一个称为数据文件的排序文件得到另一个称为索引文件的文件,而这个索引文件由键-指针对组成.在索引文件中查找键K通过指针指向数据文件中查找键为K的记录.索引可以是"稠密的",即数据文件中每个记录在索引文件中都设有一个索引项:索引也可以是"稀疏的",即数据文件中只有某些记录在索引文件中表示出来,通常为每个数据块在索引文件中设一个索引项. 1.顺序文件 一种最简单的索引结构要求文件按索引的属性排序,这样的文件称为顺序文件.当查找键

详解Oracle的SQL语句处理过程

在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句. 本节介绍了SQL语句处理的基本过程,主要包括: . 查询语句处理 . DML语句处理(insert, update, delete) . DDL 语句处理(create , drop , alter , ) . 事务控制(commit, rollback) 一.SQL 语句的执行过程(SQL Statement Execution) 图3-1 概要的列出了处理和运行一个sql语句的需要各个重要阶段.在某些

详解Oracle的SYSTEM表空间的管理及备份恢复

SYSTEM表空间是Oracle数据库最重要的一个表空间,存放了一些DDL语言产生的信息以及PL/SQL包.视图.函数.过程等,称之为数据字典,因此该表空间也具有其特殊性,下面描述SYSTEM表空间的相关特性及备份与恢复.   一.SYSTEM表空间的管理 1.建议不存放用户数据,避免用户错误导致系统表空间不可用 应当为系统设定缺省的默认表空间来避免用户创建时使用系统表空间 ALTER DATABASE DEFAULT TABLESPACE tablespace_name SQL> col pr