Oracle审计功能
Oracle审计功能 审计是对选定的用户动作的监控和记录,通常用于: u 审查可疑的活动。例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不成功地删除进行审计。 u 监视和收集关于指定数据库活动的数据。例如:DBA可收集哪些被修改、执行了多少次逻辑的I/O等统计数据。 ORACLE支持三种审计类型: u 语句审计,对某种类型的SQL语句审计,不指定结构或对象。 u 特权审计,对执行相应动作的系统特权的使用审计。 u 对象审计,对一特殊模式对象上的指定语句的审计。 ORACLE所允许的审计选择限于下列方面: u 审计语句的成功执行、不成功执行,或者其两者。 u 对每一用户会话审计语句执行一次或者对语句每次执行审计一次。 u 对全部用户或指定用户的活动的审计。 当数据库的审计是使能的,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。审计记录可存在数据字典表(称为审计记录)或操作系统审计记录中。数据库审计记录是在SYS模式的AUD$表中。 设置ORACLE审计下列步骤可以设置ORACLE的审计功能:
1. 修改参数文件(init<sid>.ora,如果使用服务器参数文件使用alter system set <parameter>=<value> scope=spfile|both,详情参照1.1节中关于参数文件的介绍),设置 AUDIT_TRAIL参数,并且重启数据库。AUDIT_TRAIL的取值如下: l DB/TRUE:启动审计功能,并且把审计结果存放在数据库的 SYS.AUD$ 表中 l OS:启动审计功能,并把审计结果存放在操作系统的审计信息中 l DB_EXTENDED:具有DB/TRUE的功能,另外填写AUD$的SQLBIND和SQLTEXT字段 l NONE/FALSE:关闭审计功能
2.如果设置 AUDIT_TRAIL = OS, 还需要修改参数AUDIT_FILE_DEST。 如果操作系统支持设置AUDIT_TRAIL=OS,文件会自动存放在AUDIT_FILE _DEST所指定的目录下,并且文件名包含进程的PID。 比如: AUDIT_FILE_DEST = $ORACLE_HOME/rdbms/audit $ ls -l $ORACLE_HOME/rdbms/audit -rw-rw---- 1 ora92 dba 881 Mar 17 09:57 ora_13264.aud $ ps -ef|grep 13264 ora92 13264 13235 0 09:56:43 ? 0:00 oracleV92 (DESCRIPTION=(LOCAL=Y) SQL> select spid, program, username from v$process; SPID PROGRAM USERNAME ------ -------------------------------------------- ------------- ... 13264 oracle@frhp11 (TNS V1-V3) ora92 注意:WINDOWS NT不使用AUDIT_FILE_DEST参数,如果使用OS设置,那么审计信息会存放在WINDOWS NT的事件日志里。下面的章节会有专门的介绍。
3. 确认审计相关的表是否已经安装
SQLPLUS> connect / AS SYSDBA SQLPLUS> select * from sys.aud$; -- 没有记录返回 SQLPLUS> select * from dba_audit_trail; -- 没有记录返回 如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。
SQLPLUS> connect / as sysdba SQLPLUS> @$ORACLE_HOME/rdbms/admin/cataudit.sql 审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空间存放审计信息。
4. 关闭并重启数据库
5. 设置所需要的审计信息 下面是一个例子 SQL> connect system/manager SQL> grant audit system to scott; SQL> connect scott/tiger SQL> audit session; 停止审计: SQL> noaudit session;
|