==[[Oracle Database10g アクティビティの監査]]==
[[Oracle]] | [[Oracle Database10g]] |
*http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/auditing.htm#115334
AUDIT_TRAIL AUDIT_T[[R]]AIL = { none | os | db | db,extended | xml | xml,extended }
{|class="wikitable"
|-
|db,extended
|データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み、さらに、SYS.AUD$表のSQLBINDおよびSQLTEXT 表の[[SQL]]BINDおよび[[SQL]]TEXT CLOB列にデータを移入。
|-
|xml
|データベースの監査を使用可能にし、すべての監査レコードをXML形式のOSファイルに書き込みます。データベースの監査を使用可能にし、すべての監査レコードを[[XML]]形式のOSファイルに書き込みます。
|-
|xml,extended
*オプション指定(os, xml, xml,extendedにより、ファイルに書き出される場合、[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/initparams.htm#70855 AUDIT_FILE_DEST]に書き出される。
<blockquote>SQLBINDおよびSQLTEXTには、データベース初期化ファイルinit[[SQL]]BINDおよび[[SQL]]TEXTには、データベース初期化ファイルinit.oraでAUDIT_TRAIL=DB_EXTENDEDを指定しないかぎりデータは移入されません。 これは、CLOBデータの移入が比較的高コストであるためです。 </blockquote>
=====AUDIT_TRAILを変更AUDIT_T[[R]]AILを変更===== [[SQL]]> alter system set audit_trail = db scope=spfile;
System altered.
=====データベースを再起動し、確認=====
[[SQL]]> show parameters audit_
NAME TYPE VALUE
audit_trail string DB
====[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/statements_4.html#21139 AUDIT]で監査を開始する====
*後続のユーザー・セッションでのSQL文の実行の監査。特定のSQL文、または特定のシステム権限によって許可されたすべてのSQL文の実行を監査できます。SQL文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。後続のユーザー・セッションでの[[SQL]]文の実行の監査。特定の[[SQL]]文、または特定のシステム権限によって許可されたすべての[[SQL]]文の実行を監査できます。[[SQL]]文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。
*特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。
[[SQL]]> audit all by access;
Audit succeeded.
=====監査対象のテーブル=====
[[SQL]]> desc exam.test
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBERNUMBE[[R]] NAME CHARCHA[[R]](10)
=====監査情報格納テーブルの作成=====
[[SQL]]> create table system.test_audit ( test_id number, up_date date,
2 new_name char(10), old_name char(10) );
=====トリガーの作成=====
[[SQL]]> create or replace trigger system.audit_test
2 before update of name on exam.test for each row
3 declare
=====1行更新=====
[[SQL]]> update test set name = 'AAAAA' where id = 4;
1行が更新されました。
=====監査テーブルが更新された=====
[[SQL]]> select * from system.test_audit;
TEST_ID [[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]]分を監査するには、ファイングレイン監査を利用する*データベース監査を拡張し、発生したアクションだけでなく、発行されたSQLも取得データベース監査を拡張し、発生したアクションだけでなく、発行された[[SQL]]も取得
*DBMS_FGAパッケージを使用して、対象となる表やビューに監査ポリシー(FGAポリシー)を作成
*詳細な監査条件を指定することによって、標準監査よりも詳細な監査を実施でき、不適切な監査または不要な監査を最小限に抑えることができる
*監査を使用可能にするときに、AUDIT_TRAILを設定する必要はなく、適切と思われるFGA方針を追加および削除して、監視する特定の操作またはオブジェクトに適用する監査を使用可能にするときに、AUDIT_T[[R]]AILを設定する必要はなく、適切と思われるFGA方針を追加および削除して、監視する特定の操作またはオブジェクトに適用する
*FGAポリシーの作成には、DBMS_FGA.ADD_POLICYプロシージャを使用
*監査レコードは、SYS.FGA_LOG$表に格納され、DBA_FGA_AUDIT_TRAILビューを介してアクセスできる表に格納され、DBA_FGA_AUDIT_T[[R]]AILビューを介してアクセスできる
====FGA_POLICYの作成====
[[SQL]]> execute dbms_fga.add_policy ( -
> object_schema => 'exam', -
> object_name => 'test', -
> statement_types => 'insert,update,delete,select');
PL/[[SQL ]] procedure successfully completed.
=====NULL監査条件=====
*audit_conditionにNULLを指定(または指定を省略)すると、この指定はTRUEとして解釈され、指定列(audit_column)に影響を与える指定アクション(statement_types)の監査が保証されます。audit_conditionにNULLを指定(または指定を省略)すると、この指定はT[[R]]UEとして解釈され、指定列(audit_column)に影響を与える指定アクション(statement_types)の監査が保証されます。
====監査対象のテーブルを操作====
[[SQL]]> conn exam/north123@oradb1;
接続されました。
[[SQL]]> select * from test
2 ;
3 ghi
[[SQL]]> insert into test values (5, 'mno');
1行が作成されました。
[[SQL]]> delete from test where id = 3;
1行が削除されました。
!内容
|-
|DBA_FGA_AUDIT_TRAILDBA_FGA_AUDIT_T[[R]]AIL
|すべてのFGAイベントを確認
|-
|ALL_AUDIT_POLICIESALL_AUDIT_POLIC[[IE]]S
|現行ユーザーがアクセス可能なオブジェクトのすべてのFGAポリシーを確認
|-
|DBA_AUDIT_POLICIESDBA_AUDIT_POLIC[[IE]]S
|データベース内のすべてのFGAポリシーを確認
|-
|USER_AUDIT_POLICIESUSER_AUDIT_POLIC[[IE]]S
|現行ユーザースキーマのFGAポリシーを確認
|-
|}
=====ALL_AUDIT_POLICIESALL_AUDIT_POLIC[[IE]]S=====
[[File:0877_ora_aud03.jpg]]
=====DBA_AUDIT_POLICIESDBA_AUDIT_POLIC[[IE]]S=====
[[File:0878_ora_aud04.jpg]]