[转]ORACLE 审计功能
审计是对选定的用户动作的监控和记录,通常用于:
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 审计功能的更多相关文章
- 转-利用Oracle审计功能来监测试环境的变化
http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...
- oracle 审计功能
Oracle 11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 一.审计功能关闭 1. ...
- Oracle 审计文件
Oracle审计功能: Oracle11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 ...
- oracle修改审计功能
oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...
- Oracle Audit 审计功能的认识与使用
1.Audit的概念 Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析.利用Audit功能,可以完成以下任务: 监视和收集特定数据库活动的数据.例如管理员能够审计哪些表被更新,在某 ...
- 开启和关闭oracle数据库中的审计功能
第1步:查看审计功能是否开启?SQL> show parameter audit;NAME TYPE VALUE-- ...
- 转- Oracle Audit 功能的使用和说明
http://blog.itpub.net/9399028/viewspace-712457/审计(Audit) 用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在syst ...
- 转--Oracle 审计和测试操作
http://blog.itpub.net/21605631/viewspace-759640/转 Oracle 审计和测试操作 :: 分类: Linux 1.1 相关参数 AUDIT_SYS_OPE ...
- oracle审计
Orcale审计机制研究 1. 设置审计 1.1. 查看审计状态 SQL>conn /as sysdba; 已连接 SQL>show parameters audit_trail; ...
随机推荐
- 刚看到的感觉会用的到 收藏一下 常用的iOS第三方资源 (转)
原文出处:http://blog.csdn.net/ruiwang321/article/details/50591888 一:第三方插件 1:基于响应式编程思想的oc 地址:https://gith ...
- Tomcat启动时项目重复加载,导致资源初始化两次的问题
http://blog.csdn.net/testcs_dn/article/details/38855641
- Python—函数的参数组合
参数组合 在Python中定义函数,可以用必选参数.默认参数.可变参数.关键字参数和命名关键字参数,这5种参数都可以组合使用.但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数.命名关键字 ...
- sql中修改多表关联的字段
表1:USERID USERNAME USERREMARK 表2:ROLEID USERID ROLENAME 其中表1的USERID与表2的USERID为关联字段. 若现在只知道ROLEID,要修改 ...
- 【POJ2699】The Maximum Number of Strong Kings(二分,最大流)
题意: 有n个队伍,两两都有比赛 知道最后每支队伍获胜的场数 求最多有多少队伍,他们战胜了所有获胜场数比自己多的队伍,这些队伍被称为SK N<=50 思路:把每个队伍和它们两两之间的比赛都当做点 ...
- button点击ajax异步无效的处理办法,以及实现“关注”“已关注”切换
button并不是在只等于submit时草有提交功能,如果你用它触发ajax事件,你的ajax会失去他最大的优势:刷新局部数据! 但是你如果设置了他的return false;属性小伙伴你的ajax才 ...
- myeclipse部署web项目到server : deploy location 为 INVALID,并且不能更改
首先查看项目路径下有没有 .mymetadata文件,没有就从其它地方挪一个,但是文件中的id必须是唯一的. 如果还不行就去下面这位大哥写的博客看下,进行下一步就可以解决了 生如夏花
- generator class 的含义
native有天生的,本土的,也就是说生来就有的, 那也就是说自动生成,不需要人工来帮忙或者管控的. 而assigned是指指定的,分配的, 如果你不赋予他甚麼东西,那麼他是不能实现的. 需要人工,自 ...
- 解決 java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
找到 jre/lib/security/java.security 将 jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048 ...
- 复制本地文件到HDFS本地测试异常
项目中需要将本地文件拷贝到hdfs上,由于本人比较懒,于是使用擅长的Java程序通过Hadoop.FileSystem.CopyFromLocalFile方法来实现. 在本地(Window 7 环境) ...