30
2017.01.17 - JPOUG in 15 minutes #3 Michitoshi Yoshida (@miyosh0008)

監査ログをもっと身近に!〜統合監査のすすめ〜

Embed Size (px)

Citation preview

Page 1: 監査ログをもっと身近に!〜統合監査のすすめ〜

2017.01.17 - JPOUG in 15 minutes #3 Michitoshi Yoshida

(@miyosh0008)

Page 2: 監査ログをもっと身近に!〜統合監査のすすめ〜

Oracle DB

Page 3: 監査ログをもっと身近に!〜統合監査のすすめ〜

before 12.1

FGA_LOGS$

AUDIT_FILE_DEST

AUD$

AUDIT_FILE_DEST

syslog

AUDIT_FILE_DEST

DB

DB

DBA DB

AUDIT_TRAIL

AUDIT_SYS_OPERATIONS

AUDIT_SYSLOG_LEVEL

DBMS_FGA OS

OS

OS

OS

orz

Page 4: 監査ログをもっと身近に!〜統合監査のすすめ〜

from 12.1

DBA DB

DBMS_FGA

SYS.UNIFIED_AUDIT_TRAIL

DB

Page 5: 監査ログをもっと身近に!〜統合監査のすすめ〜

• ➡ ➡

※ immediate write mode

➡ DataPump : SQL*Loader

RMAN

• ➡

➡ syslog OS

Page 6: 監査ログをもっと身近に!〜統合監査のすすめ〜

1.

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

-- SQL> select value from v$option WHERE parameter=‘Unified Auditing’;

VALUE-----------TRUE

Page 7: 監査ログをもっと身近に!〜統合監査のすすめ〜

2. : SYSAUX

--

-- ※ SQL> alter user AUDSYS quota unlimited on AUDITTBS;

SQL> begin DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION ( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, AUDIT_TRAIL_LOCATION_VALUE => ‘AUDITTBS’ ); end; /

Page 8: 監査ログをもっと身近に!〜統合監査のすすめ〜

3.

-- AUDIT_ADMIN

-- -

-- -

-- - SQL> create user AUDITADMIN identified by **********;SQL> grant CREATE SESSION,AUDIT_ADMIN to AUDITADMIN;

-- AUDIT_VIEWER

-- -

SQL> create user AUDITVIEWER identified by **********;SQL> grant CREATE SESSION,AUDIT_VIEWER to AUDITVIEWER;

Page 9: 監査ログをもっと身近に!〜統合監査のすすめ〜

• →

➡ sys system

Page 10: 監査ログをもっと身近に!〜統合監査のすすめ〜

• ORA_SECURECONFIG

• ORA_LOGON_FAILURES

46

EXECUTE  on  SYS.DBMS_RLS DROP  DIRECTORY CREATE  ANY  JOB DROP  PUBLIC  SYNONYM

ALTER  DATABASE  LINK DROP  PLUGGABLE  DATABASE CREATE  ANY  LIBRARY DROP  USER

ALTER  PLUGGABLE  DATABASE DROP  PROFILE CREATE  ANY  PROCEDURE EXEMPT  ACCESS  POLICY

ALTER  PROFILE DROP  ROLE CREATE  ANY  SQL  TRANSLATION  PROFILE EXEMPT  REDACTION  POLICY

ALTER  ROLE SET  ROLE CREATE  ANY  TABLE GRANT  ANY  OBJECT  PRIVILEGE

ALTER  USER ADMINISTER  KEY  MANAGEMENT CREATE  EXTERNAL  JOB GRANT  ANY  PRIVILEGE

CREATE  DATABASE  LINK ALTER  ANY  PROCEDURE CREATE  PUBLIC  SYNONYM GRANT  ANY  ROLE

CREATE  DIRECTORY ALTER  ANY  SQL  TRANSLATION  PROFILE CREATE  SQL  TRANSLATION  PROFILE LOGMINING

CREATE  PLUGGABLE  DATABASE ALTER  ANY  TABLE CREATE  USER PURGE  DBA_RECYCLEBIN

CREATE  PROFILE ALTER  DATABASE DROP  ANY  PROCEDURE TRANSLATE  ANY  SQL

CREATE  ROLE ALTER  SYSTEM DROP  ANY  SQL  TRANSLATION  PROFILE

DROP  DATABASE  LINK AUDIT  SYSTEM DROP  ANY  TABLE

Page 11: 監査ログをもっと身近に!〜統合監査のすすめ〜

-- SQL> create audit policy NONAPP_ACCESS_CUSTOMER actions ALL ON SECDEMO.CUSTOMER when 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') <> ''SECDEMO'' or SYS_CONTEXT(''USERENV'',''IP_ADDRESS'') <> ''192.168.114.233''' evaluate per statement ;

-- SQL> audit policy NONAPP_ACCESS_CUSTOMER;

Page 12: 監査ログをもっと身近に!〜統合監査のすすめ〜
Page 13: 監査ログをもっと身近に!〜統合監査のすすめ〜
Page 14: 監査ログをもっと身近に!〜統合監査のすすめ〜

SQL UNIFIED_AUDIT_TRAIL

: Oracle EM Cloud Control

Page 15: 監査ログをもっと身近に!〜統合監査のすすめ〜

Enterprise Edition

Page 16: 監査ログをもっと身近に!〜統合監査のすすめ〜

Oracle® Database 12c 1 (12.1)

http://docs.oracle.com/cd/E57425_01/121/DBSEG/audit_config.htm#GUID-AAE7D86F-4C64-402A-9D3E-BE7D13196E22

Page 17: 監査ログをもっと身近に!〜統合監査のすすめ〜

DB DoS

syslog syslog

Page 18: 監査ログをもっと身近に!〜統合監査のすすめ〜

• SECDEMO CUSTOMER

• syslog

Page 19: 監査ログをもっと身近に!〜統合監査のすすめ〜

syslog 1/41. syslog

# Oracle DB C RHEL/Oracle Linux 6 $ vi $ORACLE_HOME/hs/admin/extproc.oraSET EXTPROC_DLLS= !!!SET EXTPROC_DLLS=DLL:/lib64/libc.so.6

— syslog SQL> create or replace library libc as '/lib64/libc.so.6'; /SQL> create or replace procedure output_syslog (priority binary_integer, message varchar2) is external library libc name "syslog" language C calling standard C parameters( priority , message string ); /

Page 20: 監査ログをもっと身近に!〜統合監査のすすめ〜

syslog 2/42. syslog

-- syslog SQL> create or replace procedure fga_warn_syslog ( object_schema varchar2 , object_name varchar2 , policy_name varchar2 ) is LOG_WARNING constant binary_integer := 4; MSG VARCHAR2(4000); begin MSG := 'Oracle Audit Trail '; MSG := MSG || 'DB_NAME="' || sys_context('USERENV','DB_NAME') || '", '; MSG := MSG || 'SESSION_USER="' || sys_context('USERENV','SESSION_USER') || '", '; MSG := MSG || 'CLIENT_IDENTIFIER="' || sys_context('USERENV','CLIENT_IDENTIFIER') || '", '; MSG := MSG || 'HOST="' || sys_context('USERENV','HOST') || '", '; MSG := MSG || 'MODULE="' || sys_context('USERENV','MODULE') || '", '; MSG := MSG || 'OS_USER="' || sys_context('USERENV','OS_USER') || '", '; MSG := MSG || 'CURRENT_SQL="' || sys_context('USERENV','CURRENT_SQL') || ‘“‘; -- output_syslog syslog

output_syslog(LOG_WARNING, MSG); end; /

Page 21: 監査ログをもっと身近に!〜統合監査のすすめ〜

syslog 3/43. Optional

-- SQL> create or replace function audit_secdemo_is_nonapp return number as begin --

-- 1. : system

-- 2. : DB

-- 3.

if sys_context('USERENV','SESSION_USER') <> 'SECDEMO' or sys_context('USERENV','HOST') <> 'olvsecdap1.intellilink.co.jp' or sys_context('USERENV','IP_ADDRESS') <> '192.168.114.233' or sys_context('USERENV','CLIENT_IDENTIFIER') is null then return 1; else return 0; end if; end; /

Page 22: 監査ログをもっと身近に!〜統合監査のすすめ〜

syslog 4/44.

-- SECDEMO.CUSTOMER

SQL> begin DBMS_FGA.ADD_POLICY ( object_schema => ‘SECDEMO’, object_name => ‘CUSTOMER’, statement_types => ‘SELECT, UPDATE, DELETE’ policy_name => ‘SECDEMO_CUSTOMER_NONAP_ACCESS’, audit_condition => ‘audit_secdemo_is_nonapp=1’, handler_module => ‘fga_warn_syslog’, enable => TRUE ); end; /

Page 23: 監査ログをもっと身近に!〜統合監査のすすめ〜

system CUSTOMER

# tail -n 1 /var/log/messagesJan 14 20:17:33 olvdapd01 extproc: Oracle Audit Trail DB_NAME="orcl1", SESSION_USER="SYSTEM", CLIENT_IDENTIFIER="", HOST="olvdapd01.intellilink.co.jp", MODULE="SQL*Plus", OS_USER="oracle", CURRENT_SQL="select * from CUSTOMER where ROWNUM <= 10”

Page 24: 監査ログをもっと身近に!〜統合監査のすすめ〜
Page 25: 監査ログをもっと身近に!〜統合監査のすすめ〜
Page 26: 監査ログをもっと身近に!〜統合監査のすすめ〜

BI

Page 27: 監査ログをもっと身近に!〜統合監査のすすめ〜

https://github.com/airbnb/superset

Airbnb OSS BI

• Python Web pip

→ PC OK

• MySQL Oracle

Page 28: 監査ログをもっと身近に!〜統合監査のすすめ〜

1. • Oracle InstantClient (http://www.slideshare.net/MichitoshiYoshida1/dba-

oracle-database) ※ 20

• cx_Oracle (pip install cx_Oracle) • superset (http://airbnb.io/superset/installation.html)

2.

Sources > Databases > Add Oracle URI: oracle://<user>:<password>@<host>:<port>/<service>

: oracle://auditviewer:[email protected]:1521/orcl1

3.

4. Slice

5. →

Page 29: 監査ログをもっと身近に!〜統合監査のすすめ〜

DB

Distribution - Bar Chart

Table ViewFilter

Page 30: 監査ログをもっと身近に!〜統合監査のすすめ〜

m(_ _)m