NOAUDIT (統合監査)

この項では、統合監査用のNOAUDIT文について説明します。この種類の監査は、Oracle Database 12cで新たに導入されたもので、完全かつ高度な監査機能を提供します。統合監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

目的

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

  • すべてのユーザーまたは特定のユーザーに対して、統合監査ポリシーを無効化します。

  • コンテキスト属性の値を監査レコードから除外します。

この文で実行される操作は、現行のセッションではなく、それ以降のユーザー・セッションで有効になります。

前提条件

AUDIT SYSTEMシステム権限、またはAUDIT_ADMINロールが必要になります。

マルチテナント・コンテナ・データベース(CDB)に接続している場合、共通の統合監査ポリシーを無効化するには、現在のコンテナがルートである必要があります。また、共通に付与されているAUDIT SYSTEM権限またはAUDIT_ADMIN共通ロールが必要です。ローカルの統合監査ポリシーを無効化するには、現在のコンテナが、その監査ポリシーが作成されたコンテナである必要があります。また、共通に付与されているAUDIT SYSTEM権限またはAUDIT_ADMIN共通ロールを保有しているか、そのコンテナでローカルに付与されているAUDIT SYSTEM権限またはAUDIT_ADMINローカル・ロールを保有している必要があります。

CDBに接続しているときにNOAUDIT CONTEXT ...文を指定するには、共通に付与されているAUDIT SYSTEM権限またはAUDIT_ADMIN共通ロールを保有しているか、現在のセッションのコンテナでローカルに付与されているAUDIT SYSTEM権限またはAUDIT_ADMINローカル・ロールを保有している必要があります。

構文

unified_noaudit::=

by_users_with_roles::=

セマンティクス

policy

無効化する統合監査ポリシーの名前を指定します。

すべての統合監査ポリシーの説明を検索するには、AUDIT_UNIFIED_POLICIESビューを問い合わせます。すべての有効な統合監査ポリシーの説明を検索するには、AUDIT_UNIFIED_ENABLED_POLICIESビューを問い合わせます。

関連項目:

AUDIT_UNIFIED_POLICIESおよびAUDIT_UNIFIED_ENABLED_POLICIESビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

CONTEXT句

CONTEXT句を指定すると、監査レコードのコンテキスト属性の値を除外できます。

  • namespaceには、コンテキスト・ネームスペースを指定します。

  • attributeには、監査レコードから除外する値を持つ1つ以上のコンテキスト属性を指定します。

現在のコンテナがCDBのルートであるときにCONTEXT句を指定すると、ルートで実行されたイベントについての監査レコードにのみ、コンテキスト属性の値が含まれるようになります。オプションのBY句を指定する場合、userは共通ユーザーにする必要があります。

現在のコンテナがプラガブル・データベース(PDB)であるときにCONTEXT句を指定すると、PDBで実行されたイベントについての監査レコードにのみ、コンテキスト属性の値が含まれるようになります。オプションのBY句を指定する場合、userは、共通ユーザーまたはそのPDBのローカル・ユーザーにする必要があります。

監査証跡に取得されるように構成されている、アプリケーション・コンテキストの属性を調べるには、AUDIT_UNIFIED_CONTEXTSビューを問い合わます。

関連項目:

AUDIT_UNIFIED_CONTEXTSビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

BY

BY句は、NOAUDIT POLICYおよびNOAUDIT CONTEXT文に対して指定できます。

NOAUDIT POLICY ... BY

BY句の動作は、policyがすべてのユーザーと特定のユーザーのどちらに対して有効になっているかによって異なります。

  • policyがすべてのユーザーに対して有効になっている場合、BY句を省略することによって、policyをすべてのユーザーに対して無効化できます。BY句を指定した場合、NOAUDIT POLICY文による影響はありません。

  • policyが(AUDIT POLICY ... BY ...文を使用することによって)1人以上のユーザーに対して有効になっている場合、次の操作を実行できます。

    • BY句の後にpolicyを無効化するユーザーを指定することによって、1人以上のユーザーに対してpolicyを無効化できます

    • BY句の後にpolicyが有効になっているすべてのユーザーを指定することによって、policyを完全に無効化できます

    BY句を指定しなかった場合、NOAUDIT POLICY文による影響はありません。

  • policyが(AUDIT POLICY ... EXCEPT ...文を使用することによって)特定のユーザーを除くすべてのユーザーに対して有効になっている場合、BY句を省略することによって、policyをすべてのユーザーに対して無効化できます。BY句を指定した場合、NOAUDIT POLICY文による影響はありません。

policyが共通の統合監査ポリシーの場合、userは共通ユーザーにする必要があります。policyがローカルの統合監査ポリシーの場合、userは共通ユーザーまたは接続先のコンテナのローカル・ユーザーにする必要があります。

NOAUDIT CONTEXT ... BY

BY句の動作は、attributeがすべてのユーザーと特定のユーザーのどちらの監査レコードに含まれるように構成されているかによって異なります。

  • attributeがすべてのユーザーの監査レコードに含まれるように構成されている場合、BY句を省略することによって、attributeをすべてのユーザーの監査レコードから除外できます。BY句を指定した場合、NOAUDIT CONTEXT文による影響はありません。

  • attributeが特定のユーザーの監査レコードに含まれるように構成されている場合、BY句の後にattributeを除外するユーザーを指定することによって、1人以上のユーザーのattributeを除外できます。BY句を指定しなかった場合、NOAUDIT CONTEXT文による影響はありません。

by_users_with_roles

この句を指定すると、指定したロールが直接付与されているユーザーに対してのみ、policyを無効にできます。後で追加ユーザーにいずれかのロールを付与した場合、ポリシーはそのユーザーに対して自動的に無効になります。

CDBに接続されているときに、policyが共通の統合監査ポリシーである場合、roleは共通ロールである必要があります。policyがローカルの統合監査ポリシーの場合、ロールは共通ロールまたは接続先のコンテナのローカル・ロールにする必要があります。

次の例では、CREATE AUDIT POLICY「例」で作成し、AUDIT「例」で有効にした統合監査ポリシーを無効にします。

すべてのユーザーの統合監査ポリシーの無効化: 例

統合監査ポリシーtable_polがすべてのユーザーに対して有効になっているとします。次の文では、すべてのユーザーに対してtable_polを無効化します。

NOAUDIT POLICY table_pol;

次の文では、行が戻されません。これは、すべてのユーザーに対してtable_polが無効になっていることを示しています。

SELECT *
  FROM audit_unified_enabled_policies
  WHERE policy_name = 'TABLE_POL';

特定のユーザーの統合監査ポリシーの無効化: 例

次の問合せで表示されるように、統合監査ポリシーdml_polがユーザーhrshに対して有効になっているとします。

SELECT policy_name, enabled_option, user_name
  FROM audit_unified_enabled_policies
  WHERE policy_name = 'DML_POL'
  ORDER BY user_name;
 
POLICY_NAME  ENABLED_OPTION  USER_NAME
-----------  -----------  ---------
DML_POL      BY           HR
DML_POL      BY           SH

次の文では、ユーザーhrに対してdml_polを無効化します。

NOAUDIT POLICY dml_pol BY hr;

次の文では、dml_polがユーザーshに対してのみ有効になっていることを確認します。

SELECT policy_name, enabled_option, user_name
  FROM audit_unified_enabled_policies
  WHERE policy_name = 'DML_POL';
 
POLICY_NAME  ENABLED_OPTION  USER_NAME
-----------  -----------  ---------
DML_POL      BY           SH

次の文では、ユーザーshに対してdml_polを無効化します。

NOAUDIT POLICY dml_pol BY sh;

次の文では、行が戻されません。これは、すべてのユーザーに対してdml_polが無効になっていることを示しています。

SELECT *
  FROM audit_unified_enabled_policies
  WHERE policy_name = 'DML_POL';

監査レコードのコンテキスト属性値の除外: 例

次の文では、ネームスペースUSERENVの属性CURRENT_USERDB_NAMEの値を、ユーザーhrについてのすべての監査レコードから除外するようにデータベースに指示します。

NOAUDIT CONTEXT NAMESPACE userenv
  ATTRIBUTES current_user, db_name
  BY hr;