Oracle审计简介

 

1. Oracle审计信息存储位置

在数据库中(表AUD$);

操作系统文件中;

    2. Oracle审计信息包含的内容

当审计信息存储在数据库时,审计信息内容取决于审计事件和审计选项,以下内容一定会存在审计信息中

     操作系统登录用户名;

     用户名;

     会话标识;

     终端表示;

     对象的schema名;

     执行的操作;

     操作完成代码;

     日期时间;

当审计信息存储在操作系统文件时,审计信息包含以下内容

    由操作系统生成的审计记录;

    数据库审计信息记录;

    数据库审计活动;

    管理员用户(SYS)的审计记录

存储在操作系统文件中的审计记录可能包含编码,可以通过查询Oracle数据字典获得详细信息

    活动编码包含执行的操作信息,描述信息位于AUDIT_ACTIONS表中

    权限信息包含了执行操作中使用的系统权限,描述信息位于SYSTEM_PRIVILEGE_MAP表中

    操作完成信息包含了操作结构,成功返回0,否则返回Oracle错误代码,描述信息位于Oracle错误消息文档中

    3. 默认的审计内容

无论是否打开审计,Oracle都在操作系统文件中记录以下信息

    使用管理员(SYSDBASYSOPER)权限连接数据库

    启动数据库

    停止数据库

    4. 审计管理员用户

可以在参数文件中设置参数 AUDIT_SYS_OPERATIONS = TRUE 来打开管理员用户的审计。当在参数文件中设置参数打开管理员审计时,Oracle将不加选择的记录使用SYSDBASYSOPER身份登录的所有操作。例如:

打开审计执行以下操作时

    CONNECT / AS SYSDBA;
    ALTER SYSTEM FLUSH SHARED_POOL;
    UPDATE salary SET base=1000 WHERE name='myname';

操作系统文件中将会记录以下内容

Thu Jan 24 12:58:00 2002
ACTION: 'CONNECT'
DATABASE USER: '/'
OSPRIV: SYSDBA
CLIENT USER: scott
CLIENT TERMINAL: pts/2
STATUS: 0


Thu Jan 24 12:58:00 2002
ACTION: 'alter system flush shared_pool'
DATABASE USER: ''
OSPRIV: SYSDBA
CLIENT USER: scott
CLIENT TERMINAL: pts/2
STATUS: 0


Thu Jan 24 12:58:00 2002
ACTION: 'update salary set base=1000 where name='myname''
DATABASE USER: ''
OSPRIV: SYSDBA
CLIENT USER: scott
CLIENT TERMINAL: pts/2
STATUS: 0

    5. 管理审计

设置初始化参数使能审计,审计的参数都是静态的

AUDIT_TRAIL = NONE|DB|OS

参数值DB表示审计信息记录到数据库中

参数值OS表示审计信息记录到操作系统文件中

参数值NONE表示关闭审计,为默认值

AUDIT_FILE_DEST = 路径

默认路径:$ORACLE_HOME/rdbms/audit

注:如果操作系统支持审计那么路径由操作系统指定,例如在Windows平台上审计事件记录到应用程序日志中,在Windows平台上不允许指定AUDIT_FILE_DEST 参数。

     在某些平台上实例连接和数据启动总是记录到$ORACLE_HOME/rdbms/audit目录下不管是否设置了AUDIT_FILE_DEST参数,因为除非数据库mounted 否则无法获取这个参数。

使用审计语句指定审计选项

审计等级

  语句:指定审计语句或特定类型的语句组,象审计表的语句 CREATE TABLE, TRUNCATE TABLE, COMMENT ON TABLE, and DELETE [FROM] TABLE

  权限:使用审计语句指定系统权限,象AUDIT CREATE ANY TRIGGER

  对象:在指定对象上指定审计语句,象ALTER TABLE on the emp table

    6. 举例

AUDIT SELECT ON schema.table_name; 

AUDIT CREATE TABLE;

AUDIT CREATE ANY PROCEDURE;

NOAUDIT

注:语句详细说明见SQL Reference

    7. 细粒度审计(fga),举例说明

# 建立测试用表

create table audit_test

(audit_number number,

audit_char varchar2(30),

audit_date date)

# 建立索引

alter table audit_test add constraint audit_test_pk primary key(audit_number) using index;

# 建立测试数据

declare

begin

for i in 1..100 loop

insert into audit_test values(i,'audit'||i,sysdate-100+i);

end loop;

commit;

end;

/

# 为表audit_test建立列和条件审计

begin

dbms_fga.add_policy (

object_schema=>'SYS',

object_name=>'AUDIT_TEST',

policy_name=>'AUDIT_TEST_ACCESS',

audit_column => 'AUDIT_DATE',

audit_condition => 'AUDIT_DATE <= SYSDATE-30',

);

end;

/

# 测试审计结果

## 执行select 操作

select audit_number,audit_char from audit_test where audit_date>=TO_DATE('2008-05-10','yyyy-mm-dd');

## 检查审计情况

select timestamp,

db_user,

os_user,

userhost,

object_schema,

object_name,

sql_text

from dba_fga_audit_trail;

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

转载于:http://blog.itpub.net/4670/viewspace-344539/

你可能感兴趣的:(Oracle审计简介)