Oracle Database の標準監査機能について

*以下は、サポート契約締結中のお客様に毎月配信しているサポートレターより一部抜粋して掲載しています。

標準監査について

「昨今、管理アクセス権限の悪用による情報の漏えいや不正アクセスによる個人情報の閲覧、不正取得などの発生により、データベースに対するセキュリティの強化というものが見直されています。これらの不正行為に対する予防や素早い対応を実施するための手段として、「監査ログの取得」というものがあります。今回は監査機能のひとつである「標準監査」について取り上げ、説明します。
標準監査を使用することで、データベースに関連した操作の内容について正確に検知することができます。

標準監査の内容

標準監査では、データベースに対する操作を記録する監査機能が提供されています。この機能は AUDIT 文を発行することで監査証跡を記録することができ、監査ログとして確認する ことができます。標準監査の主な機能としては下記のものがあります。

1. セッション監査
ログオン/ログアウトを監査し、不正なアクセスを確認します。
2. 権限監査
強力なシステム権限の使用状況を監査します。データベースに対してアクセスする一部のユーザ、またはすべてのユーザを監査するよう設定することができます。
3. オブジェクト監査
特定のスキーマオブジェクトについて特定の SQL 文、あるいは GRANT / REVOKE 文に対する監査を実行します。監査の指定となっているオブジェクト権限を利用してオブジェクトにアクセスした場合に監査レコードが出力されます。対象は、監査対象オブジェクトにアクセスしている全ユーザです。
4. SQL 文監査
実行しようとしている SQL 文のタイプに関して監査を行います。文監査として DDL を対象とするケース、DML を対象とするケースがあります。

標準監査設定の前に

後述する AUDIT 文発行による監査の設定を行うためには、事前に以下の2つの対応が必要となります。

  • 初期化パラメータ AUDIT_TRAIL の設定
  • 監査を使用可能にする権限の付与

1. 初期化パラメータ AUDIT_TRAIL の設定

AUDIT_TRAIL はデータベースの監査機能を有効または無効にする初期化パラメータです。
監査機能を有効にするときは、同時に監査レコードの出力先を指定する必要があります。

[構文]
AUDIT_TRAIL = { none | os | db [, extended] | xml [, extended] }

「none」の場合では、標準監査機能を無効にします。「os」の場合では、監査レコードはオペレーティングシステム・ファイルに書き込みます。「db [, extended]」の場合では、監査レコードは DB の SYS.AUD$ 表に書き込まれます。「xml [, extended]」の場合では、初期化パラメータ AUDIT_FILE_DEST に指定された OS 上のディレクトリに、XML 形式の監査ファイルが出力されます。

各パラメータの詳細につきましては、下記に記載がございます。

AUDIT_TRAIL, AUDIT_FILE_DEST の変更は、SYS ユーザにて ALTER SYSTEM 文を実行することで可能です。変更を反映させるためには、データベースの再起動が必要となります。

例)

SYS ユーザで接続、初期化パラメータ設定変更

SQL> connect / as sysdba
SQL> alter system audit_trail=xml, extended scope=spfile;

※ audit_trail=xml, extended なので、audit_file_dest で出力先を指定する。

SQL> alter system audit_file_dest='出力先ディレクトリ名' scope=spfile;

データベースの再起動

SQL> shutdown immediate
SQL> startup

設定の確認

SQL> show parameter audit

2. 監査を使用可能にする権限の付与

文監査を実行するためには、AUDIT SYSTEM 権限が必要です。

SQL> GRANT AUDIT SYSTEM to <ユーザ名>;

※ IN SESSION CURRENT 句を使用して、現行セッションに対し SQL 文監査をする場合には追加で権限を設定する必要はありません。

標準監査の設定

AUDIT 文を実行することで、SQL 文の使用について監査することができます。
監査の対象としては、下記に記載のありますマニュアルの 表 13-1 や 表 13-2 に記載されている SQL 文を指定することができます。

例)

  • 個別のユーザが実行する全ての SQL 文を監査する場合は ALL 句を使用すると、表 13-1 および表 13-2 に記載されているすべての SQL 文ショートカットを監査の対象とすることができます。

SQL> AUDIT ALL BY <ユーザ名> BY ACCESS;

  • ユーザに関係なく、現行セッションのすべての SQL 文を監査する場合。
    ALL STATEMENTS 監査オプションで IN SESSION CURRENT 句を使用して、ユーザ・セッションの存続期間におけるトップレベルの SQL 文を監査することができます。

SQL> AUDIT ALL STATEMENTS IN SESSION CURRENT;

このタイプの監査は、対象のセッションが終了するまで有効です。

なお、上記で設定した監査設定は、NOAUDIT 文を実行することで設定を解除することができます。

監査設定する際の注意点

監査内容の出力による影響

監査対象データベースの環境や設定内容によっては、監査ログが大量に出力される場合があります。ログが大量に出力されると実際に必要な情報の確認や分析が困難になったり、ログの出力により SYS.AUD$ 表やディスクが圧迫されるといった恐れがあります。定期的に出力先の変更や、データの削除等をご検討ください。

追加処理による多少のパフォーマンス低下の可能性

監査機能を有効にすることで、通常の機能に加えた処理を行うこととなります。そのため、パフォーマンスに対して多少なりとも影響を与える場合があります。監査処理による影響の度合いについては、環境や負荷、設定内容により異なります。

おわりに

今回は監査ログの機能の中から、標準監査機能を使用することで取得することができる情報の内容および、標準監査機能の設定方法についてご紹介いたしました。適切な監査機能の設定を行っていただくことで、より安全性の高いデータベースの運用を行っていただければ幸いです。

参考情報

(オラクル事業部 グローバル・アライアンス&サポート・サービス担当 竹内)

Oracle Database の標準監査機能について