学习Oracle的审计(Auditing)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Oracle的审计(Auditing)相关的知识,希望对你有一定的参考价值。
审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$ 表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(audit_file_dest参数决定)。默认情况下审计是没有开启的。
1、审计的类型有四种:
Statement Auditing(语句审计):在语句级别进行审计,如审计执行SELECT TABLE的语句,而不针对某一单独的对象。
Privilege Auditing(权限审计):审计某一系统权限的使用情况,如果审计在创建表时用到的CREATE ANY TABLE权限。
Schema Object Auditing(对象审计):审计对指定对象上的操作,如审计对表scott.emp的INSERT操作。
Fine-Grained Auditing(细粒度审计):用于指定更细粒度的审计,用DBMS_FGA包来实现。
2、相关参数:
AUDIT_TRAIL参数
这参数决定数据库审计的开启和关闭。可以被赋与如下值
DB,启用数据库审计,并把审计记录记录到数据库中的SYS.AUD$
XML,启用数据库审计,并把审计记录在文件系统以XML文件的开始存放
DB,EXTENDED,具有与DB一样的功能,并在必要时在SYS.AUD$中记录SQL bind and SQL text CLOB-type columns。
XML,EXTENDED,具有与XML一样的功能,并在可用时在XML文件中记录SQL bind and SQL text CLOB-type columns。
OS,启用数据库审计,并把审计记录记录到操作系统的文件中。
NONE,不启用数据库审计,默认值。
AUDIT_FILE_DEST参数
如果AUDIT_TRAIL=OS,则审计记录的文件,存放在AUDIT_FILE_DEST指定的目录中。
AUDIT_SYS_OPERATIONS参数
指定是否启用对SYS用户的审计。默认为FALSE,启用设置为TRUE。记录不存放在AUD$中,而是记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
3、启用和停用数据库审计
使用ALTER SYSTEM语句设置AUDIT_TRAIL参数,这个参数不可在线修改,修改后需重库数据库实例生效。例句如下:
ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;
停用数据库审计使用如下语句,重启数据库生效
ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;
4、启用和停止审计功能的语法:
1)启用审计使用AUDIT语句
2)停止审计功能
要停用审计功能把上面的AUDIT改为NOAUDIT。
在启用审计功能前,必须先设置AUDIT_TRAIL参数为非NONE,否则数据库不会进行审计。
5、使用审计功能的示例
启用数据库审计
[email protected]>alter system set audit_trail=DB scope=spfile; System altered.
1)Statement Auditing(语句审计)
审计由SCOTT用户发出的所有SELECT TABLE
[email protected]>audit select table by scott; Audit succeeded. [email protected]>select * from dba_stmt_audit_opts; USER_NAME PROXY_NAME AUDIT_OPTION SUCCESS FAILURE ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ SCOTT SELECT TABLE BY SESSION BY SESSION [email protected]>select count(*) from emp; COUNT(*) ---------- 14 [email protected]>select timestamp,sql_text from dba_audit_trail; TIMESTAMP SQL_TEXT ------------------- -------------------------------------------------------------------------------- 2017-04-24 23:07:47 select count(*) from emp
2)Privilege Auditing(权限审计)
审计所有系统权限
[email protected]>audit all privileges; Audit succeeded. [email protected]>select * from dba_priv_audit_opts; USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ FLASHBACK ARCHIVE ADMINISTER BY ACCESS BY ACCESS CREATE SESSION BY ACCESS BY ACCESS ...... [[email protected] ~]$ sqlplus scott/tiger ...... [email protected]>select username,timestamp,priv_used from dba_audit_trail where priv_used is not null; USERNAME TIMESTAMP PRIV_USED ------------------------------ ------------------- ------------------------------------------------------------------------------------------------------------------------ SCOTT 2017-04-24 23:18:02 CREATE SESSION
3)Schema Object Auditing(对象审计)
审计对SCOTT.EMP表的select操作
[email protected]>audit select on scott.emp; Audit succeeded. [email protected]>select * from dba_obj_audit_opts; OWNER OBJECT_NAM OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE CRE REA WRI FBK ---------- ---------- ------------------------------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- SCOTT EMP TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- S/S -/- -/- -/- -/- -/- -/- -/- [email protected]>select ename from emp; ENAME ------------------------------ SMITH ALLEN ...... [email protected]>select timestamp,sql_text from dba_audit_trail; TIMESTAMP SQL_TEXT ------------------- -------------------------------------------------------------------------------- 2017-04-24 23:24:28 select ename from emp
AUD$位于SYSTEM表空间,基于Oracle的稳定性及性能考虑,可以将审计相关的表移动到其他表空间。
alter table audit$ move tablespace <tablespace_name>;
alter index i_audit rebuild online tablespace <tablespace_name>;
alter table audit_actions move tablespace <tablespace_name>;
alter index i_audit_actions rebuild online tablespace <tablespace_name>;
官方文档:http://docs.oracle.com/cd/B19306_01/network.102/b14266/auditing.htm#CHDJBDHJ
http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073
参考:http://blog.itpub.net/9399028/viewspace-712457/
本文出自 “DBA Fighting!” 博客,请务必保留此出处http://hbxztc.blog.51cto.com/1587495/1919030
以上是关于学习Oracle的审计(Auditing)的主要内容,如果未能解决你的问题,请参考以下文章
Oracle LiveLabs实验:DB Security - Unified Auditing
Security传统审计(Traditional Auditing)