Manage Audit in Oracle

Enable Unified Auditing

To enable Unified Auditing (being available since 12c) stop instance and listener and relink auditing library:

Check current value:
SELECT value FROM v$option WHERE parameter = ‘Unified Auditing’;
Let’s assume it is FALSE.
Stop instance.

Go to library directory and relink:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk unaiaud_on ioracle

Start the instance

Check the value again.
Now it should be TRUE.

Audit Parameters

To check current audit settings we need to check two places:

Audit parameters:
show parameter audit

audit_file_dest specifies the operating system directory into which the audit trail is written when the AUDIT_TRAIL initialization parameter is set to osxml, or xml,extended.
audit_sys_operations enables or disables the auditing of directly issued user SQL statements with SYS authorization. These include SQL statements directly issued by users when connected with the SYSASMSYSBACKUPSYSDBASYSDGSYSKM, or SYSOPER privileges, as well as SQL statements that have been executed with SYS authorization using the PL/SQL package DBMS_SYS_SQL.
audit_syslog_level allows SYS and standard OS audit records to be written to the system audit log using the SYSLOG utility.
audit_trail enables or disables database auditing. Values are none, os (directing audit records to files), db (logging in SYS.AUD$ table), db,extended (extends db by keeping sql and variables information also), xml (writes in XML files) and xml,extended (extends xml by keeping sql and variables information also).
unified_audit_common_systemlog specifies whether key fields of unified audit records generated due to common audit policies will be written to the SYSLOG utility.
unified_audit_sga_queue_size specifies the size in bytes of SGA queue for unified auditing.
unified_audit_systemlog specifies whether key fields of unified audit records will be written to the SYSLOG utility (on UNIX platforms) or to the Windows Event Viewer (on Windows). In a CDB, this parameter is a per-PDB static initialization parameter.

Audit Management Configuration Parameters

Check Audit Management configuration parameters with:
select * from dba_audit_mgmt_config_params;

Use DBMS_AUDIT_MGMT  package to manage auditing:

Change Default Audit Tablespace

Change the tablespace of the UNIFIED_AUDIT_TRAIL view tables with subprogram set_audit_trail_location accepting two parameters: audit_trail_type of PLS_INTEGER type and audit_trail_location_value of VARCHAR2 type. An example follows that makes UNIFIED_AUDIT_TRAIL tables use AUDIT_TBS tablespace:

begin
dbms_audit_mgmt.set_audit_trail_location(
audit_trail_type => dbms_audit_mgmt.audit_trail_unified,
audit_trail_location_value => ‘AUDIT_TBS’);
end;
/

Other audit_trail_type values are:
dbms_audit_mgmt.audit_trail_aud_std and dbms_audit_mgmt.audit_trail_fga_std

Change partition interval of audit

Setup cleanup job

exec DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP (AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,LAST_ARCHIVE_TIME => sysdate-7)

See enabled policies

There are two default policies enabled by Oracle:ORA_SECURECONFIG and ORA_LOGON_FAILURES:

select * from audit_enabled_policies;

Action audited from these policies:

SELECT policy_name, audit_option, condition_eval_opt,audit_condition FROM audit_unified_policies
WHERE policy_name in (‘ORA_SECURECONFIG’,’ORA_LOGON_FAILURES’)
order by 1 ,2;

Create Audit Policy

Let’s create a policy for example let’s log all password changes in all containers:

In root:
CREATE AUDIT POLICY POLICY_PASSWORD_CHANGE ACTIONS CHANGE PASSWORD CONTAINER=ALL;
And enable it with:
AUDIT POLICY_PASSWORD_CHANGE;

Disable policy with:
NOAUDIT POLICY_PASSWORD_CHANGE;

Drop it with:
DROP AUDIT POLICY POLICY_PASSWORD_CHANGE;
You cannot drop an enabled audit policy; you must disable it first.

Leave a Reply

Your email address will not be published. Required fields are marked *