プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

AUDIT

用途

AUDIT文を使用すると、次の操作を実行できます。

  • 後続のユーザー・セッションでのSQL文の発行の監査。特定のSQL文、または特定のシステム権限によって許可されたすべてのSQL文の発行を監査できます。SQL文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。

  • 特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。


関連項目:

  • 値に基づいた監査方針を作成および管理するDBMS_FGAパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

  • 監査を無効にする方法の詳細は、「NOAUDIT」を参照してください。


前提条件

SQL文の発行を監査するには、AUDIT SYSTEMシステム権限が必要です。ただし、IN SESSION CURRENT句を使用する場合はAUDIT SYSTEMシステム権限は必要ありません。

監査結果を収集するには、初期化パラメータAUDIT_TRAILをデフォルトの設定であるNONE以外の値に設定して、監査を有効にする必要があります。監査オプションは、監査が使用可能であるかどうかにかかわらず指定できます。ただし、監査を有効にしないと、監査レコードは作成されません。

スキーマ・オブジェクト操作を監査するためには、監査対象のオブジェクトが自分のスキーマにある必要があります。自分のスキーマにない場合は、AUDIT ANYシステム権限が必要です。また、監査の対象とするオブジェクトがディレクトリ・オブジェクトの場合は、それが自分で作成したものであっても、AUDIT ANYシステム権限が必要です。


注意:

AUDIT ANYシステム権限によって、権限受領者は、SYSスキーマを除く任意のスキーマ内の任意のオブジェクトを監査できます。O7_DICTIONARY_ACCESSIBILITY初期化パラメータをTRUEに設定することによって、そのような権限受領者がSYSスキーマ内のオブジェクトを監査できるようにすることができます。セキュリティ上の理由のため、この設定の使用には注意が必要です。


関連項目:

AUDIT_TRAILパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

セマンティクス

audit_operation_clause

audit_operation_clauseを使用すると、操作の影響を受けるスキーマ・オブジェクトに関係なく、指定された操作を監査できます。

sql_statement_shortcut

ショートカットを指定すると、特定のSQL文の使用を監査できます。表13-1および表13-2に、ショートカットおよびそれらが監査するSQL文を示します。


注意:

SQL文ショートカットとシステム権限を混同しないでください。次に例を示します。
  • AUDIT USER文は、SQLのCREATE USERALTER USERおよびDROP USER文のすべてを監査するUSERショートカットを指定します。この場合の監査には、ユーザーがALTER USER文で自分のパスワードを変更する操作が含まれています。

  • AUDIT ALTER USER文では、ALTER USERシステム権限を指定して、そのシステム権限を使用するすべての操作を監査できるようにします。この場合の監査には、ユーザーが自分のパスワードを変更する操作は含まれません。これは、その操作には、ALTER USERシステム権限は必要ないためです。


監査されるたびに、次の情報を持つ監査レコードが生成されます。

  • 操作を行ったユーザー

  • 操作の種類

  • 操作に関連するオブジェクト

  • 操作の日付と時刻

監査レコードは、監査証跡に書き込まれます。監査証跡とは、監査レコードが入っているデータベースの表です。データ・ディクショナリ・ビューを問い合せて監査証跡を調べることによって、データベース・アクティビティを再検討できます。


関連項目:

  • 監査証跡データ・ディクショナリ・ビューのリストの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • 「ロールに関連するSQL文の監査例:」


system_privilege

システム権限を指定すると、そのシステム権限で許可されているSQL文およびその他の操作を監査できます。


注意:

ANYキーワードを含むシステム権限の使用の監査は、ANYキーワードを含まない同じ権限の使用の監査より限定的です。次に例を示します。
  • AUDIT CREATE PROCEDUREは、CREATE PROCEDUREまたはCREATE ANY PROCEDURE権限を使用して発行された文を監査します。

  • AUDIT CREATE ANY PROCEDUREは、CREATE ANY PROCEDURE権限を使用して発行された文のみを監査します。


多くの個々のシステム権限を指定するのではなく、ロールCONNECTRESOURCEおよび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句を使用すると、監査するマイニング・モデル名を指定できます。

NETWORK

この句を使用すると、ネットワーク・レイヤーの内部的な障害を検出できます。


関連項目:

ネットワーク監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

BY SESSION

以前のリリースでは、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

BY ACCESSを指定すると、監査された各文および操作について、1つのレコードを書き込むことができます。


注意:

データ定義言語(DDL)文を監査するSQL文ショートカットまたはシステム権限を指定した場合は、常にアクセスごとに監査されます。それ以外のすべての場合、データベースはBY SESSIONまたはBY ACCESSの指定に従います。

DDL文以外のSQL文を監査する文オプションとシステム権限には、BY SESSIONまたはBY ACCESSのいずれかを指定できます。デフォルトはBY SESSIONです。

WHENEVER [NOT] SUCCESSFUL

WHENEVER SUCCESSFULを指定すると、正常に実行されたSQL文および操作のみを監査できます。

失敗またはエラーが発生した文および操作のみを監査する場合は、WHENEVER NOT SUCCESSFULを指定します。

この句を指定しない場合、処理結果にかかわらず監査が行われます。

監査オプションの表

表13-1 監査のSQL文ショートカット

SQL文ショートカット 監査済のSQL文と操作

ALTER SYSTEM

ALTER SYSTEM

CLUSTER

CREATE CLUSTER

ALTER CLUSTER

DROP CLUSTER

TRUNCATE CLUSTER

CONTEXT

CREATE CONTEXT

DROP CONTEXT

DATABASE LINK

CREATE DATABASE LINK

ALTER DATABASE LINK

DROP DATABASE LINK

DIMENSION

CREATE DIMENSION

ALTER DIMENSION

DROP DIMENSION

DIRECTORY

CREATE DIRECTORY

DROP DIRECTORY

INDEX

CREATE INDEX

ALTER INDEX

ANALYZE INDEX

DROP INDEX

MATERIALIZED VIEW

CREATE MATERIALIZED VIEW

ALTER MATERIALIZED VIEW

DROP MATERIALIZED VIEW

NOT EXISTS

指定したオブジェクトが存在しない場合に失敗するすべてのSQL文。

OUTLINE

CREATE OUTLINE

ALTER OUTLINE

DROP OUTLINE

PROCEDURE(表の後の「注意」を参照)

CREATE FUNCTION

CREATE LIBRARY

CREATE PACKAGE

CREATE PACKAGE BODY

CREATE PROCEDURE

DROP FUNCTION

DROP LIBRARY

DROP PACKAGE

DROP PROCEDURE

PROFILE

CREATE PROFILE

ALTER PROFILE

DROP PROFILE

PUBLIC DATABASE LINK

CREATE PUBLIC DATABASE LINK

ALTER PUBLIC DATABASE LINK

DROP PUBLIC DATABASE LINK

PUBLIC SYNONYM

CREATE PUBLIC SYNONYM

DROP PUBLIC SYNONYM

ROLE

CREATE ROLE

ALTER ROLE

DROP ROLE

SET ROLE

ROLLBACK SEGMENT

CREATE ROLLBACK SEGMENT

ALTER ROLLBACK SEGMENT

DROP ROLLBACK SEGMENT

SEQUENCE

CREATE SEQUENCE

DROP SEQUENCE

SESSION

Logons

SYNONYM

CREATE SYNONYM

DROP SYNONYM

SYSTEM AUDIT

AUDIT sql_statements

NOAUDIT sql_statements

SYSTEM GRANT

GRANT system_privileges_and_roles

REVOKE system_privileges_and_roles

TABLE

CREATE TABLE

DROP TABLE

TRUNCATE TABLE

TABLESPACE

CREATE TABLESPACE

ALTER TABLESPACE

DROP TABLESPACE

TRIGGER

CREATE TRIGGER

ALTER TRIGGER

ENABLEおよびDISABLE句付き

DROP TRIGGER

ALTER TABLE

ENABLE ALL TRIGGERS句付き

DISABLE ALL TRIGGERS句付き

TYPE

CREATE TYPE

CREATE TYPE BODY

ALTER TYPE

DROP TYPE

DROP TYPE BODY

USER

CREATE USER

ALTER USER

DROP USER

注意:

  • AUDIT USERは、これら3つのSQL文を監査します。AUDIT ALTER USERを使用すると、ALTER USERシステム権限を必要とする文を監査できます。

  • AUDIT ALTER USER文は、自分のパスワードを変更するユーザーを監査しません。これは、このアクティビティにはALTER USERシステム権限は必要ではないためです。

VIEW

CREATE VIEW

DROP VIEW



注意:

Javaスキーマ・オブジェクト(ソース、クラスおよびリソース)は、SQL文の監査ではプロシージャと同じであるとみなされます。

表13-2 監査のその他のSQL文ショートカット

SQL文ショートカット 監査済のSQL文と操作

ALTER SEQUENCE

ALTER SEQUENCE

ALTER TABLE

ALTER TABLE

COMMENT TABLE

COMMENT ON TABLE table, view, materialized view

COMMENT ON COLUMN table.column, view.column, materialized view.column

DELETE TABLE

DELETE FROM table, view

EXECUTE PROCEDURE

CALL

プロシージャやファンクションの実行、またはパッケージ内の変数、ライブラリまたはカーソルへのアクセス。

GRANT DIRECTORY

GRANT privilege ON directory

REVOKE privilege ON directory

GRANT PROCEDURE

GRANT privilege ON procedure, function, package

REVOKE privilege ON procedure, function, package

GRANT SEQUENCE

GRANT privilege ON sequence

REVOKE privilege ON sequence

GRANT TABLE

GRANT privilege ON table, view, materialized view

REVOKE privilege ON table, view, materialized view

GRANT TYPE

GRANT privilege ON TYPE

REVOKE privilege ON TYPE

INSERT TABLE

INSERT INTO table, view

LOCK TABLE

LOCK TABLE table, view

SELECT SEQUENCE

sequence.CURRVALまたはsequence.NEXTVALを含む文

SELECT TABLE

SELECT FROM table, view, materialized view

UPDATE TABLE

UPDATE table, view


表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: INSERTUPDATEおよび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文の監査オプションが自動的に構成されます。