The Dragon Scroll

Be just and fear not.

10gがもたらす福音(11)〜ファイングレイン監査の新機能。

ファイングレイン監査の新機能といっても、ファイングレイン監査(FGA)自体
今まで、使ったことはないが、高度なセキュリティ要件を求められる
場合には、必須となる機能だろう。


FGAとは、監査ポリシーが設定された表に対する、行レベルの操作を
監視する機能である。
監査証跡は、DBA_FGA_AUDIT_TRAIL又はDBA_COMMON_AUDIT_TRAILにエントリされる。


FGAの設定。
dbms_fga.add_policy(
object_schema => 'スキーマ名'
object_name => '表名'
policy_name => 'ポリシー名'
audit_column => '監査対象の列名。10gで複数指定可能になった。'
audit_condition => '監査対象行'
)


FGA自体は9iからある機能である。
では、10gでは何が新機能なのか?
次のとおりである。

  1. audit_trial引数に与える定数によって、記録する監査証跡を変更できる。
  2. 複数列の監視宣言が可能。
  3. select文だけでなく、insert/delete/update/merge文もサポート。
  4. audit_condition引数にNULL指定が可能。NULLの場合、全ての行を監視する。

audit_trial引数による制御

DBMS_FGA.DB_EXTENDEDを指定する。
SQL文とバインドデータを記録する。
DBMS_FGA.DBを指定する。
SQL文とバインドデータは記録しない。

audit_column_opts引数による制御

DBMS_FGA.ANY_COLUMNS
⇒audit_column引数に与えたカラムのいずれかにアクセスした場合に監視する。
DBMS_FGA.ALL_COLUMNS
⇒audit_column引数に与えた列の全てにアクセスした場合に監視する。
なお、select文で取得するカラムあるいは、where句で指定する
カラムいずれの場合も「アクセス」の対象となる。

statement_types引数による制御

この引数に、select/insert/update/deleteが指定可能となる。
insert/update/deleteが全て指定された場合、merge文も自動的に監視される。