首页 > 数据库 > Oracle > 【审计】标准数据库审计
标准数据库审计
- 审计语法:
audit sql_statement_clause by {session | access} whenever [not]
successful;
by session,在一个会话中,同类型的操作只审计一条
by access,每个符合审计的操作全部审计
- 审计相关参数( audit_trail):
audit_trail = { none | os | db [,
extended] | xml [, extended] }
none: 10g 默认值,不做审计;
os:将 audit trail 记录在操作系统文件中,文件名由 audit_file_dest 参数指定;
db: 11g 默认值,将审计结果记录到 aud$表中;
db,extended:将审计结果记录到 aud$表中,同时包括绑定变量及 CLOB 字段;
xml:记录 OS 文件的是 XML 格式的审计记录;
xml,extended:记录OS 文件的是 XML 格式的审计记录,同时包括绑定变量及 CLOB 字段。
oracle10g:默认审计参数为 NONE,即未开启
Oracle11g:默认审计参数为 DB
实验开始:
——查看审计是否开启: (DB表示为11g默认参数)
SYS@ORA11GR2>show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------
audit_trail string DB
注:存储审计信息的表( aud$)的默认表空间为 system, system 表空间是不建议用的,所以最好为表aud$单独创建一个表空间用于存储审计数据。
——验证:
SYS@ORA11GR2>select TABLE_NAME,TABLESPACE_NAME from user_tables where table_name='AUD$';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ SYSTEM
1) 创建 ts_audit 表空间,用于存储审计信息
SYS@ORA11GR2>create tablespace ts_audit datafile '/u01/app/oracle/oradata/ORA11GR2/ts_audit_01.dbf' size 10m autoextend on next 10m;
Tablespace created.
2) 将存储审计信息的表 move 到 ts_audit 表空间
SYS@ORA11GR2>alter table aud$ move tablespace ts_audit;
Table altered.
——验证:
SYS@ORA11GR2>select TABLE_NAME,TABLESPACE_NAME from user_tables where table_name='AUD$';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ TS_AUDIT
【考虑将 aud$中 clob 字段单独存储一个表空间,如下
alter table sys.aud$ move lob(sqlbind) store as( tablespace USERS);
alter table sys.aud$ move lob(SQLTEXT) store as( tablespace USERS);
oracle10g 中,还可以考虑将索引 move 一个新的表空间, oracle11g 中 aud$表已无索引
alter index sys.I_AUD1 rebuild tablespace users;】
3) 查看审计参数并对其修改,改为存储到数据库并记录绑定变量
--查看当前数据库中参数 audit_trail 的值
SYS@ORA11GR2>show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB
--修改为审计记录保存到数据库中并且包含 clob 字段
SYS@ORA11GR2>alter system set audit_trail=db,extended scope=spfile;
System altered.
SYS@ORA11GR2>startup force;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 503319672 bytes
Database Buffers 322961408 bytes
Redo Buffers 2392064 bytes
Database mounted.
Database opened.
——验证:
SYS@ORA11GR2>show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB, EXTENDED
4) 登录 scott 用户,创建 t 表并开启 update 审计,使用 by access 子句,每次 update 都审计
SCOTT@ORA11GR2>create table t(x int);
Table created.
SCOTT@ORA11GR2>insert into t values(9);
1 row created.
SCOTT@ORA11GR2>commit;
Commit complete.
——在scott用户下对t表进行access级别的审计
SCOTT@ORA11GR2>audit update on t by access; 表示对t表的每次更新操作进行审计
(by access,每个符合审计的操作全部审计;by session,在一个会话中,同类型的操作只审计一条)
Audit succeeded.
5) 使用绑定变量的 sql 进行 update 测试
SCOTT@ORA11GR2>var v_num number;
SCOTT@ORA11GR2>exec :v_num:=1000; (:v_num绑定变量,:v_num:=给绑定变量授予一个值)
PL/SQL procedure successfully completed.
SCOTT@ORA11GR2>update t set x=:v_num;
1 row updated.
SCOTT@ORA11GR2>commit;
Commit complete.
6) 返回 sys 账户,验证结果
SYS@ORA11GR2>select username,sql_text,sql_bind from dba_audit_trail where sql_text='update t set x=:v_num';
USERNAME SQL_TEXT SQL_BIND
---------- ------------------------- ---------------
SCOTT update t set x=:v_num #1(4):1000
7) 另: sql 语句中“&变量”非绑定变量,在审计表中也可以清晰的看出来
SYS@ORA11GR2>conn scott/tiger
Connected.
SCOTT@ORA11GR2>select * from t;
X
----------
1000
SCOTT@ORA11GR2>update t set x=&val;
Enter value for val: 9
old 1: update t set x=&val
new 1: update t set x=9
1 row updated.
SCOTT@ORA11GR2>commit;
Commit complete.
——查看:
SCOTT@ORA11GR2>conn / as sysdba
SYS@ORA11GR2>select username,sql_text,sql_bind from dba_audit_trail where sql_text like 'update t set x=%';
USERNAME SQL_TEXT SQL_BIND
---------- ------------------------- ---------------
SCOTT update t set x=:v_num #1(4):1000
SCOTT update t set x=9
8) 取消审计(取消语句无需写 by access 子句)
SYS@ORA11GR2>conn scott/tiger
Connected.
SCOTT@ORA11GR2>noaudit update on t;
Noaudit succeeded.
实验结束!!!!!!!!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31397003/viewspace-2126850/ ,如需转载,请注明出处,否则将追究法律责任。