oracle审计功能

  • 查看审计功能是否开启
  • 开启审计功能:
  • 关闭审计功能:
  • 审计功能相关视图
  • 审计功能的使用
  • 数据库打开的语句审计功能
  • 数据库打开的权限审计功能
  • 数据库审计总体情况
  • 数据库语句审计
  • 数据库对象审计
  • 数据库会话情况审计


查看审计功能是否开启

show parameter audit;

audit_sys_operations:默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn / as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
audit_trail:None:是默认值,不做审计;DB:将audit trail 记录在数据库的审计相关表中,如aud,审计的结果只有连接信息;DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;

开启审计功能:

SQL> alter system set audit_sys_operations=TRUE scope=spfile;--审计管理用户(以sysdba/sysoper角色登陆)
   	SQL> alter system set audit_trail=db,extended scope=spfile;

关闭审计功能:

SQL> conn /as sysdba
       SQL> show parameter audit
       SQL> alter system set audit_trail = none scope=spfile;

关闭审计功能需重启实例

审计功能相关视图

sys.aud$
       dba_audit_trail
       dba_audit_session
       dba_audit_object
       dba_audit_statement
       dba_audit_exits
       dba_stmt_audit_opts
       dba_priv_audit_opts
       dba_obj_audit_opts

审计功能的使用

数据库打开的语句审计功能

select nvl(t.user_name,'EVERY_USER) 审计用户,t.audit_option 操作类型,t.success,t.failure from dba_stmt_audit_opts t;

解析:SYSTEM WIDE AUDITING 对任何用户做了audit_option中的操作时,结果为success或者failure进行审计

数据库打开的权限审计功能

select nvl(t.user_name,'EVERY_USER) 审计用户,t.audit_option 操作类型,t.success,t.failure from dba_priv_audit_opts t;

解析:SYSTEM WIDE AUDITING 对任何用户做了audit_option中的操作时,结果为success或者failure进行审计

数据库审计总体情况

select coung(*) from dba_audit_trail where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30';

解析:数据库审计功能总共审计的条数,包含各个功能审计的内容。

数据库语句审计

select count(*) from dba_audit_statement t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30';
	select t.USERNAME,count(t.USERNAME) from dba_audit_statement t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30' group by t.USERNAME order by t.USERNAME;
	select t.ACTION_NAME,count(t.ACTION_NAME) from dba_audit_statement t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30' group by t.ACTION_NAME order by t.ACTION_NAME;

解析:可查看某用户被语句审计的次数,具体行为可查看更为详细的审计内容。

数据库对象审计

select count(*) from dba_audit_object t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30';
	select t.USERNAME,count(t.USERNAME) from dba_audit_object t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30' group by t.USERNAME order by t.USERNAME;
	select t.ACTION_NAME,count(t.ACTION_NAME) from dba_audit_statement t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30' group by t.ACTION_NAME order by t.ACTION_NAME;

解析:可查看某用户被对象审计的次数,具体行为可查看更为详细的审计内容。

数据库会话情况审计

select count(*) from dba_audit_session t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30';
	select t.USERNAME,count(t.USERNAME) from dba_audit_session t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30' group by t.USERNAME order by t.USERNAME;
	select t.ACTION_NAME,count(t.ACTION_NAME) from dba_audit_session t where t.timestamp > date '2021-01-01' and t.timestamp < date '2021-06-30' group by t.ACTION_NAME order by t.ACTION_NAME;

解析:可查看某用户被会话审计的次数,具体行为可查看更为详细的审计内容。