oracle审计程序,Oracle审计

审计

Oracle

数据库系统提供对其内部的活动进行审计的功能,简单来说,就是

Oracle

系统对任何用户所做的登录、操作数据库对象进行自动登记,以便使数据库管理者在事后进行监督和检查。

通常对以下

3

种情况进行审计:

设计类型

说明

登录审计

对每一个企图登录到

Oracle

的用户进行审计(无论其登录是否成功)

数据活动审计

对任何涉及数据库对象的活动都被审计,如连接

oracle

、建表、建立角色、建立表空间等都被审计

对象审计

任何用户对表的操作都可以进行审计,如对表

select,insert,update,delete

操作可被审计

审计环境设置

在默认情况下,系统为了节省资源、减少

I/O

操作,其数据库的审计功能是关闭的。若要启用审计功能,

Oracle

系统管理员要对审计有关的参数进行设置,将

Audit_trail

设置为

TRUE.

1

)

查看数据库审计参数

SQL> show parameters audit_trail

NAME                                 TYPE        VALUE

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

audit_trail                          string      NONE

2)

修改audit_trail参数,为使生效,重启数据库。

SQL> alter system set audit_trail=DB,extended scope=spfile;

System altered

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE

例程已经关闭。

SQL> startup

ORACLE

例程已经启动。

Total System Global Area  591396864 bytes

Fixed Size                  1250308 bytes

Variable Size             180358140 bytes

Database Buffers          402653184 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

数据库已经打开。

Settings for the AUDIT_TRAIL Initialization Parameter

说明:audit_trail = { none | os | db [,extended ] | xml [,extended ] }详细可以参考

none

:

默认值,不做审计

db

:

将audit trail记录在数据库的审计相关表中,如aud$

db,extended

: Behaves the same as

AUDIT_TRAIL=DB, but also populates

the SQL bind and SQL text CLOB-type columns

of the

SYS.AUD$

table

os

:

将oracle audit trail记录在操作系统文件中,文件名有audit_file_dest参数指定。对sys用户审计必须选OS

xml

:

Writes

to the operating system audit record file in XML format.

xml,extended:

Behaves the same

as

AUDIT_TRAIL=XML

, but also includes SQL text and SQL bind information in the operating system XML audit files.

一般情况下,Oracle 11g安装完毕后审计视图会自动建立。有些oracle版本可能没有建立这些视图。如果要建立相应的审计视图,以sysdba运行/oracle_home/rdbms/admin/cataudit.sql

SQL> start D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\cataudit.sql

Table dropped

Table created

Comment added

……

(

此处省略若干行)

Grant succeeded

Comment added

SQL>

运行完成毕后创建的对象

数据字典

说明

SIMT_AUDIT_OPTION_MAP

存放审计类型代码,如66表示insert table

AUDIT_ACTIONS

审计跟踪活动类型代码,可从类型号得到活动类型代码

ALL_DEF_AUDIT_OPTS

包含对象审计选项

DBA_SIMT_AUDIT_OPTS

描述通过系统并由用户审计的当前系统审计选项

USER_OBJ_AUDIT_OPTS

列出一个用户所有对象的审计选项

DBA_OBJ_AUDIT_OPTS

列出所有用户所有对象的审计选项

USER_AUDIT_TRAIL

与用户有关的审计跟踪条目

DBA_AUDIT_TRAIL

与所有用户有关的审计跟踪条目

USER_AUDIT_SESSION

系统中用户对象的审计跟踪记录

DBA_AUDIT_SESSION

系统中所有对象的审计跟踪记录

USER_AUDIT_STATEMENT

列出用户关于grant,revoke,audit,noaudit,alter system语句的审计跟踪信息

DBA_AUDIT_STATEMENT

列出所有用户grant,revoke,audit,noaudit,alter system语句的审计跟踪信息

USER_AUDIT_OBJECT

系统中用户对象的审计跟踪记录

DBA_AUDIT_OBJECT

系统中所有对象的审计跟踪记录

DBA_AUDIT_EXIST

列出audit not exists和audit exists产生的审计跟踪

V$XML_AUDIT_TRAIL

在Oracle 11g下,显示标准的精细审计并以XML写到操作系统路径下

如果不再需要审计,可运行/oracle_home/rdbms/admin/catnoaudit.sql脚本完成对审计视图的清除。但一般不建议这样做,一般建议如下:用sysdba执行alter system set audit_trail=FLASH scope=spfile,再重启实例即可,不必删除审计视图。

1

、登录审计

a)

设置登录审计

SQL> audit session;

审计已成功。//每一个与oracle连接的活动均需审计

SQL> audit session whenever successful;

审计已成功。//每一个与oracle连接成功的活动均需审计

SQL> audit session whenever not successfu

审计已成功。//每一个与oracle连接不成功的活动均需审计

SQL>

b)

查询审计信息

decode(returncode,'0','connected','1005','failed null','1017','failed',returncode) TYPE,

to_char(timestamp,'yyyy.mm.dd hh24:mi:ss')

登录时间,

to_char(logoff_time,'yyyy.mm.dd hh24:mi:ss')

退出时间

from dba_audit_session;

OS_USERNAME               USERNAME   TERMINA TYPE

登录时间退出时间

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

NT AUTHORITY\SYSTEM       DBSNMP     IBMT400 connected  2013.01.05 23:41:12 2013.01.05 23:41:11

IBMT400\FROG HONG         SCOTT      IBMT400 connected  2013.01.05 23:43:15 2013.01.05 23:43:17

IBMT400\FROG HONG         SCOTT      IBMT400 connected  2013.01.05 23:43:43

c)

取消登录审计

SQL> noaudit session;

Noaudit succeeded

2

、数据活动审计

进行create any table、drop any table、create any index, create procedure的操作进行审计

a)

语法

[no]audit { [,

] | [,

] } [ by [,

]] [by {session | access }] [whenever [not] successful];

system_priv:

表示oracle系统权限

by :

表示按照用户来登记

by session | access:

表示按照会话或访问来登记

whenever [not] successful:

表示成功与否

b)

设置使用数据活动的审计

SQL> audit delete any table by access whenever not successful;

Audit succeeded

SQL> audit execute any procedure whenever not successful;

Audit succeeded

c)

取消数据活动的审计

SQL> noaudit delete any table;

Noaudit succeeded

SQL> noaudit execute any procedure;

Noaudit succeeded

3

、对象审计

任何用户对表进行操作都可以进行审计,如对表select,insert,update,delete操作可被审计。

a)

语法

[no]audit { [,

] on { | default } [by {session | access }] [whenever [not]] successful];

其中:

object:

表示要审计的对象

by session | access:

表示按照会话或访问来登记,by session表示多次做同一操作只记录一次,如用户对emp表做了4次update,则只记录一次。by access表示每次操作均记录。

b)

设置对象emp表的审计

SQL> audit insert on scott.emp;       //

对emp表插入进行审计

Audit succeeded

SQL> audit all on scott.emp;        //

对emp表询、插入、修改、删除进行审计

Audit succeeded

SQL> audit delete on scott.emp by session;  //

连续对emp表进行删除多次只登记一次(按照会话登记)

Audit succeeded

c)

取消对象emp表的审计

SQL> noaudit insert on scott.emp;

Noaudit succeeded

SQL> noaudit all on scott.emp;

Noaudit succeeded

SQL> delete from sys.aud$ where obj$name='EMP';

0 rows deleted

SQL> truncate table sys.aud$;

Table truncated

5

、查询审计信息

SQL> select userid,userhost,terminal,obj$name,obj$creator,ses$actions from aud$;

审计是一把双刃剑,它能自动捕获很多信息,但是也会对系统性能和空间造成负面影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值