+ All Categories
Home > Documents > Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled...

Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled...

Date post: 16-Feb-2018
Category:
Upload: nguyenkhanh
View: 216 times
Download: 0 times
Share this document with a friend
14
Setup Oracle audit and reporting in one hour or less. Leon Rzhemovskiy
Transcript
Page 1: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Setup Oracle audit and reporting in one hour or less.

Leon Rzhemovskiy

Page 2: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Learning Objectives

• Answer questions Who, What , When and Where with minimum efforts by setting up an Oracle audit. The infrastructure is free and available in every database edition.

• Stay on top of a possible performance and storage issues by choosing appropriate audit policy.

• Build a summary and detail reports to analyze audit events from multiple databases using APEX or SQL*Plus.

• Setup a data retention period and cleanup audit records regularly.

• Setup alerts and send email notifications using Oracle Enterprise Manager infrastructure.

Page 3: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Enabling Auditing

Database auditing is enabled and disabled by the AUDIT_TRAIL parameter in the database initialization parameter file. Unfortunately, audit_trial is not a dynamic parameter and as a result, require a database reboot. To enable audit, execute following SQL commands as sysdba:

• ALTER SYSTEM SET audit_trail=db_extended SCOPE=SPFILE;

• SHUTDOWN immediate;

• STARTUP;

Verify the audit value by executing

SELECT VALUE FROM V$PARAMETER WHERE NAME='audit_trail';

Page 4: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Auditing options background

Audit policy is controlled by setting up options based on the statement, privilege, object and network level.

Audit and noaudit statements are used to set up auditing options

Following views could be used to display auditing options settings

• DBA_PRIV_AUDIT_OPTS;

• DBA_STMT_AUDIT_OPTS;

• DBA_OBJ_AUDIT_OPTS;

Page 5: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Auditing Options Setup

Auditing events frequency impact database performance and storage. The number of auditing options varies between database versions. You can setup auditing options by running oracle recommended RDBMS/admin/secconf.sql. In my opinion, it is more beneficial to start from auditing everything available and reduce/modify auditing options if needed. • AUDIT ALL PRIVILEGES WHENEVER SUCCESSFUL; • AUDIT ALL WHENEVER SUCCESSFUL; • AUDIT CREATE SESSION WHENEVER NOT SUCCESSFUL; • NOAUDIT SELECT ANY TABLE; • NOAUDIT SELECT ANY SEQUENCE; • NOAUDIT INSERT ANY TABLE; • NOAUDIT DELETE ANY TABLE; • NOAUDIT UPDATE ANY TABLE;

Page 6: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Audit Reporting

Audit entries are stored in SYS.AUD$ table and usually are accessed using DBA_AUDIT_TRAIL view. For every entry the user name, timestamp, connection origin, action performed and even SQL statement is recorded. You can use TOAD, SQLDeveloper to browse audit records. SQL*Plus could be used to generate html output. The following is a sample: set feedback off set pagesize 0 spool summary.html prompt <HTML><BODY> prompt <TABLE BORDER=1> prompt <TR><TD ALIGN="CENTER" COLSPAN=2><B>Summary by Date</B></TD></TR> prompt <TR><TD>Date</TD><TD>Count Audit Entries</TD></TR> SELECT '<TR><TD>'||TRUNC(TIMESTAMP) ||'</TD><TD align=right>'|| COUNT(1)||'</TD></TR>' FROM dba_audit_trail WHERE TIMESTAMP BETWEEN TRUNC(SYSDATE,'MON') AND SYSDATE GROUP BY TRUNC(TIMESTAMP) ORDER BY TRUNC(TIMESTAMP) DESC; prompt </TABLE><BR> prompt </BODY></HTML> exit;

Page 7: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Audit reporting using APEX demo

Page 8: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Audit reporting using APEX demo

Page 9: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Audit reporting using APEX demo

Page 10: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Audit Cleanup

The simplest, but not recommended by Oracle option is TRUNCATE TABLE sys.aud$; If you are running 11g, then use the following solution: -- init cleanup BEGIN DBMS_AUDIT_MGMT.INIT_CLEANUP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, DEFAULT_CLEANUP_INTERVAL => 720 /*hours*/ ); END; / -- set timestamp to purge data 30+ days old BEGIN DBMS_AUDIT_MGMT.set_last_archive_timestamp( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, last_archive_time => SYSTIMESTAMP-30); END; / -- check retention period COLUMN audit_trail FORMAT A20 COLUMN last_archive_ts FORMAT A40 SELECT * FROM dba_audit_mgmt_last_arch_ts; -- cleanup job. Should be scheduled to execute daily BEGIN DBMS_AUDIT_MGMT.clean_audit_trail( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, use_last_arch_timestamp => TRUE); END; /

Page 11: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Setup alerts and email notifications

Login to Oracle Enterprise Manager Cloud Control 12c

Navigate to Enterprize-> Monitoring -> Metric Extensions -> Action -> Create

Page 12: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Setup alerts and email notifications

Page 13: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Honeypot Setup

Create a table with an intriguing name and monitor any attempt to select data from this table. Setup the Metric Extension and email notifications in Enterprise Manager to react on unauthorized actions immediately.

CREATE TABLE CUSTOMER_CREDIT_CARDS(

Customer_no number(16),

Credit_Card_No number(16),

Credit_Card_Exp varchar2(4));

GRANT SELECT ON CUSTOMER_CREDIT_CARDS TO PUBLIC;

CREATE PUBLIC SYNONYM CUSTOMER_CREDIT_CARDS FOR CUSTOMER_CREDIT_CARDS;

AUDIT SELECT ON CUSTOMER_CREDIT_CARDS;

Page 14: Setup Oracle audit and reporting in one hour or less. · PDF fileDatabase auditing is enabled and disabled by the AUDIT_TRAIL ... The simplest, but not recommended by Oracle option

Conclusion

There is no excuse to avoid setting up an Audit Trial. You will get an enormous value with very little efforts. You can utilize APEX or any SQL client to browse Oracle audit entries. You can react immediately on unauthorized activities by setting up Enterprise Manager metric extensions and email notifications.


Recommended