审计是对选定的用户动作的监控和记录,通常用于:

u          审查可疑的活动。例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不成功地删除进行审计。

u          监视和收集关于指定数据库活动的数据。例如:DBA可收集哪些被修改、执行了多少次逻辑的I/O等统计数据。

ORACLE支持三种审计类型:

u          语句审计,对某种类型的SQL语句审计,不指定结构或对象。

u          特权审计,对执行相应动作的系统特权的使用审计。

u          对象审计,对一特殊模式对象上的指定语句的审计。

ORACLE所允许的审计选择限于下列方面:

u          审计语句的成功执行、不成功执行,或者其两者。

u          对每一用户会话审计语句执行一次或者对语句每次执行审计一次。

u          对全部用户或指定用户的活动的审计。

当数据库的审计是使能的,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。审计记录可存在数据字典表(称为审计记录)或操作系统审计记录中。数据库审计记录是在SYS模式的AUD$表中。

设置ORACLE审计

下列步骤可以设置ORACLE的审计功能:

1. 修改参数文件(init.ora,如果使用服务器参数文件使用alter system set = 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; 

设置审计的实例:对试图尝试口令的访问的审计

本节讨论的是一个审计的实例,用于记录尝试通过野蛮尝试法破译ORACLE帐号口令的例子:

1. 修改审计相关参数(参照上一节介绍的方法)

2. 重启数据库

3. 设置审计信息

 SQL>AUDIT ALL BY ACCESS WHENEVER NOT SUCCESSFUL

4. 查询AUD$

 SQL> select returncode, action#, userid, userhost, terminal,timestamp

from aud$

 RETURNCODE    ACTION# USERID   USERHOST  TERMINAL

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

    1017        100      SCOTT    WPRATA-BR

    1017        100      SCOTT    WPRATA-BR

    1017        100      SCOTT    WPRATA-BR

 ORA-1017的含义为错误的用户名口令。通过查看AUD$表可以清楚地看到WPRATA-BR尝试破译SCOTT的口令。可以通过下面一个存储过程来分析AUD$表,找出可疑的信息:

create or replace procedure AuditLogin(Since Varchar2,Times PLS_Integer)

is

USER_ID VARCHAR2(20);

cursor c1 is select userid,count(*) from sys.aud$ where returncode='1017' and timestamp#>=to_date(Since,'yyyy-mm-dd')

  group by userid;

cursor C2 IS Select userhost, terminal,TO_CHAR(timestamp#,'YYYY-MM-DD:HH24:MI:SS')

  from sys.aud$ WHERE returncode='1017' and timestamp#>=to_date(Since,'yyyy-mm-dd') AND USERID=USER_ID;

ct PLS_INTEGER;

V_USERHOST VARCHAR2(40);

V_TERMINAL VARCHAR(40);

V_DATE VARCHAR2(40);

BEGIN

    OPEN C1;

    dbms_output.enable(1024000);

 LOOP

  FETCH C1 INTO USER_ID,CT;

      EXIT WHEN C1%NOTFOUND;

      IF(CT>=TIMES) THEN

        DBMS_OUTPUT.PUT_LINE('USER BROKEN ALARM:'||USER_ID);

        OPEN C2;

        LOOP

          FETCH C2 INTO V_USERhOST,V_TERMINAL,V_DATE;

DBMS_OUTPUT.PUT_LINE(CHR(9)||'HOST:'||V_USERHOST||',TERM:'||V_TERMINAL||',TIME:'||V_DATE);

          EXIT WHEN C2%NOTFOUND;

        END LOOP;

        close c2;

      END IF;

    END LOOP;

    close c1;

END;

/

一下是执行结果:

SQL>set serveroutput on;

SQL> execute auditlogin('2004-01-01',2);

USER BROKEN ALARM:SYS

        HOST:,TERM:XUJI,TIME:2004-09-22:11:08:00

        HOST:,TERM:XUJI,TIME:2004-09-22:11:08:01

        HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29

        HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29

PL/SQL 过程已成功完成。

将审计相关的表移动到其他表空间

由于AUD$表等审计相关的表存放在SYSTEM表空间,因此为了不影响系统的性能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上。可以使用下面的语句来进行移动:

sql>connect / as sysdba;

sql>alter table aud$ move tablespace ;

sql>alter index I_aud1 rebuild online tablespace ;

SQL> alter table audit$ move tablespace ;

SQL> alter index i_audit rebuild online tablespace ;

SQL> alter table audit_actions move tablespace ;

SQL> alter index i_audit_actions rebuild online tablespace ;

 

[转]ORACLE 审计功能的更多相关文章

  1. 转-利用Oracle审计功能来监测试环境的变化

    http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...

  2. oracle 审计功能

    Oracle 11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 一.审计功能关闭 1. ...

  3. Oracle 审计文件

    Oracle审计功能: Oracle11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 ...

  4. oracle修改审计功能

    oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...

  5. Oracle Audit 审计功能的认识与使用

    1.Audit的概念 Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析.利用Audit功能,可以完成以下任务: 监视和收集特定数据库活动的数据.例如管理员能够审计哪些表被更新,在某 ...

  6. 开启和关闭oracle数据库中的审计功能

    第1步:查看审计功能是否开启?SQL> show parameter audit;NAME                                 TYPE        VALUE-- ...

  7. 转- Oracle Audit 功能的使用和说明

    http://blog.itpub.net/9399028/viewspace-712457/审计(Audit) 用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在syst ...

  8. 转--Oracle 审计和测试操作

    http://blog.itpub.net/21605631/viewspace-759640/转 Oracle 审计和测试操作 :: 分类: Linux 1.1 相关参数 AUDIT_SYS_OPE ...

  9. oracle审计

    Orcale审计机制研究 1.   设置审计 1.1.  查看审计状态 SQL>conn /as sysdba; 已连接 SQL>show parameters audit_trail; ...

随机推荐

  1. Appium(客户端版)解决每次运行Android,都安装Appium Setting和Unlock的方法

    遇到的问题:使用的Appium界面的server进行启动,每次启动时都会安装Appium Setting和Unlock文件. 通过log可以看到安装路径如下:   Appium Setting安装包路 ...

  2. IntelliJ设置鼠标悬浮提示和修改快捷键

    IntelliJ设置鼠标悬浮提示和修改快捷键 设置鼠标悬浮提示 修改快捷键 进入设置菜单 删除原来的快捷键(注:你可以选择保留原来的快捷键,同时使用两个快捷键) Good Luck

  3. C++设计模式——简单工厂模式

    简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...

  4. JavaScript学习(一)—处理事件

    一.处理事件(一) 事件(event)是用户在访问页面时执行的操作.提交表单和在图像上移动鼠标就是两种事件.当浏览器探测到一个事件时,比如用鼠标单击或按键,它可以触发与这个事件相关联的JavaScri ...

  5. python 识别图片验证码报IOError

    说一下困扰了我一周的问题:识别图片验证码 本来我按照安装步骤(http://www.cnblogs.com/yeayee/p/4955506.html?utm_source=tuicool&u ...

  6. SQL基本语句以及示例

    基本语句: /*dorp colunm*/ 语法:ALTER TABLE 表名   DROP COLUMN 要删除的字段 验证财务转换的正确性,查询以下两个表是否有数据 /*表连接inner jion ...

  7. C#中线程对控件的访问

    Control类提供了一个Invoke方法来给子线程访问主线程的控件,它的原型是酱紫的: object.Control.Invoke(Delegate method); object.Control. ...

  8. UILabel添加图片之富文本的简单应用

    若想对UILabel添加图片,那么就需要使用NSMutableAttributedString来定义先定义一个普通的label UILabel *lab = [[UILabel alloc]initW ...

  9. Thinkpad 装 centos 7后发热量大处理

    原因:由于没有独立显卡驱动导致发热量大,禁用独立显卡去驱动即可. 步骤: 开机按 Fn+F1 进入BIOS. 选择 config 选项卡, 找到 Primary Display [SG] BIOS-- ...

  10. android基于GPS实现定位操作

    一.定位的三种方式 1.wifi定位,ip地址定位,通过ip地址进行查询实际地址: 2.基站定位,信号塔,基站:手机通讯服务的设备 ,信号的格数决定了手机距离基站远近,精确度:几十米到几公里,精确度来 ...