監査の意義
一般的に監査は以下の目的で実施される。
- 権限管理の実装に関する問題の検出
- 不審なアクティビティの調査・検出
- 不正行為をおこなっていない証明
- 不正行為の未然予防(心理的障壁)
- コンプライアンス要件への対応(監査レポート提出など)
監査というと不正をチェックするものとの認識が多いと思うが、その他にも管理者や社員の身の潔白を証明するためにも利用できる。とくに大きな権限を持つ管理者は、Database Vaultなどを利用した管理者自身の権限の制限(厳格な職務分掌)をおこない、かつ整合性が確保された監査証跡を残す必要がある。
Oracle Databaseでは、監査機能、標準監査、ファイングレイン監査、DBA監査という3つの監査機能を提供している。まずはこの3つの監査の特徴とTIPSを紹介する。詳細な設定方法に関しては、それぞれのリンク先を確認してほしい。
標準監査
標準監査は指定した操作が実行された際に証跡を出力する。表へのアクセスの他にも、データベースへのログイン、表などのオブジェクトの構成変更、権限管理の実施など様々なデータベース操作に対して監査を設定することが可能だ。監査可能な操作は「SQL言語リファレンス」マニュアルのAUDITコマンドにまとまっている。
標準監査の監査証跡の出力先はAUDIT_TRAIL初期化パラメータで設定し、OSファイルやデータベース表(SYS.AUD$表)を指定できる。出力先にOSファイルを指定した場合には、AUDIT_FILE_DEST初期化パラメータで指定したディレクトリに出力される。
監査証跡の出力先として、データベース表を指定したほうが管理は容易だが、OSファイルに監査証跡を格納したほうが監査処理のオーバーヘッドが少なく、またデータベースへの権限ではないOSファイルへのアクセス権限が必要になるためより安全と言える。
Oracle Database 11gR1以降では、DBCA(Database Configuration Assistant)でデータベースを作成すると、デフォルトでいくつかの標準監査が有効になるように変更された。詳細は「セキュリティ・ガイド」マニュアルのデフォルトの監査設定の概要にある。
権限付与やデータベースオブジェクトの構成変更など、実行回数が多くなく、問題発生時に後から問題発生原因を突き止めるのに非常に有効な監査設定が有効になる。だたし、ログイン監査など、システムによっては大量の監査証跡が生成される可能性がある監査もあるため、どのような監査が有効になっているかを確認し、パフォーマンスや利用領域に影響が大きいと判断した監査に関しては個別に無効化してほしい。
Oracle Database 11gR1までは監査証跡を格納するSYS.AUD$表をSYSTEM表領域から移動することはできないが、Oracle Database 11gR2では、DBMS_AUDIT_MGMTパッケージを利用して、SYS.AUD$表を他の表領域に移動できる。監査証跡表を自動セグメント領域管理の表領域に移動することで、バッファビジーやキャッシュフュージョンによる待機を軽減可能であるため、該当バージョン利用の場合にはぜひ利用してほしい。