ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle11G新特性

oracle11G新特性

原创 Linux操作系统 作者:lhb_immortal 时间:2011-09-19 14:58:51 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE一.审计

1.    审计简介

 

1)       什么是审计及作用

审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin /$ORACLE_SID/adump/)或数据库(存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail 看)中。

 

oracle11g中,审计功能(AUDIT_TRAIL)是默认开启的。而以前的版本中,审计默认是关闭的。

 

因为开启审计,那么,数据库增加了很多的消耗。会降低业务性能,因此,如果不是很必要,在安装好数据库后,可适当选择关闭数据库审计功能。

 

2.    和审计相关的几个主要参数

audit_trail None      不做审计;
DB
        是默认值,,将audit trail 记录在数据库的审计相关表中,   

aud$,审计的结果只有连接信息;
DB,Extended
:这样审计结果里面除了连接信息还包含了当时执行的具

体语句;
OS
        audit trail 记录在操作系统文件中,文件名由

audit_file_dest参数指定;
XML
10g里新增的。

 

Audit_sys_operations默认为false,当设置为true时,所有sys用户(包括以

sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

3.    审计级别

当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)Privilege(权限)、object(对象)。

Statement
按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,

alter session by user;会审计user用户所有的数据库连接。这里我们可以看到,对语句的审计也是分用户的。

Privilege
按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了

audit select any table

这条语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计。

Object
按对象审计,只审计on关键字指定对象的相关操作,如aduitalter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。注意Oracle没有提供对schema中所有 对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access;后, 对于随后创建的对象的drop操作都会审计。但这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比 trigger可以对schemaDDL进行审计,这个功能稍显不足。

2)  审计的一些其他选项

by access / by session
by access
每一个被审计的操作都会生成一条audit trail
by session
一个会话里面同类型的操作只会生成一条audit trail,默认为by session

whenever [not] successful
whenever successful
操作成功(dba_audit_trailreturncode字段为0) 才审计,
whenever not successful
反之。省略该子句的话,不管操作成功与否都会审计。

4.    和审计相关的视图

dba_audit_trail:保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图 dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_trail 的一个子集。
dba_stmt_audit_opts
:可以用来查看statement审计级别的audit options,即数据库设置过哪些statement级别的审计。dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似
all_def_audit_opts
:用来查看数据库用on default子句设置了哪些默认对象审计。

5.    审计的开启与关闭

        修改参数文件开启审计功能,自由控制审计级别。

   开启数据库审计:

Ø  11g以后版本中不允许动态修改初始化参数,需要修改参数文件,将 audit_trail 参数值修改为 ‘db,’db,extended’,’os’,’xml’其中一个。

Ø  11g以前的版本,可以动态修改初始化参数,如:

ALTER SYSTEM SET audit_trail=db,extended SCOP=SPFILE;

        开启管理用户的审计:

        Alter system set audit_sys_operations=TRUE scope=spfile;

关闭审计

11g中,将对应审计语句的audit改为noautdit,如audit session whenever successful对应的取消审计语句为noaudit session whenever successful;

       或者,修改参数文件中:audit_trail参数为’none’,这样就不会做任何审计相关的操作。

        Alter system set audit_trail=’none’;

 

 

二.需要注意的文件路径的变化

11G版本中,数据库文件的存储路径有所变化,不知道的,会很难找到。

这些文件包括:最重要的是告警日志,监听日志,控制文件数量及存储目录也有所变化。

1.       日志文件路径

11G中,alert日志存储在

’$ORACLE_BASE/diag/rdbms/db_name/$ORACLE_SID/trace/’目录下。

9i,10Galert日志存储在’/$ORACLE_BASE/admin/$ORACLE_SID/bdump/’

 

2.       控制文件路径

11G 中控制文件只有两个文件,一个使用中的控制文件,一个映像文件。

9i,10G 中控制文件有三个文件,一个使用中的控制文件,两个映像文件。

 

11G中,控制文件存储路径:

$ORACLE_BASE/oradata/$ORACLE_SID/control#.ctl

$ORACLE_BASE/flash_recovery_area/$ORACLE_SID/control#.ctl

 

9i,10G中控制文件存储路径

$ORACLE_BASE/oradata/$ORACLE_SID/control#.ctl

 

11G版本前,控制文件默认存放于$ORACLE_BASE/oradata/下。11G以后,对于控制文件的安全性加强了保护,将控制文件分别存储于不同的目录下,别一个映像的存储于闪回区。

 

三.用户密码安全

Oracle对用户密码有很强的保护意识,其加密方式 是对user_name+password 进行hash运算加密,而不单单是对密码进行了加密。用户登录时,用户名及密码作为一个整体经过转译进行鉴权,验证用户是否有权进行登录操作。

 

数据库在安装的时候,如果没有指定用户密码,安装程序会赋予用户一个默认密码。

11G这一系列版本中,用户密码出现以下新特性:

Ø  11G以前,我们可以通过视图查看到用户密码的加密串,11G以后已经看不到了。

Ø  用户名密码开始区分大小写

10G中,只有使用alter user identified by ***’才会区分大小写。

9i中,大小 写不进行区分。

Ø  口令可以包含未用引号括起来的多字节字符。如果口令包含除 $_ # 外的任何特殊字符,则必须用引号括起来

 

1)       默认密码

在安装数据库时,如果没有设置用户密码那么常用 的几个用户都是有自己默认密码的,详细情况如下:

用户名 / 密码

登录身份

说明

sys/change_on_install

SYSDBA SYSOPER

不能以 NORMAL 登录,可作为默认的系统管理员

system/manager

SYSDBA NORMAL

不能以 SYSOPER 登录,可作为默认的系统管理员

sysman/oem_temp

sysman

oms 的用户名

scott/tiger

NORMAL

普通用户

aqadm /aqadm

SYSDBA NORMAL

高级队列管理员

Dbsnmp/dbsnmp

SYSDBA NORMAL

复制管理员

 

2)       查看哪些用户在使用默认密码

 

select * from dba_users_with_defpwd;

 

视图dba_users_with_defpwd 顾名思义,可以了解到,这里面存储的是仍旧使用默认密码的用户。

      但是使用非默认密码的用户的密码,是可以通过sys.user$来查看的。


3)       修改用户密码

ALTER USER user_name IDENTIFIED BY password ;

-----------------------------------------------------------------------------------------------

使用区分大小写的口令: sec_case_sensitive_logon={true | false}


防止 DoS 攻击: sec_protocol_error_further_action={ CONTINUE | (DELAY,integer) | (DROP,integer) }

CONTINUE : 这是默认值,就不是進行任何处理
DROP : 去除使用者的登入权限
DELAY : 延长使用者的再入登入的间隔时间,单位是秒
sec_protocol_error_trace_action={ NONE | TRACE | LOG | ALERT }

NONE : 沒有动作
TRACE : 默认值,写入trace中
LOG : 写入alert log中
ALERT : 由dba手动或OEM中设定alert信息


防止强力攻击: sec_max_failed_login_attempts={10|1 to unlimited}

可设定不回传oracle版本相关的信息:sec_return_server_release_banner={true | false}


-----------------------------   THE END   -------------------------------

  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25313300/viewspace-707888/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-01-29

  • 博文量
    7
  • 访问量
    424090