oracle12c审计功能,Oracle 11g与12c的审计详解

两种审计模式还有一个共同的视图可以看:DBA_COMMON_AUDIT_TRAIL,包含了标准+精细审计的记录。

truncate table aud$; --可以截断相关表,清理审计数据。

查看dba_common_audit_trail(包含标准和精细审计的记录)可以看到记录的主要字段包含:

SESSION_ID:会话ID,并非实际数据库会话的id,应该只是一个自增的ID

EXTENDED_TIMESTAMP:记录生成时间

DB_USER、OS_USER、USERHOST:一些用户相关的信息

OS_PROCESS:服务端对应的server process的系统进程ID,如果带冒号:,冒号后边的是线程ID

RETURNCODE:服务端的返回错误码,比如密码验证失败就会显示1017的错误码,即ORA-1017:"invalid username/password; logon denied"

COMMENT_TEXT:如果是远程登录还会包含客户端连接使用的TNS信息,包括使用的端口号

LOGOFF_TIME:会话登出时间

LOGOFF_LREAD、LOGOFF_PREAD、LOGOFF_LWRITE、LOGOFF_DLOCK:会话期间的逻辑读、物理读、物理写、死锁次数

ACTION:审计记录对应的操作号

STATEMENT_TYPE:审计记录对应的操作号表示的具体操作,也可以用过查询audit_actions视图来获取action与STATEMENT_TYPE的对应关系

提示:

12c中的unified审计记录不在AUD$表中,而是存储在AUDSYS schema下,可以通过AUDSYS.UNIFIED_AUDIT_TRAIL表查询,开启unified审计后传统的AUD$和dba_common_audit_trail等不再包含任何审计记录。

三、关于精细审计(fine-grained auditing):

如果想要细粒度的审计某个schema下针对某个表的某些数据的操作记录,可以开启精细审计,这允许你设计很细粒度的策略,例如创造一个fga策略如下:

--查看相关包的用法:

desc DBMS_FGA;

BEGIN

DBMS_FGA.ADD_POLICY(

OBJECT_SCHEMA=>'HR',

OBJECT_NAME =>'EMPLOYEES',

POLICY_NAME =>'SAL_AUD',

AUDIT_CONDITION =>'SALARY>3000',

AUDIT_COLUMN =>'SALARY',

ENABLE=>TRUE,

STATEMENT_TYPES=>'SELECT,UPDATE');

END;

--在sqlplus 中直接/执行,或者作为存储过程在plsql中exec dbms_fga.add_policy(...........);

查看精细审计策略:

DESC dba_audit_policies;

--查看已创建的精细审计策略

SELECT OBJECT_NAME,POLICY_NAME,ENABLED FROM DBA_AUDIT_POLICIES;

删除精细策略:

begin

dbms_fga.drop_policy (

object_schema=>'HR',

object_name=>'TEST',

policy_name=>'SAL_AUD');

end;

/

四、查看审计记录:

desc dba_common_audit_trail;

--示例:12c之前查看因为密码验证失败的审计记录:

select

EXTENDED_TIMESTAMP,DB_USER, OS_USER, USERHOST, COMMENT_TEXT

from dba_common_audit_trail

where

DB_USER = 'EASYITS'

and RETURNCODE = 1017

and EXTENDED_TIMESTAMP between

to_timestamp('2019-04-18 21:30:00', 'YYYY-MM-DD HH24:MI:SS') and

to_timestamp('2019-04-18 22:30:00', 'YYYY-MM-DD HH24:MI:SS');

五、12c审计:

官网参考:

12c的传统审计(即11g里的标准审计和精细审计):

12c的unified审计:

12c中新引入的审计机制名为unified audit,你可以将其理解为一种更加轻便的精细审计。

我们知道在12c之前想要使用精细审计就要用dbms_fga包去创建审计策略,想要使用标准审计就要用audit语句去审计特定的权限和SQL,相关的视图也非常多,这导致审计策略的管理非常混乱,audit的语法也非常的反人类。而12c的unified audit则对设置审计策略的方式做了统一和简化,只需要使用以下三种语句来设置审计策略就可以了:

而开启和关闭审计策略也极简,只需要使用简单的audit和noaudit语句:

audit policy ;

noaudit policy ;

可以看到我们只要熟悉创建/修改审计策略的语法就可以了。

至于原有的标准审计和精细审计的创建模式,12c中依然保留,在混合审计模式下你依然可以使用dbms包创建精细审计,audit命令也保留着创建标准审计的语法。

Unified审计模式的开启:

12c的Unified Auditing参数默认为false:

select parameter,value from v$option where parameter='Unified Auditing';

这种默认设置表示既支持12c之前的那种标准+精细的传统审计模式,也可以使用unified审计模式,这种默认的模式也被称作混合审计模式(mixed)。

而如果开启unified audting,那么传统审计模式就会被禁用,audit_trail参数被忽略,AUD$和FGA_LOG$等相关表不再新增任何审计记录,只能在AUDSYS.UNIFIED_AUDIT_TRAIL中看到unified审计的记录。

如何开启unified审计?

SQL> shutdown immediate;

ORACLE instance shut down.

SQL> host lsnrctl stop

--如果有EM启用,那么暂时关闭:emctl stop oms

SQL> host ( cd $ORACLE_HOME/rdbms/lib ; make -f ins_rdbms.mk uniaud_on ioracle )

--同样的关闭方式就是:make -f ins_rdbms.mk uniaud_off ioracle

SQL> startup

SQL> select * from v$option where PARAMETER = 'Unified Auditing';

12c混合审计模式下的审计表现:

我们知道11g中,只要audit_trail不为none,那么数据库会默认审计一些操作,例如logon,logout和涉及数据库安全的操作等。而在12c中系统也预设了一些unified审计策略,可以通过AUDIT_UNIFIED_ENABLED_POLICIES视图查看已生效的审计策略,通过AUDIT_UNIFIED_POLICIES可以查看所有预设审计策略。

12c的混合模式下,对于11g中那些标准审计默认审计的审计项们也依然进行审计,只不过方式变了,变为了通过默认开启一些unified审计策略来进行这些默认审计(DBA_STMT_AUDIT_OPTS也不再包含记录)。我们可以看一下这些默认开启的审记策略:

select * from AUDIT_UNIFIED_ENABLED_POLICIES;

e03e68097270848af12e425c2fa5fdcd.png

以上为12c中默认开启的审计策略,其中ORA_LOGON_FAILURES在12.1.0.2以后被从ORA_SECURECONFIG独立出来,并且只审计失败的登录.

而从AUDIT_UNIFIED_POLICIES视图可以看出ORA_SECURECONFIG其实就包含了以前的那些默认标准审计项。

混合模式下无论是传统审计记录,还是通过预设的unified auditing policy进行的默认审计,其审计记录在dba_common_audit_trail中都可以查看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值