用途
後続のユーザー・セッションでのSQL文の発行の監査。特定のSQL文、または特定のシステム権限によって許可されたすべてのSQL文の発行を監査できます。SQL文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。
特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。
関連項目:
|
前提条件
SQL文の発行を監査するには、AUDIT
SYSTEM
システム権限が必要です。ただし、IN
SESSION
CURRENT
句を使用する場合はAUDIT
SYSTEM
システム権限は必要ありません。
監査結果を収集するには、初期化パラメータAUDIT_TRAIL
をデフォルトの設定であるNONE
以外の値に設定して、監査を有効にする必要があります。監査オプションは、監査が使用可能であるかどうかにかかわらず指定できます。ただし、監査を有効にしないと、監査レコードは作成されません。
スキーマ・オブジェクト操作を監査するためには、監査対象のオブジェクトが自分のスキーマにある必要があります。自分のスキーマにない場合は、AUDIT
ANY
システム権限が必要です。また、監査の対象とするオブジェクトがディレクトリ・オブジェクトの場合は、それが自分で作成したものであっても、AUDIT
ANY
システム権限が必要です。
関連項目: AUDIT_TRAILパラメータの詳細は、『Oracle Databaseリファレンス』 を参照してください。 |
構文
audit::=
セマンティクス
audit_operation_clause
audit_operation_clause
を使用すると、操作の影響を受けるスキーマ・オブジェクトに関係なく、指定された操作を監査できます。
sql_statement_shortcut
ショートカットを指定すると、特定のSQL文の使用を監査できます。表13-1および表13-2に、ショートカットおよびそれらが監査するSQL文を示します。
注意: SQL文ショートカットとシステム権限を混同しないでください。次に例を示します。
|
監査されるたびに、次の情報を持つ監査レコードが生成されます。
操作を行ったユーザー
操作の種類
操作に関連するオブジェクト
操作の日付と時刻
監査レコードは、監査証跡に書き込まれます。監査証跡とは、監査レコードが入っているデータベースの表です。データ・ディクショナリ・ビューを問い合せて監査証跡を調べることによって、データベース・アクティビティを再検討できます。
関連項目:
|
system_privilege
システム権限を指定すると、そのシステム権限で許可されているSQL文およびその他の操作を監査できます。
注意: ANY キーワードを含むシステム権限の使用の監査は、ANY キーワードを含まない同じ権限の使用の監査より限定的です。次に例を示します。
|
多くの個々のシステム権限を指定するのではなく、ロールCONNECT
、RESOURCE
およびDBA
を指定できます。これは、そのロールに付与されているすべてのシステム権限を監査することと同じです。
Oracle Databaseには、システム権限と文オプションをまとめて指定するための、次の3つのショートカットが用意されています。
ALL ALL
を指定すると、表13-1のすべての文オプションを監査できます。ただし、表13-2の追加文オプションは監査しません。
ALL STATEMENTS ALL
STATEMENTS
を指定すると、実行されるすべてのトップレベルSQL文を監査できます。トップレベルSQL文は、ユーザーによって直接発行される文です。PL/SQLプロシージャ内またはファンクション内から実行されるSQL文は、トップレベルの文とはみなされません。そのため、この句では、PL/SQLプロシージャ内またはファンクション内から実行される文は監査されません。ただし、PL/SQLプロシージャまたはファンクション自体の実行は監査されます。この句は、システム全体またはユーザー固有の他の監査構成に関係なく、特定の環境内の文をすべて監査する場合に有効です。
ALL PRIVILEGES ALL
PRIVILEGES
を指定すると、システム権限を監査できます。
注意: ロールまたはショートカットでなく、監査に個々のシステム権限および文オプションを指定することをお薦めします。ロールおよびショートカットに含まれるシステム権限および文オプションは、リリースごとに異なり、Oracle Databaseの今後のバージョンでサポートされない場合があります。 |
関連項目:
|
auditing_by_clause
auditing_by_clause
を指定すると、特定のユーザーによって発行されたSQL文のみを監査するように制限できます。この句を指定しない場合、すべてのユーザー文が監査されます。
IN SESSION CURRENT
この句を使用すると、監査を現行のセッションに制限できます。
audit_schema_object_clause
audit_schema_object_clause
を使用すると、特定のスキーマ・オブジェクトの操作を監査できます。
sql_operation
監査するSQL操作を指定します。表13-3に、監査できるオブジェクトのタイプ、およびオブジェクトごとに監査できるSQL文を示します。たとえば、ALTER
操作を指定して表の監査を選択した場合、その表に対して発行されるALTER
TABLE
文がすべて監査されます。また、SELECT
操作を指定して順序の監査を選択した場合、その順序の値を使用するすべての文が監査されます。
ALL
ALL
をショートカットに指定することは、オブジェクト・タイプに適用できるSQL操作をすべて指定することと同じです。
auditing_on_clause
auditing_on_clause
を使用すると、監査する特定のスキーマ・オブジェクトを指定できます。
schema 監査の対象として選択されたオブジェクトが定義されているスキーマを指定します。schema
を指定しない場合、オブジェクトは自分のスキーマ内にあるとみなされます。
object 監査するオブジェクトの名前を指定します。オブジェクトは、表、ビュー、順序、ストアド・プロシージャ、ストアド・ファンクション、ストアド・パッケージ、マテリアライズド・ビュー、マイニング・モデルまたはライブラリのいずれかである必要があります。
表、ビュー、順序、プロシージャ、ストアド・ファンクション、パッケージ、マテリアライズド・ビューまたはユーザー定義型については、それぞれシノニムも指定できます。
ON DEFAULT ON
DEFAULT
を指定すると、それ以降に作成したオブジェクトのデフォルト・オブジェクト・オプションとして使用する、指定のオブジェクト・オプションを作成できます。デフォルトの監査オプションが確立されると、その後作成されるオブジェクトに対して、これらのオプションが自動的に適用され、監査が行われます。ビューに対するデフォルト監査オプションは、常に、そのビューの実表に対する監査オプションの論理和となります。ALL_DEF_AUDIT_OPTS
データ・ディクショナリ・ビューを問い合せることによって、現在のデフォルト監査オプションを表示できます。
デフォルト監査オプションを変更した場合でも、以前作成したオブジェクトの監査オプションはそのまま残ります。AUDIT
文のON
句にオブジェクトを指定した場合のみ、既存のオブジェクトの監査オプションを変更できます。
ON DIRECTORY ON
DIRECTORY
句を使用すると、監査するディレクトリ名を指定できます。
ON MINING MODEL ON
MINING
MODEL
句を使用すると、監査するマイニング・モデル名を指定できます。
この句を使用すると、ネットワーク・レイヤーの内部的な障害を検出できます。
関連項目: ネットワーク監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
以前のリリースでは、BY
SESSION
を指定すると、データベースによって、同一セッションの同一スキーマ・オブジェクトで実行された同じ種類のすべてのSQL文または操作に対して1つのレコードが書き込まれました。このリリースのOracle Databaseからは、BY
SESSION
およびBY
ACCESS
を指定すると、監査された文および操作ごとに1つの監査レコードが書き込まれます。BY
ACCESS
と比較すると、BY
SESSION
では引き続き異なる値が監査証跡に移入されます。すべてのAUDIT
文にBY
ACCESS
句を指定し、より詳細な監査レコードを書き込むことをお薦めします。どちらの句も指定しない場合は、BY
SESSION
がデフォルトになります。
注意: この句は、データ定義言語(DDL)文以外のSQL文を監査するスキーマ・オブジェクト監査オプション、文オプションおよびシステム権限にのみ適用されます。DDL文を監査するすべてのBY ACCESS SQL文およびシステム権限は、データベースによって常に監査されます。 |
BY
ACCESS
を指定すると、監査された各文および操作について、1つのレコードを書き込むことができます。
注意: データ定義言語(DDL)文を監査するSQL文ショートカットまたはシステム権限を指定した場合は、常にアクセスごとに監査されます。それ以外のすべての場合、データベースはBY SESSION またはBY ACCESS の指定に従います。 |
DDL文以外のSQL文を監査する文オプションとシステム権限には、BY
SESSION
またはBY
ACCESS
のいずれかを指定できます。デフォルトはBY
SESSION
です。
WHENEVER
SUCCESSFUL
を指定すると、正常に実行されたSQL文および操作のみを監査できます。
失敗またはエラーが発生した文および操作のみを監査する場合は、WHENEVER
NOT
SUCCESSFUL
を指定します。
この句を指定しない場合、処理結果にかかわらず監査が行われます。
監査オプションの表
表13-1 監査のSQL文ショートカット
SQL文ショートカット | 監査済のSQL文と操作 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定したオブジェクトが存在しない場合に失敗するすべてのSQL文。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Logons |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意:
|
|
|
注意: Javaスキーマ・オブジェクト(ソース、クラスおよびリソース)は、SQL文の監査ではプロシージャと同じであるとみなされます。 |
SQL文ショートカット | 監査済のSQL文と操作 |
---|---|
|
|
|
|
|
|
|
|
|
プロシージャやファンクションの実行、またはパッケージ内の変数、ライブラリまたはカーソルへのアクセス。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表13-3 スキーマ・オブジェクト監査オプション
オブジェクト | SQL操作 |
---|---|
表 |
ALTER AUDIT COMMENT DELETE FLASHBACK (注意3)GRANT INDEX INSERT LOCK RENAME SELECT UPDATE |
ビュー |
AUDIT COMMENT DELETE FLASHBACK (注意3)GRANT INSERT LOCK RENAME SELECT UPDATE |
順序 |
ALTER AUDIT GRANT SELECT |
プロシージャ、ファンクション、パッケージ(注意1) |
AUDIT EXECUTE GRANT |
マテリアライズド・ビュー(注意2) |
ALTER AUDIT COMMENT DELETE INDEX INSERT LOCK SELECT UPDATE |
マイニング・モデル |
AUDIT COMMENT GRANT RENAME SELECT |
ディレクトリ |
AUDIT GRANT READ |
ライブラリ |
EXECUTE GRANT |
オブジェクト型 |
ALTER AUDIT GRANT |
注意1: Javaスキーマ・オブジェクト(ソース、クラスおよびリソース)は、監査オプションではプロシージャ、ファンクションおよびパッケージと同じであるとみなされます。
注意2: INSERT
、UPDATE
およびDELETE
操作の監査は、更新可能なマテリアライズド・ビューに対してのみ可能です。
注意3: FLASHBACK
監査オブジェクト・オプションは、フラッシュバック問合せに対してのみ適用されます。
例
ロールに関連するSQL文の監査例: 次の文は、ロールの作成、変更、削除または設定を行う各SQL文が正常に終了したかどうかにかかわらず、それらの文について監査を行います。
AUDIT ROLE;
次の文は、ロールの作成、変更、削除または設定を行う、正常に終了したSQL文ごとに監査を行います。
AUDIT ROLE WHENEVER SUCCESSFUL;
次の文は、Oracle Databaseエラーが発生したCREATE
ROLE
文、ALTER
ROLE
文、DROP
ROLE
文またはSET
ROLE
文について監査を行います。
AUDIT ROLE WHENEVER NOT SUCCESSFUL;
問合せおよび更新を行うSQL文の監査例: 次の文は、表の問合せまたは更新を実行する文について監査を行います。
AUDIT SELECT TABLE, UPDATE TABLE;
次の文は、ユーザーhr
およびoe
が発行する、表やビューの問合せまたは更新を実行する文について監査を行います。
AUDIT SELECT TABLE, UPDATE TABLE BY hr, oe;
削除の監査例: 次の文は、DELETE
ANY
TABLE
システム権限で発行された文について監査を行います。
AUDIT DELETE ANY TABLE;
ディレクトリに関連する文の監査例: 次の文は、CREATE
ANY
DIRECTORY
システム権限で発行された文について監査を行います。
AUDIT CREATE ANY DIRECTORY;
CREATE
ANY
DIRECTORY
システム権限を使用しないCREATE
DIRECTORY
(およびDROP
DIRECTORY
)文を監査する場合は、次の文を発行します。
AUDIT DIRECTORY;
次の文は、bfile_dir
ディレクトリからファイルを読み込む各文について監査を行います。
AUDIT READ ON DIRECTORY bfile_dir;
表の問合せの監査例: 次の文は、スキーマhr
内のemployees
表を問い合せる各SQL文について監査を行います。
AUDIT SELECT ON hr.employees;
次の文は、スキーマhr
内のemployees
表を問い合せて正常に終了した各文について監査を行います。
AUDIT SELECT ON hr.employees WHENEVER SUCCESSFUL;
次の文は、スキーマhr
内のemployees
表を問い合せてOracle Databaseエラーが発生した各文について監査を行います。
AUDIT SELECT ON hr.employees WHENEVER NOT SUCCESSFUL;
表の挿入および更新の監査例: 次の文は、スキーマoe
内のcustomers
表に対して行を挿入または更新する各文について監査を行います。
AUDIT INSERT, UPDATE ON oe.customers;
順序の操作の監査例: 次の文は、スキーマhr
内のemployees_seq
順序に対する操作を行う各文について監査を行います。
AUDIT ALL ON hr.employees_seq;
この文では、順序に対して操作を行う次の文について監査を行うため、ALL
ショートカットを使用しています。
ALTER
SEQUENCE
AUDIT
GRANT
疑似列CURRVAL
またはNEXTVAL
を使用して、順序の値にアクセスするすべての文
デフォルト監査オプションの設定例: 次の文は、以降に作成されるオブジェクトのデフォルト監査オプションを指定します。
AUDIT ALTER, GRANT, INSERT, UPDATE, DELETE ON DEFAULT;
以降に作成されるオブジェクトは、指定したオプションによって自動的に監査用に構成されます。
表を作成した場合、その表に対して発行されるALTER
文、GRANT
文、INSERT
文、UPDATE
文またはDELETE
文の監査オプションが自動的に構成されます。
ビューを作成した場合、そのビューに対するGRANT
文、INSERT
文、UPDATE
文またはDELETE
文の監査オプションが自動的に構成されます。
順序を作成した場合、その順序に対するALTER
文またはGRANT
文の監査オプションが自動的に構成されます。
プロシージャ、パッケージまたはファンクションを作成した場合、それらに対するALTER
文またはGRANT
文の監査オプションが自動的に構成されます。