Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database

Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database

Σε προηγούμενο άρθρο είχαμε δει πως ενεργοποιούμε το Auditing σε Oracle Database, σε αυτό το άρθρο θα δούμε πως ενεργοποιούμε το Unified Auditing που μας επιτρέπει να βάζουμε φίλτρα και να ώστε να μπορούμε καταγράφουμε.

Σε αντίθεση με το κλασικό Auditing μπορούμε αν θέλουμε να εξαιρέσουμε μηχανήματα που δεν θέλουμε να καταγράφονται είτε άνα SESSION είτε άνα STATEMENT και ενεργοποιώντας το να επιλέξουμε αν θα μόνο όσα έχουν επιτύχει στην εκτέλεση τους ή όχι (WHENEVER SUCCESSFUL). Αντίστοιχα μπορούμε να επιλέξουμε να καταγράφουμε μόνο συγκεκριμένους χρήστες ή συγκεκριμένα μόνο μηχανήματα για το policy αυτό. Επίσης μπορούμε να επιλέξουμε αν καταγράφει όλα τα statements ή ONLY TOPLEVEL όπως μια procedure.

Πώς ενεργοποιείται

Πρώτα θα χρειαστεί να σταματήσει η βάση δεδομένων και με την παρακάτω εντολή να ενεργοποιηθεί το Unified Auditing:

sqlplus / as sysdba;
shutdown immediate;
exit;

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk uniaud_on ioracle

sqlplus / as sysdba;
startup;

Στην περίπτωση που θέλουμε να καταγράφουμε και τις ενέργειες με τον administrator χρήστη SYS θα πρέπει να αλλάξουμε την παρακάτω παράμετρο και να κάνουμε restart:

sqlplus / as sysdba;
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
shutdown immediate;
startup;

Στη συνέχεια καθαρίζουμε to Unified Audit Trail με την παρακάτω εντολή:

begin
  dbms_audit_mgmt.flush_unified_audit_trail(
    flush_type => dbms_audit_mgmt.flush_current_instance,
    container  => dbms_audit_mgmt.container_all);
end;
/

Πώς αποθηκεύουμαι τα audit trail files σε ξεχωριστό tablespace

Αν θέλουμε να κάνουμε χρήση διαφορετικού tablespace με άλλα datafiles τρέχουμε την παρακάτω εντολή:

create tablespace AUDIT_TS datafile '/oracle/oradata/orcl/audit_ts_001.dbf' size 10m autoextend on next 64m maxsize 32767m;

BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type=>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, audit_trail_location_value => 'AUDIT_TS');
END;
/

Πώς συντηρούμε το Unified Auditing

Αν θέλουμε να φτιαχτεί ένα job που θα σβήνει τις εγγραφές άνω των 30 ημερών αυτόματα, τρέχουμε το παρακάτω:

BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'JOB_PURGE_AUDIT_RECORDS',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN 
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, TRUNC(SYSTIMESTAMP)-30); 
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type         =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp  =>  TRUE); 
END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=daily; byhour=0; byminute=0; bysecond=0;',
end_date => NULL,
enabled => TRUE,
comments => 'Update last_archive_timestamp');
END;
/

Πώς φτιάχνουμε Unified Audit Policies

Δημιουργία Select Policy

Με το παρακάτω κώδικα μπορούμε να φτιάξουμε ένα policy που θα καταγράφει τα πετυχημένα select statements σε δύο πίνακες που δεν προέρχονται από δύο συγκεκριμένα μηχανήματα:

CREATE AUDIT POLICY stratos_selects
ACTIONS
SELECT ON stratos.customers,
SELECT ON stratos.products
WHEN 'SYS_CONTEXT(''USERENV'', ''HOST'') NOT IN (''oracledev1'', ''oracledev2'')'
EVALUATE PER SESSION;

audit policy stratos_selects WHENEVER SUCCESSFUL;
--noaudit policy stratos_selects ;
--drop audit policy stratos_selects ;

Δημιουργία Login Monitoring Policy

Με τον παρακάτω κώδικα μπορούμε να φτιάξουμε ένα policy που θα καταγράφει τα πετυχημένα connections με δύο χρήστες που δεν προέρχονται από δύο συγκεκριμένα μηχανήματα:

CREATE AUDIT POLICY monitor_connects
ACTIONS LOGON
WHEN 'SYS_CONTEXT(''USERENV'', ''SESSION_USER'') IN (''STRATOS'', ''HR'') and SYS_CONTEXT(''USERENV'', ''HOST'') NOT IN (''oracledev1'', ''oracledev2'')'
EVALUATE PER SESSION;

audit policy monitor_connects WHENEVER SUCCESSFUL;
--noaudit policy monitor_connects;
--drop audit policy monitor_connects;

Δημιουργία DDL / DML Policy

Με τον παρακάτω κώδικα μπορούμε να φτιάξουμε ένα policy που θα καταγράφει τα πετυχημένα DDL και DML actions που δεν προέρχονται από δύο συγκεκριμένα μηχανήματα:

CREATE AUDIT POLICY stratos_changes
ACTIONS
TRUNCATE TABLE,
DROP TABLE,
ALTER TABLE,
DROP VIEW,
ALTER VIEW,
INSERT ON stratos.customers,
UPDATE ON stratos.customers,
DELETE ON stratos.customers,
INSERT ON stratos.products,
UPDATE ON stratos.products,
DELETE ON stratos.products
WHEN 'SYS_CONTEXT(''USERENV'', ''HOST'') NOT IN (''oracledev1'', ''oracledev2'')'
WHENEVER SUCCESSFUL;
EVALUATE PER SESSION;

audit policy stratos_changes WHENEVER SUCCESSFUL;
--noaudit policy stratos_changes;
--drop audit policy stratos_changes;

Αν θέλουμε να προστέσουμε ή να αφαιρέσουμε μια επιλογή από την καταγραφή μπορούμε με το παρακάτω:

ALTER AUDIT POLICY stratos_changes
  ADD ACTIONS DELETE ON stratos.logging
  DROP ACTIONS DELETE ON stratos.housekeeping;

Πώς βλέπουμε τα Unified Audit Policies που υπάρχουν

Με το παρακάτω query μπορούμε να δούμε τα Unified Audit Policies που έχουμε φτιάξει με τις παραμέτρους που έχουμε βάλει:

SELECT * FROM AUDIT_UNIFIED_POLICIES
--where policy_name='STRATOS_CHANGES'
;
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
1

Για να δούμε ποια policies είναι ενεργά τρέχουμε το παρακάτω query:

SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES;
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
2

Από default είναι ενεργοποιημένα τα δύο standard policies που μπορούμε να τα απενεργοποιήσουμε με τα παρακάτω:

noaudit policy ORA_SECURECONFIG;
noaudit policy ORA_LOGON_FAILURES;

Πώς βλέπουμε τις πληροφορίες από τα Unified Audit Policies

Για να δούμε τις πληροφορίες που έχει καταγράψει το Auditing με το όνομα του μηχανήματος, του OS χρήστη, του χρήστη της βάσης δεδομένων, του προγράμματος και το statement ακριβώς που έτρεξε τρέχουμε το παρακάτω:

SELECT 
event_timestamp
,OS_USERNAME
,USERHOST
,DBUSERNAME
,client_program_name
,action_name
,object_schema
,object_name
,sql_text
,sql_binds
,unified_audit_policies 
FROM UNIFIED_AUDIT_TRAIL 
WHERE  unified_audit_policies is not null and UNIFIED_AUDIT_POLICIES not in ('ORA_SECURECONFIG','ORA_LOGON_FAILURES')
ORDER BY EVENT_TIMESTAMP DESC;
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
3

Τρέχοντας το παρακάτω query μπορούμε να δούμε άνα policy και άνα action πόσες εγγραφές έχουν καταγραφεί:

select audit_type,unified_audit_policies,action_name,return_code,count(*) 
   from unified_audit_trail where event_timestamp>sysdate-1
   group by audit_type,unified_audit_policies,action_name,return_code
   order by count(*);
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
4

Για να δούμε το configuration του Unified Audit Trail τρέχουμε το παρακάτω:

select * from DBA_AUDIT_MGMT_CONFIG_PARAMS where AUDIT_TRAIL='UNIFIED AUDIT TRAIL';
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
5

Τέλος με το παρακάτω query μπορούμε να δούμε τον χώρο που καταλαμβάνει το Auditing:

select occupant_name,schema_name,occupant_desc,space_usage_kbytes from v$sysaux_occupants where occupant_name like 'AUD%';
Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database
6

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση