トップ 一覧 ping 検索 ヘルプ RSS ログイン

Oracle Database10g アクティビティの監査の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!Oracle Database10g アクティビティの監査
[Oracle][Oracle Database10g]

!!提供される監査
以下の3つの監査が提供されている
+データベース監査
+値ベース監査
+ファイングレイン監査(FGA)

!!データベース監査
*監査対象のイベントに関して、発生したイベント、時間、発生させたユーザー、クライアントマシンなどの情報を取得できる

![AUDIT_TRAIL|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/initparams.htm#71200]で監査を使用可能にする
*http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/auditing.htm#115334

 AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended } 

,オプション,内容
,none,データベースの監査を使用禁止にします。
,os,データベースの監査を使用可能にし、すべての監査レコードをオペレーティング・システムの監査証跡に書き込み。
,db,データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み。
,db,extended,データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み、さらに、SYS.AUD$表のSQLBINDおよびSQLTEXT CLOB列にデータを移入。
,xml,データベースの監査を使用可能にし、すべての監査レコードをXML形式のOSファイルに書き込みます。
,xml,extended,データベースの監査を使用可能にし、SqlTextおよびSqlBind値を含め、監査証跡のすべての列を出力します。

*オプション指定(os, xml, xml,extendedにより、ファイルに書き出される場合、[AUDIT_FILE_DEST|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/initparams.htm#70855]に書き出される。

""SQLBINDおよびSQLTEXTには、データベース初期化ファイルinit.oraでAUDIT_TRAIL=DB_EXTENDEDを指定しないかぎりデータは移入されません。 これは、CLOBデータの移入が比較的高コストであるためです。  

::AUDIT_TRAILを変更
 SQL> alter system set audit_trail = db scope=spfile;
 
 System altered.

::データベースを再起動し、確認
 SQL> show parameters audit_
 
 NAME                                 TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 audit_file_dest                      string      /opt/oracle/app/admin/oradb1/a
                                                  dump
 audit_sys_operations                 boolean     FALSE
 audit_syslog_level                   string
 audit_trail                          string      DB
![AUDIT|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/statements_4.html#21139]で監査を開始する
*後続のユーザー・セッションでのSQL文の実行の監査。特定のSQL文、または特定のシステム権限によって許可されたすべてのSQL文の実行を監査できます。SQL文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。
*特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。

 SQL> audit all by access;
 
 Audit succeeded.

::確認
{{ref_image ora_aud01.jpg}}

!!値ベース監査
*値ベース監査は、データベースの監査を拡張したもので、監査対象のイベントだけでなく、実際の値も取得する。
*データベーストリガーを使用して実装
*値の変更のたびに監査トリガーが実行されるため、データベースへの負荷が高くなることによるパフォーマンスの劣化に注意する

*[自律型トリガーの使用|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19257-01/sqloperations.html#16794]

::監査対象のテーブル
 SQL> desc exam.test
  Name                                      Null?    Type
  ----------------------------------------- -------- ----------------------------
  ID                                                 NUMBER
  NAME                                               CHAR(10)

::監査情報格納テーブルの作成
 SQL> create table system.test_audit ( test_id number, up_date date,
   2                             new_name char(10), old_name char(10) );
 
 Table created.

::トリガーの作成
 SQL> create or replace trigger system.audit_test
   2     before update of name on exam.test for each row
   3  declare 
   4     pragma autonomous_transaction;
   5  begin
   6     insert into system.test_audit values( :old.id, sysdate,
   7                                             :new.name, :old.name );
   8     commit;
   9  end;
  10  /

::1行更新
 SQL> update test set name = 'AAAAA' where id = 4;
 
 1行が更新されました。

::監査テーブルが更新された
 SQL> select * from system.test_audit;
 
    TEST_ID UP_DATE  NEW_NAME   OLD_NAME
 ---------- -------- ---------- ----------
          4 09-07-09 AAAAA      jkl

!![ファイングレイン監査|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/cfgaudit.htm#140653](FGA)
*SQL分を監査するには、ファイングレイン監査を利用する
*データベース監査を拡張し、発生したアクションだけでなく、発行されたSQLも取得
*DBMS_FGAパッケージを使用して、対象となる表やビューに監査ポリシー(FGAポリシー)を作成
*詳細な監査条件を指定することによって、標準監査よりも詳細な監査を実施でき、不適切な監査または不要な監査を最小限に抑えることができる
*監査を使用可能にするときに、AUDIT_TRAILを設定する必要はなく、適切と思われるFGA方針を追加および削除して、監視する特定の操作またはオブジェクトに適用する
*FGAポリシーの作成には、DBMS_FGA.ADD_POLICYプロシージャを使用
*監査レコードは、SYS.FGA_LOG$表に格納され、DBA_FGA_AUDIT_TRAILビューを介してアクセスできる

!FGA_POLICYの作成
 SQL> execute dbms_fga.add_policy ( -
 > object_schema => 'exam',      -
 > object_name => 'test',        -
 > policy_name => 'chk_exam_test', -
 > audit_condition => 'id > 0',          -
 > audit_column => 'name',       -
 > statement_types => 'insert,update,delete,select');
 
 PL/SQL procedure successfully completed.

::NULL監査条件
*audit_conditionにNULLを指定(または指定を省略)すると、この指定はTRUEとして解釈され、指定列(audit_column)に影響を与える指定アクション(statement_types)の監査が保証されます。



!監査対象のテーブルを操作
 SQL> conn exam/north123@oradb1;
 接続されました。
 SQL> select * from test
   2  ;
 
         ID NAME
 ---------- --------------------
          4 jkl
          3 ghi
 
 SQL> insert into test values (5, 'mno');
 
 1行が作成されました。
 
 SQL> delete from test where id = 3;
 
 1行が削除されました。

!監査ログを確認
{{ref_image ora_aud02.jpg}}

!監査エントリを確認するデータディクショナリ
,データディクショナリ,内容
,DBA_FGA_AUDIT_TRAIL,すべてのFGAイベントを確認
,ALL_AUDIT_POLICIES,現行ユーザーがアクセス可能なオブジェクトのすべてのFGAポリシーを確認
,DBA_AUDIT_POLICIES,データベース内のすべてのFGAポリシーを確認
,USER_AUDIT_POLICIES,現行ユーザースキーマのFGAポリシーを確認

::ALL_AUDIT_POLICIES
{{ref_image ora_aud03.jpg}}
::DBA_AUDIT_POLICIES
{{ref_image ora_aud04.jpg}}