oracle12c审计功能,Oracle11g与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:审计记录对应的操作号oracle登录命令
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;
以上为12c中默认开启的审计策略,其中ORA_LOGON_FAILURES在12.1.0.2以后被从ORA_SECURECONFIG独⽴出来,并且只审计失败的登录.
⽽从AUDIT_UNIFIED_POLICIES视图可以看出ORA_SECURECONFIG其实就包含了以前的那些默认
标准审计项。
混合模式下⽆论是传统审计记录,还是通过预设的unified auditing policy进⾏的默认审计,其审计记录在dba_common_audit_trail中都可以查看。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论