Oracle データベースの監査機能 株式会社アクアシステムズアプリケーション統括部 PAU001J-00-00SE
株式会社アクアシステムズ Oracle データベースを専門とする技術者集団 Oracle データベースチューニング & 監視ツール Performance Analyzer の開発 / 販売 Oracle データベース診断及びパフォーマンスチューニング Oracle データベースに関するコンサルティング Oracle データベース運用管理 Oracle データベースを使用した業務アプリケーションの開発
Agenda データベースの監査システムエグゼとアクアシステムズの取り組み
データベースの監査
Oracle データベースの監査 標準監査 (AUDIT) ファイングレイン監査 (FGA) DBA 監査トリガー LogMiner
標準監査 (1) 3 種類の監査文監査特定の DDL 文 ( データベース構造の変更 ) による操作を監査証跡に残す ex.) テーブルの作成 変更をする DDL 文を監査権限監査特定の権限による操作やログインを監査証跡に残す ex.) CREATE ANY TRIGER 権限が必要な処理を監査オブジェクト監査特定のオブジェクトへの操作を監査証跡に残す ex.) SCOTT.EMP テーブルに対する SELECT 文を監査監査証跡の出力先ファイル (UNIX) (AUDIT_FILE_DEST パラメータで指定したディレクトリデフォルト : $ORACLE_HOME/rdbms/audit) イベントビューア (Windows) テーブル (SYS.AUD$ 表 DBA_AUDIT_% ビューを参照 )
標準監査 (2) 監査できる情報の一例 OS ユーザー名 DB ユーザー名クライアントマシン名日時操作対象のオブジェクト操作の種類操作の成否 SQL 文 (10g only) 実行時の SCN(10g only) など
標準監査の設定方法 (1) 1. AUDIT_TRAIL パラメータを設定 DB or TRUE : 監査証跡を SYS.AUD$ に記録 DB_EXTENDED (10g only) : DB or TURE に加えて SQL 文 SCN も SYS.AUD$ に記録 OS : 監査証跡をファイル (UNIX) またはイベントビューア (Windows) に記録 (SQL 文 SCN は記録されない ) NONE or FALSE : 無効 2. AUDIT_FILE_DEST パラメータを設定 UNIX で AUDIT_TRAIL=OS の場合のみ必要 3. データベースを再起動先に変更したパラメータを有効にするため
標準監査の設定方法 (2) 4. 監査対象処理を設定 AUDIT 文を利用文監査を設定するためには AUDIT SYSTEM 権限が必要オブジェクト監査を設定するためには 監査対象のオブジェクトが自分のスキーマにあるか AUDIT ANY 権限が必要監査対象のオブジェクトが DIRECTORY オブジェクトの場合 自分のスキーマにあっても AUDIT ANY 権限が必要解除には NOAUDIT 文を使用 5. 監査結果の参照 監査証跡が DB であれば SYS.AUD$ もしくは それへの VIEW である DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_AUDIT_SESSION DBA_AUDIT_STATEMENT DBA_AUDIT_TRAIL を参照監査証跡が OS であれば AUDIT_FILE_DEST の audit_{ セッション ID}. aud というファイル (UNIX) またはイベントビューア (Windows) に出力される
標準監査の例 (1) テーブルの作成 変更 削除を監査 ( 文監査 ) 設定 ; 監査対象処理の実行 CREATE TABLE tbl01 (col01 numeric); 監査結果の参照 SQL> SELECT os_username, username, terminal, timestamp, owner, obj_name, 2 action_name, returncode 3 FROM dba_audit_trail; OS_USERNAME USERNAME TERMINAL TIMESTAMP OWNER OBJ_NAME ACTION_NAME RETURNCODE ----------- -------- -------- ----------------- ----- -------- ------------ ---------- AQUA\asami SCOTT AQUA 04-10-22 12:00:34 SCOTT TBL01 CREATE TABLE 0
標準監査の例 (2) データベースへの接続を監査 ( 権限監査 ) 設定 AUDIT CONNECT; 監査対象処理の実行 CONNECT scott/tiger 監査結果の参照 SQL> SELECT os_username, username, terminal, timestamp, action_name, logoff_time, 2 sessionid, returncode 3 FROM dba_audit_session; OS_USERNAME USERNAME TERMINAL TIMESTAMP ACTION_NAME LOGOFF_TIME RETURNCODE ----------- -------- -------- ----------------- ----------- ----------- ---------- AQUA\asami SCOTT AQUA 04-10-22 12:01:02 LOGON 0
標準監査の例 (3) データベースへの接続を監査 ( オブジェクト監査 ) 設定 AUDIT select,insert,update,delete ON emp BY ACCESS; 監査対象処理の実行 SELECT * FROM emp; UPDATE emp SET job = 'SALESMAN' WHERE empno = 7900; 監査結果の参照 SQL> SELECT os_username, username, terminal, timestamp, action_name, ses_actions, 2 sessionid, returncode 3 FROM dba_audit_object; OS_USERNAME USERNAME TERMINAL TIMESTAMP ACTION_NAME SES_ACTIONS RETURNCODE ----------- -------- -------- ----------------- ----------- ----------- ---------- AQUA\asami SCOTT AQUA 04-10-22 12:11:04 SELECT 0 AQUA\asami SCOTT AQUA 04-10-22 12:11:21 UPDATE 0
ファイングレイン監査 (1) オブジェクト監査の拡張で 特定の行または特定の列へのアクセスを監査証跡に残す ex.) SCOTT.EMP 表の EMPNO=7900 の行の ENAME 列にアクセスする操作を監査証跡に残す 9i では SELECT 文のみ監査可能 10g では SELECT 文および DML 文を監査可能 Enterprise Edition が必要コストベースオプティマイザで動作していること監査証跡の出力先 テーブル (SYS.FGA_LOG$ 表 DBA_FGA_AUDIT_TRAIL ビューを参照 )
ファイングレイン監査 (2) 監査できる情報の一例日時データベースユーザー名 OS ユーザー名クライアントマシン名操作対象の表またはビュー SQL 文実行時の SCN など
ファイングレイン監査の設定方法 1. ポリシーを作成 DBMS_FGA.ADD_POLICY プロシージャで監査対象となるオブジェクト 行 列を指定する DBMS_FGA パッケージの実行権限が必要解除には DBMS_FGA.DROP_POLICY プロシージャを使用 2. 監査結果の参照 SYS.FGA_LOG$ もしくは それへの VIEW である DBA_FGA_AUDIT_TRAIL を参照
ファイングレイン監査の例 SCOTT.EMP 表の EMPNO=7900 の行の ENAME 列へのアクセスを監査設定 execute dbms_fga.add_policy( object_schema => 'scott', object_name => 'emp', policy_name => 'emp01', audit_condition => 'empno=7900', audit_column => 'ename'); 監査対象処理の実行 SELECT empno, ename, deptno FROM emp where empno > 7800; 監査結果の参照 SELECT timestamp, db_user, os_user, userhost, object_schema, object_name, policy_name, sql_text, client_id FROM dba_fga_audit_trail; TIMESTAMP DB_USER OS_USER USERHOST OBJECT_SCHEMA OBJECT_NAME POLICY_NAME SQL_TEXT CLIENT_ID ----------------- ------- ---------- ------------ ------------- ------------ ----------- ------------------------------------ --------- 04-10-22 12:03:13 SCOTT AQUA\asami AQUAWG\AQUA SCOTT EMP EMP01 select * from emp where empno > 7800
DBA 監査 データベース管理者の操作を監査証跡に残す SYSDBA, SYSOPER 権限での処理を監査監査証跡の出力先ファイル (UNIX) (AUDIT_FILE_DEST パラメータで指定したディレクトリデフォルト : $ORACLE_HOME/rdbms/audit) イベントビューア (Windows) 監査できる情報日時 SQL 文 DB ユーザー名権限名 OS ユーザー名端末名操作の成否
DBA 監査の設定方法 1. AUDIT_SYS_OPERATIONS パラメータを設定 TRUE : 有効 FALSE : 無効 2. AUDIT_FILE_DEST パラメータを設定 UNIX の場合のみ必要 3. データベースを再起動先に変更したパラメータを有効にするため 4. 監査結果の参照 AUDIT_FILE_DEST の audit_{ セッション ID}.aud というファイル (UNIX) またはイベントビューア (Windows) に出力される DB 起動時の情報は AUDIT_FILE_DEST の設定に関わらず $ORACLE_HOME/rdbms/audit に出力される 有効になっていなくても CONNECT は監査される
DBA 監査の例 sys ユーザーのログイン $ORACLE_HOME/rdbms/audit/ora_19663.aud Audit file /opt/oracle/product/9.2.0/rdbms/audit/ora_19663.aud Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production ORACLE_HOME = /opt/oracle/product/9.2.0 System name: Linux Node name: dbsv Release: 2.4.9-e.25.52ml Version: #1 Thu Feb 19 14:45:48 JST 2004 Machine: i686 Instance name: orcl Redo thread mounted by this instance: 1 Oracle process number: 13 Unix process pid: 19663, image: oracle@rac (TNS V1-V3) Fri Oct 22 12:39:17 2004 ACTION : 'CONNECT' DATABASE USER: 'sys' PRIVILEGE : SYSDBA CLIENT USER: SYSTEM CLIENT TERMINAL: AQUA021 STATUS: 0
システムエグゼとアクアシステムズの取り組み
Oracle DB 監査ソフト サービスの提供 Oracle DB 監査ソフトウェアの提供 ( アクアシステムズ 2004/12 予定 ) 監査コンサルティングサービスの提供 ( システムエグゼ ) 上述の監査ソフトウェアを利用したデータベース監査の導入 設定コンサルティング 問題発生時の追跡 報告書作成サービス
お問い合わせ先 株式会社システムエグゼ営業部 担当 : 高橋 青木 TEL : 03-5542-5592 FAX : 03-5542-5594
http://www.aqua-systems.co.jp/ info@aqua-systems.co.jp Copyright 株式会社アクアシステムズ 2004