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
がユーザーhr
とsh
に対して有効になっているとします。
SELECT policy_name, enabled_option, entity_name FROM audit_unified_enabled_policies WHERE policy_name = 'DML_POL' ORDER BY entity_name; POLICY_NAME ENABLED_OPTION ENTITY_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, entity_name FROM audit_unified_enabled_policies WHERE policy_name = 'DML_POL'; POLICY_NAME ENABLED_OPTION ENTITY_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_USER
とDB_NAME
の値を、ユーザーhr
についてのすべての監査レコードから除外するようにデータベースに指示します。
NOAUDIT CONTEXT NAMESPACE userenv ATTRIBUTES current_user, db_name BY hr;