プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
12cリリース1 (12.1)
B71278-13
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CREATE AUDIT POLICY (統合監査)

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

用途

CREATE AUDIT POLICY文を使用すると、統合監査ポリシーを作成できます。

前提条件

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

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

構文

create_audit_policy::=

create_audit_policy.gifの説明が続きます。
「図create_audit_policy.gif」の説明


注意:

少なくともprivilege_audit_clause句、action_audit_clause句、またはrole_audit_clause句のいずれか1つを指定する必要があります。

(privilege_audit_clause::=action_audit_clause::=role_audit_clause::=を参照)

privilege_audit_clause::=

privilege_audit_clause.gifの説明が続きます。
「図privilege_audit_clause.gif」の説明

action_audit_clause::=

action_audit_clause.gifの説明が続きます。
「図action_audit_clause.gif」の説明


注意:

standard_actions句とcomponent_actions句は単独で指定することも、どちらかの順序で指定することもできますが、それぞれの句を指定できるのは1回のみです。

standard_actions::=

standard_actions.gifの説明が続きます。
「図standard_actions.gif」の説明

component_actions::=

component_actions.gifの説明が続きます。
「図component_actions.gif」の説明

role_audit_clause::=

role_audit_clause.gifの説明が続きます。
「図role_audit_clause.gif」の説明

セマンティクス

ポリシー

作成する統合監査ポリシーの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。すべての監査ポリシーの名前を確認するには、AUDIT_UNIFIED_POLICIESビューを問い合せます。


関連項目:

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

privilege_audit_clause

この句を使用すると、1つ以上のシステム権限を監査できます。このシステム権限が必要になるSQL文が監査されます。system_privilegeには、有効なシステム権限を指定します。すべての有効なシステム権限を確認するには、SYSTEM_PRIVILEGE_MAPビューのNAME列を問い合せます。

システム権限の監査の制限事項: システム権限のINHERIT ANY PRIVILEGESSYSASMSYSBACKUPSYSDBASYSDGSYSKMSYSOPERおよびTRANSLATE ANY SQLは監査できません。

action_audit_clause

この句を使用すると、1つ以上のアクションを監査対象に指定できます。standard_actions句を使用すると、標準RDBMSオブジェクトに対するアクションおよびデータベースに対する標準RDBMSシステム・アクションを監査できます。component_actions句を使用すると、コンポーネントに対するアクションを監査できます。

standard_actions

この句を使用すると、標準RDBMSオブジェクトに対するアクションおよびデータベースに対する標準RDBMSシステム・アクションを監査できます。

object_action ON この句を使用すると、指定したオブジェクトに対するアクションを監査できます。object_actionには、監査するアクションを指定します。表14-1は、各オブジェクト・タイプについて監査可能なアクションの一覧です。

ALL ON この句を使用すると、指定したオブジェクトに対するすべてのアクションを監査できます。ON句で指定したオブジェクトのタイプについて、表14-1に一覧されたすべてのアクションが監査されます。

ON句 ON句を使用すると、監査するオブジェクトを指定できます。ディレクトリとデータ・マイニング・モデルは、個別のネームスペースに含まれるため個別に識別されます。ディレクトリに対するアクションを監査する場合は、ON DIRECTORY directory_nameを指定します。データ・マイニング・モデルに対するアクションを監査する場合は、ON MINING MODEL object_nameを指定します。表14-1に一覧されたその他のオブジェクトのタイプに対するアクションを監査する場合は、ON object_nameを指定します。object_nameschemaで修飾しなかった場合、そのオブジェクトは自分のスキーマ内にあるとみなされます。

表14-1 統合監査の対象オブジェクトとアクション

オブジェクトのタイプ アクション

ディレクトリ

AUDITGRANTREAD

ファンクション

AUDITEXECUTE (注意1と2)、GRANT

Javaスキーマ・オブジェクト(ソース、クラス、リソース)

AUDITEXECUTEGRANT

ライブラリ

EXECUTEGRANT

マテリアライズド・ビュー

ALTERAUDITCOMMENTDELETEINDEXINSERTLOCKSELECTUPDATE

マイニング・モデル

AUDITCOMMENTGRANTRENAMESELECT

オブジェクト・タイプ

ALTERAUDITGRANT

パッケージ

AUDITEXECUTEGRANT

プロシージャ

AUDITEXECUTE (注意1と2)、GRANT

順序

ALTERAUDITGRANTSELECT

ALTERAUDITCOMMENTDELETEFLASHBACKGRANTINDEXINSERTLOCKRENAMESELECTUPDATE

ビュー

AUDITDELETEFLASHBACKGRANTINSERTLOCKRENAMESELECTUPDATE


注意1: PL/SQLストアド・プロシージャまたはストアド・ファンクションでのEXECUTE操作を監査する場合は、監査目的での操作の成否を判断する際に、プロシージャまたはファンクションを検索してその実行を認証する機能のみが監査対象となります。したがって、WHENEVER NOT SUCCESSFUL句を指定すると、無効なオブジェクト・エラー、存在しないオブジェクト・エラー、および認証の失敗が監査されます。プロシージャまたはファンクションの実行時に検出されたエラーは監査されません。WHENEVER SUCCESSFUL句を指定すると、実行時にエラーが検出されたかどうかに関係なく、無効なオブジェクト・エラー、存在しないオブジェクト・エラー、および認証の失敗が監査されます。

注意2: PL/SQLストアド・プロシージャまたはストアド・ファンクション内の再帰的なSQL操作の失敗を監査するには、SQL操作の監査を構成します。

system_action この句を使用すると、データベースに対するシステム・アクションを監査できます。system_actionに有効な値を確認するには、COMPONENTが'Standard'であるAUDITABLE_SYSTEM_ACTIONSビューのNAME列を問い合せます。

ALL この句を使用すると、データベースに対するシステムのすべてのアクションを監査できます。

component_actions

この句を使用すると、各コンポーネント(Oracle Data Pump、Oracle SQL*Loader Direct Path Load、Oracle Label Security、Oracle Database Real Application Security、Oracle Database Vault)に対するアクションを監査できます。

DATAPUMP この句を使用すると、Oracle Data Pumpに対するアクションを監査できます。component_actionには、監査するアクションを指定します。Oracle Data Pumpの有効なアクションを確認するには、COMPONENTDatapumpであるAUDITABLE_SYSTEM_ACTIONSビューのNAME列を問い合せます。次に例を示します。

SELECT name FROM auditable_system_actions WHERE component = 'Datapump';

Oracle Data Pumpの監査方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

DIRECT_LOAD この句を使用すると、Oracle SQL*Loader Direct Path Loadに対するアクションを監査できます。component_actionには、監査するアクションを指定します。Oracle SQL*Loader Direct Path Loadの有効なアクションを確認するには、COMPONENTDirect path APIであるAUDITABLE_SYSTEM_ACTIONSビューのNAME列を問い合せます。次に例を示します。

SELECT name FROM auditable_system_actions WHERE component = 'Direct path API';

Oracle SQL*Loader Direct Path Loadの監査方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

OLS この句を使用すると、Oracle Label Securityに対するアクションを監査できます。component_actionには、監査するアクションを指定します。Oracle Label Securityの有効なアクションを確認するには、COMPONENTLabel SecurityであるAUDITABLE_SYSTEM_ACTIONSビューのNAME列を問い合せます。次に例を示します。

SELECT name FROM auditable_system_actions WHERE component = 'Label Security';

Oracle Label Securityの監査方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

XS この句を使用すると、Oracle Database Real Application Securityに対するアクションを監視できます。component_actionには、監査するアクションを指定します。Oracle Database Real Application Securityの有効なアクションを確認するには、COMPONENTXSであるAUDITABLE_SYSTEM_ACTIONSビューのNAME列を問い合せます。次に例を示します。

SELECT name FROM auditable_system_actions WHERE component = 'XS';

Oracle Database Real Application Securityの監査方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

DV この句を使用すると、Oracle Database Vaultに対するアクションを監査できます。component_actionには、監査するアクションを指定します。Oracle Database Vaultの有効なアクションを確認するには、COMPONENTDatabase VaultであるAUDITABLE_SYSTEM_ACTIONSビューのNAME列を問い合せます。次に例を示します。

SELECT name FROM auditable_system_actions WHERE component = 'Database Vault';

object_nameには、監査するDatabase Vaultオブジェクトの名前を指定します。

Oracle Database Vaultの監査方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

role_audit_clause

この句を使用すると、監査するロールを1つ以上指定できます。ロールを監査すると、そのロールに直接付与されたすべてのシステム権限が監査されます。このシステム権限が必要になるSQL文が監査されます。roleには、ユーザー定義(ローカルまたは外部)のロール、または事前定義されたロールを指定します。事前定義されているロールのリストは、『Oracle Databaseセキュリティ・ガイド』を参照してください。

WHEN句

この句を使用すると、統合監査ポリシーが適用される時間を制御できます。

audit_condition 統合監査ポリシーが適用されているかどうかを判断する条件を指定します。audit_conditionの評価がTRUEの場合は、ポリシーが適用されています。FALSEの場合は、ポリシーが適用されていません。

audit_conditionの最大長は4,000文字です。これには、式だけでなく、次のファンクションと条件を含めることができます。

  • 数値ファンクション: BITANDCEILFLOORPOWER

  • 文字値を返す文字ファンクション: CONCATLOWERUPPER

  • 数値を返す文字ファンクション: INSTRLENGTH

  • 環境および識別子ファンクション: SYS_CONTEXTUID

  • 比較条件: =!=<><><=>=

  • 論理条件: ANDOR

  • NULL条件: IS [NOT] NULL

  • [NOT] BETWEEN条件

  • [NOT] IN条件

audit_conditionは、一重引用符で囲む必要があります。audit_conditionに一重引用符が含まれているときには、そのかわりに2つの一重引用符を指定します。たとえば、次の条件を指定するとします。

SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') = 'myclient'

'audit_condition'は、次のように指定します。

'SYS_CONTEXT(''USERENV'', ''CLIENT_IDENTIFIER'') = ''myclient'''

EVALUATE PER STATEMENT この句を指定すると、監査可能な文ごとにaudit_conditionを評価できます。audit_conditionの評価がTRUEの場合、統合監査ポリシーが文に適用されます。FALSEの場合、統合監査ポリシーは文に適用されません。

EVALUATE PER SESSION この句を指定すると、セッション中にaudit_conditionを1回評価します。audit_conditionは、セッション中に実行される最初の監査可能な文に対して評価されます。audit_conditionの評価がTRUEの場合、統合監査ポリシーは、その後のセッション中に該当するすべての文に適用されます。FALSEの場合、統合監査ポリシーは、その後のセッション中に該当するすべての文に適用されません。

EVALUATE PER INSTANCE この句を指定すると、インスタンスの存続期間中にaudit_conditionを1回評価します。audit_conditionは、インスタンスの存続期間中に実行される最初の監査可能な文に対して評価されます。audit_conditionの評価がTRUEの場合、統合監査ポリシーは、インスタンスのその後の存続期間中に該当するすべての文に適用されます。FALSEの場合、統合監査ポリシーは、インスタンスのその後の存続期間中に該当するすべての文に適用されません。

CONTAINER句

CONTAINER句を使用すると、統合監査ポリシーの有効範囲を指定できます。

  • CONTAINER = ALLを指定すると、共通の統合監査ポリシーを作成できます。このタイプのポリシーは、CDB内のすべてのプラガブル・データベース(PDB)に使用できます。現在のコンテナがルートである必要があります。ACTIONS object_action ONまたはACTIONS ALL ON句を指定する場合は、共通オブジェクトを指定する必要があります。

  • CONTAINER = CURRENTを指定すると、接続先のコンテナにローカルの統合監査ポリシーを作成できます。現在のコンテナは、ルートまたはPDBにできます。現在のコンテナがルートの場合、句ACTIONS system_actionACTIONS ALLまたはprivilege_audit_clauseを指定できません。

現在のコンテナがルートであるときにCONTAINER句を省略した場合、デフォルトはCONTAINER = ALLです。現在のコンテナがプラガブル・データベース(PDB)であるときにCONTAINER句を省略した場合、デフォルトはCONTAINER = CURRENTです。


注意:

統合監査ポリシーは、作成後に有効範囲を変更できません。

システム権限の監査例: 次の文は、統合監査ポリシーtable_polを作成します。このポリシーでは、システム権限のCREATE ANY TABLEDROP ANY TABLEを監査します。

CREATE AUDIT POLICY table_pol
  PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE;

次の文は、table_polAUDIT_UNIFIED_POLICIESビューにあるこを確認します。

SELECT *
  FROM audit_unified_policies
  WHERE policy_name = 'TABLE_POL';

オブジェクトに対するアクションの監査例: 次の文は、統合監査ポリシーdml_polを作成します。このポリシーは、表hr.employeesに対するDELETEINSERTおよびUPDATEの各アクションを監査し、表hr.departmentsに対する監査可能なすべてのアクションを監査します。

CREATE AUDIT POLICY dml_pol
  ACTIONS DELETE on hr.employees,
          INSERT on hr.employees,
          UPDATE on hr.employees,
          ALL on hr.departments;

次の文は、統合監査ポリシーread_dir_polを作成します。このポリシーは、ディレクトリbfile_dir (「ディレクトリの作成例:」で作成したディレクトリ)に対するREADアクションを監査します。

CREATE AUDIT POLICY read_dir_pol
  ACTIONS READ ON DIRECTORY bfile_dir;

システム・アクションの監査例: 次の問い合せは、データベースに対する監査可能な標準RDBMSシステム・アクションを表示します。

SELECT name FROM auditable_system_actions
  WHERE component = 'Standard'
  ORDER BY name;

NAME
----
ADMINISTER KEY MANAGEMENT
ALL
ALTER ASSEMBLY
ALTER AUDIT POLICY
ALTER CLUSTER
...

次の文は、統合監査ポリシーsecurity_polを作成します。このポリシーは、システム・アクションADMINISTER KEY MANAGEMENTを監査します。

CREATE AUDIT POLICY security_pol
  ACTIONS ADMINISTER KEY MANAGEMENT;

次の文は、統合監査ポリシーall_actions_polを作成します。このポリシーは、データベースに対するすべての標準RDBMSシステム・アクションを監査します。

CREATE AUDIT POLICY all_actions_pol
  ACTIONS ALL;

コンポーネント・アクションの監査例: 次の問合せは、Oracle Data Pumpに対する監査可能なアクションを表示します。

SELECT name FROM auditable_system_actions
  WHERE component = 'Datapump';

NAME
----
EXPORT
IMPORT
ALL

次の文は、統合監査ポリシーdp_actions_polを作成します。このポリシーは、Oracle Data Pumpに対するIMPORTアクションを監査します。

CREATE AUDIT POLICY dp_actions_pol
  ACTIONS COMPONENT = datapump IMPORT;

ロールの監査例: 次の文は、統合監査ポリシーjava_polを作成します。このポリシーは、事前定義されたロールjava_adminjava_deployを監査します。

CREATE AUDIT POLICY java_pol
  ROLES java_admin, java_deploy;

システム権限、アクションおよびロールの監査例: 次の文は、統合監査ポリシーhr_admin_polを作成します。このポリシーは、複数のシステム権限、アクションおよびロールを監査します。

CREATE AUDIT POLICY hr_admin_pol
  PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE
  ACTIONS DELETE on hr.employees,
          INSERT on hr.employees,
          UPDATE on hr.employees,
          ALL on hr.departments,
          LOCK TABLE
  ROLES audit_admin, audit_viewer;

統合監査ポリシーを適用するタイミングの制御例: 次の文は、統合監査ポリシーorder_updates_polを作成します。このポリシーは、表oe.ordersに対するUPDATEアクションを監査します。このポリシーは、外部ユーザーが監査可能な文を発行したときのみ適用されます。監査条件は、セッションごとに1回検査されます。

CREATE AUDIT POLICY order_updates_pol
  ACTIONS UPDATE ON oe.orders
  WHEN 'SYS_CONTEXT(''USERENV'', ''IDENTIFICATION_TYPE'') = ''EXTERNAL'''
  EVALUATE PER SESSION;

次の文は、統合監査ポリシーemp_updates_polを作成します。このポリシーは、表hr.employeesに対するDELETEINSERTUPDATEアクションを監査します。このポリシーは、UIDが100、105、または107ではないユーザーが監査可能な文を発行したときにのみ適用されます。監査条件は、監査可能な文ごとに検査されます。

CREATE AUDIT POLICY emp_updates_pol
  ACTIONS DELETE on hr.employees,
          INSERT on hr.employees,
          UPDATE on hr.employees
  WHEN 'UID NOT IN (100, 105, 107)'
  EVALUATE PER STATEMENT;

ローカルの統合監査ポリシーの作成例: 次の文は、ローカルの統合監査ポリシーlocal_table_polを作成します。このポリシーは、現在のコンテナでシステム権限のCREATE ANY TABLEおよびDROP ANY TABLEを監査します。

CREATE AUDIT POLICY local_table_pol
  PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE
  CONTAINER = CURRENT;

共通の統合監査ポリシーの作成例: 次の文は、共通の統合監査ポリシーcommon_role1_polを作成します。このポリシーは、CDB全体で共通のロールc##role1(CREATE ROLE「例」で作成したロール)を監査します。

CREATE AUDIT POLICY common_role1_pol
  ROLES c##role1
  CONTAINER = ALL;