Which Oracle Database component is audited by default if the unified Auditing option is
enabled?
A. Oracle Data Pump
B. Oracle Recovery Manager (RMAN)
C. Oracle Label Security
D. Oracle Database Vault
E. Oracle Real Application Security
Answer: B
正确答案解析:
审计(Auditing)
审计功能(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放指定的地方。
统一审计(Unified Auditing)
Oracle Database 12c 推出一套全新的审计架构,称为统一审计功能。统一审计主要利用策略和条件在 Oracle 数据库内部有选择地执行有效的审计。新架构将现有审计跟踪统一为单一审计跟踪,从而简化了管理,提高了数据库生成的审计数据的安全性。
关于统一审计的基础知识,大家可以参考以下Oracle的官方在线文档,在这里仅作简单的介绍。
Database Security Guide
https://docs.oracle.com/database/121/DBSEG/auditing.htm#DBSEG630
初始安装的12c数据库,为了兼容以前的版本默认启用混合模式,即传统审计和统一审计同时有效。你可以通过手动移植到完全的统一审计,也可以使统一审计无效,沿用传统审计。
你可以通过以下的SQL文,查询统一审计是否有效。TRUE表示完全的统一审计有效。FALSE表示并非是完全的统一审计。
那么我们如何的开启统一审计的模式呢
同理,你也可以通过以下的方法把数据库统一审计功能关闭掉(UNIX为例)。
默认有效的审计策略
12c数据库中预先定义了一些审计策略,并且根据版本不同,默认开启的审计策略也略有不同。
我们可以通过audit_unified_enabled_policies视图进行确认默认开启的统一审计的审计策略。
由上面的输出结果我们可以看到,不做任何配置的情况下,
在12.1.0.2数据库的环境中,默认开启了ORA_SECURECONFIG和ORA_LOGON_FAILURES审计策略,数据库会根据这2个审计策略,对相应的操作进行审计。
而在12.1.0.2数据库中,,ORA_SECURECONFIG审计策略移除了对所有LOGON和LOGOFF的审计,而增加了一个新的审计策略ORA_LOGON_FAILURES,用于仅审计登陆失败的操作。这样更加方管理,也能改善因为大量LOGON和LOGOFF的审计对表空间的浪费。
ORA_SECURECONFIG审计策略的详细可以参考以下官方在线文档,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#CHDIGFHG
ORA_LOGON_FAILURES审计策略的详细可以参考以下,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG703
附:无效掉默认的审计策略方法。
我们摘取官方文档上的内容:
包含了这么多的审计的内容,在当中,我们并没有看到rman相关的内容的审计。这个时候,我们可以手工做下测试,用rman进行下备份恢复的实验
通过查看下面的视图
其实就是因为rman在本质上还是调用的sql_text的语句,它还是调用了ALTER DATABASE的权限,从而会触发ORA_SECURECONFIG的统一审计
所以正确的答案是:B
enabled?
A. Oracle Data Pump
B. Oracle Recovery Manager (RMAN)
C. Oracle Label Security
D. Oracle Database Vault
E. Oracle Real Application Security
Answer: B
正确答案解析:
审计(Auditing)
审计功能(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放指定的地方。
统一审计(Unified Auditing)
Oracle Database 12c 推出一套全新的审计架构,称为统一审计功能。统一审计主要利用策略和条件在 Oracle 数据库内部有选择地执行有效的审计。新架构将现有审计跟踪统一为单一审计跟踪,从而简化了管理,提高了数据库生成的审计数据的安全性。
关于统一审计的基础知识,大家可以参考以下Oracle的官方在线文档,在这里仅作简单的介绍。
Database Security Guide
https://docs.oracle.com/database/121/DBSEG/auditing.htm#DBSEG630
初始安装的12c数据库,为了兼容以前的版本默认启用混合模式,即传统审计和统一审计同时有效。你可以通过手动移植到完全的统一审计,也可以使统一审计无效,沿用传统审计。
你可以通过以下的SQL文,查询统一审计是否有效。TRUE表示完全的统一审计有效。FALSE表示并非是完全的统一审计。
SQL>SELECT PARAMETER,VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
PARAMETER VALUE
---------------- ----------
Unified Auditing FALSE
那么我们如何的开启统一审计的模式呢
SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
$ lsnrctl start listener_name
11:54:45 sys@prodcdb> col parameter for a30
11:57:30 sys@prodcdb> col VALUE for a30
11:57:41 sys@prodcdb> SELECT PARAMETER,VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
PARAMETER VALUE
------------------------------ ------------------------------
Unified Auditing TRUE
同理,你也可以通过以下的方法把数据库统一审计功能关闭掉(UNIX为例)。
SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_off ioracle
$ lsnrctl start listener_name
SQL> conn /as sysdba
SQL> STARTUP
默认有效的审计策略
12c数据库中预先定义了一些审计策略,并且根据版本不同,默认开启的审计策略也略有不同。
我们可以通过audit_unified_enabled_policies视图进行确认默认开启的统一审计的审计策略。
--12.1.0.2的默认审计策略
col USER_NAME for a30
col POLICY_NAME for a30
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from audit_unified_enabled_policies;
USER_NAME POLICY_NAME ENABLED_ SUC FAI
------------------------------ ------------------------------ -------- --- ---
ALL USERS ORA_SECURECONFIG BY YES YES
ALL USERS ORA_LOGON_FAILURES BY NO YES
由上面的输出结果我们可以看到,不做任何配置的情况下,
在12.1.0.2数据库的环境中,默认开启了ORA_SECURECONFIG和ORA_LOGON_FAILURES审计策略,数据库会根据这2个审计策略,对相应的操作进行审计。
而在12.1.0.2数据库中,,ORA_SECURECONFIG审计策略移除了对所有LOGON和LOGOFF的审计,而增加了一个新的审计策略ORA_LOGON_FAILURES,用于仅审计登陆失败的操作。这样更加方管理,也能改善因为大量LOGON和LOGOFF的审计对表空间的浪费。
ORA_SECURECONFIG审计策略的详细可以参考以下官方在线文档,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#CHDIGFHG
ORA_LOGON_FAILURES审计策略的详细可以参考以下,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG703
附:无效掉默认的审计策略方法。
SQL>--12.1.0.2的环境
SQL> noaudit policy ORA_SECURECONFIG;
Noaudit succeeded.
SQL> noaudit policy ORA_LOGON_FAILURES;
Noaudit succeeded.
我们摘取官方文档上的内容:
CREATE AUDIT POLICY ORA_SECURECONFIG
PRIVILEGES ALTER ANY TABLE, CREATE ANY TABLE, DROP ANY TABLE,
CREATE ANY PROCEDURE, DROP ANY PROCEDURE, ALTER ANY PROCEDURE,
GRANT ANY PRIVILEGE, GRANT ANY OBJECT PRIVILEGE, GRANT ANY ROLE,
AUDIT SYSTEM, CREATE EXTERNAL JOB, CREATE ANY JOB,
CREATE ANY LIBRARY,
EXEMPT ACCESS POLICY,
CREATE USER, DROP USER,
ALTER DATABASE, ALTER SYSTEM,
CREATE PUBLIC SYNONYM, DROP PUBLIC SYNONYM,
CREATE SQL TRANSLATION PROFILE, CREATE ANY SQL TRANSLATION PROFILE,
DROP ANY SQL TRANSLATION PROFILE, ALTER ANY SQL TRANSLATION PROFILE,
TRANSLATE ANY SQL,
EXEMPT REDACTION POLICY,
PURGE DBA_RECYCLEBIN, LOGMINING,
ADMINISTER KEY MANAGEMENT
ACTIONS ALTER USER, CREATE ROLE, ALTER ROLE, DROP ROLE,
SET ROLE, CREATE PROFILE, ALTER PROFILE,
DROP PROFILE, CREATE DATABASE LINK,
ALTER DATABASE LINK, DROP DATABASE LINK,
CREATE DIRECTORY, DROP DIRECTORY,
CREATE PLUGGABLE DATABASE,
DROP PLUGGABLE DATABASE,
ALTER PLUGGABLE DATABASE,
EXECUTE ON DBMS_RLS;
包含了这么多的审计的内容,在当中,我们并没有看到rman相关的内容的审计。这个时候,我们可以手工做下测试,用rman进行下备份恢复的实验
通过查看下面的视图
select client_program_name,action_name,sql_text,system_privilege_used from UNIFIED_AUDIT_TRAIL order by event_timestamp desc;
CLIENT_PROGRAM_NAME ACTION_NAME SQL_TEXT SYSTEM_PRIVILEGE_USED
------------------------- -------------------- ---------------------------------------- ------------------------------
rman@kiwi (TNS V1-V3) ALTER DATABASE alter database recover if needed SYSDBA, ALTER DATABASE
datafile 17
rman@kiwi (TNS V1-V3) ALTER DATABASE alter database recover datafile list clear SYSDBA, ALTER DATABASE
其实就是因为rman在本质上还是调用的sql_text的语句,它还是调用了ALTER DATABASE的权限,从而会触发ORA_SECURECONFIG的统一审计
所以正确的答案是:B