日本語PDF

22 Oracle Database VaultポリシーのAPI

DBMS_MACADM PL/SQLパッケージを使用してOracle Database Vaultポリシーを管理できます。

DV_OWNERロールまたはDV_ADMINロールを付与されているユーザーのみがこれらのプロシージャを使用できます。

22.1 ADD_CMD_RULE_TO_POLICYプロシージャ

ADD_COMMAND_RULE_TO_POLICYプロシージャでは、既存のコマンド・ルールをOracle Database Vaultポリシーに追加できます。

コマンド・ルールがどの状態であっても、コマンド・ルールをポリシーに追加できます。たとえば、無効になっているコマンド・ルールを有効になっているポリシーに追加できます。この場合、無効になっているコマンド・ルールは、ポリシーに追加されると自動的に有効になります。コマンド・ルールは、1つのポリシーのみに追加できます。つまり、同じコマンド・ルールを複数のポリシーに割り当てることはできません。

構文

DBMS_MACADM.ADD_CMD_RULE_TO_POLICY(
 policy_name    IN VARCHAR2,
 command        IN VARCHAR2,
 object_owner   IN VARCHAR2,
 object_name    IN VARCHAR2, 
 clause_name    IN VARCHAR2 DEFAULT,
 parameter_name IN VARCHAR2 DEFAULT,
 event_name     IN VARCHAR2 DEFAULT,
 component_name IN VARCHAR2 DEFAULT,
 action_name    IN VARCHAR2 DEFAULT,
 scope          IN NUMBER DEFAULT);

パラメータ

表22-1 ADD_CMD_RULE_TO_POLICYパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

command

コマンド・ルール名

現行のデータベース・インスタンスで既存のDatabase Vaultコマンド・ルールを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューに問い合せます。

object_owner

コマンド・ルールを適用するデータベース・スキーマ

このコマンド・ルールの既存のオブジェクト所有者を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

object_name

コマンド・ルールで保護されるオブジェクト

このコマンド・ルールの既存のオブジェクトを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

clause_name

ALTER SYSTEMおよびALTER SESSIONコマンド・ルールの場合は、コマンド・ルールの作成に使用されたSQL文の句

このコマンド・ルールの既存の句を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

parameter_name

ALTER SYSTEMおよびALTER SESSIONコマンド・ルールの場合は、clause_nameパラメータのパラメータ

このコマンド・ルールの既存のパラメータを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

event_name

ALTER SYSTEMおよびALTER SESSIONコマンド・ルールの場合は、コマンド・ルールで定義されているイベント

このコマンド・ルールの既存のイベント名を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

component_name

event_name設定のコンポーネント

このコマンド・ルールの既存のコンポーネント名を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

action_name

component_name設定のアクション。

このコマンド・ルールの既存のアクション名を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがすべてのPDBに適用される場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

次の例では、共通コマンド・ルールをDatabase Vaultポリシーに追加する方法を示します。このコマンド・ルールはマルチテナント環境のアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはアプリケーション・ルート内またはCDBルート内にいる必要があります。このコマンド・ルールに関連付けられているルールまたはルール・セットは、共通である必要があります。

BEGIN
 DBMS_MACADM.ADD_CMD_RULE_TO_POLICY(
  policy_name    => 'HR_DV_Policy',
  command        => 'ALTER SESSION',
  object_owner   => '%',
  object_name    => '%',
  clause_name    => 'PARALLEL DDL', 
  parameter_name => '',
  event_name     => '',
  action_name    => '',
  scope          => DBMS_MACUTL.G_SCOPE_COMMON);
END;
/

22.2 ADD_OWNER_TO_POLICYプロシージャ

ADD_OWNER_TO_POLICYプロシージャでは、既存のデータベース・ユーザーを所有者としてOracle Database Vaultポリシーに追加できます。

有効になっているポリシーに所有者を追加すると、その変更内容がすぐに反映されます。ポリシーに追加するユーザーの数に制限はありません。

構文

DBMS_MACADM.ADD_OWNER_TO_POLICY(
  policy_name   IN VARCHAR2,
  owner_name    IN VARCHAR2);

パラメータ

表22-2 ADD_OWNER_TO_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

owner_name

ユーザー名。現在のインスタンス内の既存のデータベース・ユーザー(ロールではない)を確認するには、Oracle Databaseリファレンスで説明されている、DBA_USERSビューを問い合せます。既存のポリシー所有者を確認するには、「DBA_DV_POLICY_OWNERビュー」で説明されているDBA_DV_POLICY_OWNERビューを問い合せます。

BEGIN
 DBMS_MACADM.ADD_OWNER_TO_POLICY(
  policy_name    => 'HR_DV_Policy',
  owner_name     => 'PSMITH');
END;
/

22.3 ADD_REALM_TO_POLICYプロシージャ

ADD_REALM_TO_POLICYプロシージャでは、既存のレルムをOracle Database Vaultポリシーに追加できます。

無効になっているレルムを有効になっているポリシーに追加できます。この場合、レルムは、追加されると自動的に有効になります。レルムは、1つのポリシーのみに追加できます。つまり、同じレルムを複数のポリシーに割り当てることはできません。

構文

DBMS_MACADM.ADD_REALM_TO_POLICY(
  policy_name   IN VARCHAR2,
  realm_name    IN VARCHAR2);

パラメータ

表22-3 ADD_REALM_TO_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現在のデータベース・インスタンスで既存のDatabase Vaultポリシーを検索するには、DBA_DV_POLICYビューを問い合せます。

realm_name

レルム名。現在のデータベース・インスタンスで既存のDatabase Vaultレルムを検索します。

BEGIN
 DBMS_MACADM.ADD_REALM_TO_POLICY(
  policy_name    => 'HR_DV_Policy',
  realm_name     => 'HR Realm');
END;
/

22.4 CREATE_POLICYプロシージャ

CREATE_POLICYプロシージャでは、Oracle Database Vaultポリシーを作成できます。

ポリシーの作成後、少なくとも1つのレルムと1つのコマンド・ルールをポリシーに追加する必要があります。必要に応じて、これらのレルムおよびコマンド・ルールを個別に強制するよう設定するか、ポリシーで使用されている強制を使用できます。

ポリシーの所有者は必要ありませんが、ポリシーに所有者を割り当てない場合は、DV_OWNERまたはDV_ADMINロールを付与されているユーザーがポリシーを管理する必要があります。

ポリシーを作成した後で、次のプロシージャを使用してポリシー定義を完了します。

  • ADD_REALM_TO_POLICYは、レルムをポリシーに追加します。

  • ADD_CMD_RULE_TO_POLICYは、コマンド・ルールをポリシーに追加します。

  • ADD_OWNER_TO_POLICYは、指定したデータベース・ユーザーがポリシーを管理できるようにします。

構文

DBMS_MACADM.CREATE_POLICY(
 policy_name  IN VARCHAR2,
 description  IN VARCHAR2 DEFAULT,
 policy_state IN NUMBER,
 pl_sql_stack IN BOOLEAN DEFAULT);

パラメータ

表22-4 CREATE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名(大/小文字混在で最大128文字)

現行のデータベース・インスタンスで既存のポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

description

ポリシーの目的の説明(大/小文字混在で最大4000文字)。

policy_state

ポリシーを有効にする方法を指定します。使用される値は、次のとおりです。

  • DBMS_MACADM.G_ENABLED (1)。これは、ポリシーをその作成後に有効にします。

  • DBMS_MACADM.G_DISABLED (0)。これは、ポリシーをその作成後に無効にします。

  • DBMS_MACADM.G_SIMULATION (2)。これは、ポリシーをシミュレーション・モードに設定します。シミュレーション・モードでは、ポリシー内で使用されるレルムまたはコマンド・ルールに対する違反が、ユーザー名や使用されたSQL文などエラーを説明する十分な情報とともに、指定されたログ表に記録されます。

  • DBMS_MACADM.G_PARTIAL (3)。これは、ポリシーを部分モードに設定します。部分モードでは、ポリシーに関連付けられているレルムまたはコマンド・ルールの強制状態を個別に変更できます。

シミュレーション・モードの詳細は、シミュレーション・モードについてを参照してください。

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。

次の例では、部分状態を使用するポリシーを作成し、PL/SQLスタックの取得を有効にします。後で、レルムまたはコマンド・ルールをこのポリシーに追加するときに、それらの強制状態を個別に変更できます。

BEGIN
 DBMS_MACADM.CREATE_POLICY(
  policy_name  => 'HR_DV_Policy',
  description  => 'Policy to protect the HR schema',
  policy_state => DBMS_MACADM.G_ENABLED,
  pl_sql_stack => TRUE);
END;
/

22.5 DELETE_CMD_RULE_FROM_POLICYプロシージャ

DELETE_CMD_RULE_FROM_POLICYプロシージャでは、既存のコマンド・ルールをOracle Database Vaultポリシーから削除できます。

ポリシーの状態に関係なく、いつでもポリシーからコマンド・ルールを削除できます。ポリシーからコマンド・ルールを削除しても、コマンド・ルールの状態は同じままになります。つまり、ポリシーが有効になっており、ポリシーからコマンド・ルールを削除した場合、コマンド・ルールは、ポリシーから削除した後も有効なままとなります。

構文

DBMS_MACADM.DELETE_CMD_RULE_FROM_POLICY(
 policy_name    IN VARCHAR2,
 command        IN VARCHAR2,
 object_owner   IN VARCHAR2,
 object_name    IN VARCHAR2, 
 clause_name    IN VARCHAR2 DEFAULT,
 parameter_name IN VARCHAR2 DEFAULT,
 event_name     IN VARCHAR2 DEFAULT,
 component_name IN VARCHAR2 DEFAULT,
 action_name    IN VARCHAR2 DEFAULT,
 scope          IN NUMBER DEFAULT);

パラメータ

表22-5 DELETE_CMD_RULE_FROM_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

command

コマンド・ルール名

現行のデータベース・インスタンスで既存のDatabase Vaultコマンド・ルールを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューに問い合せます。

object_owner

コマンド・ルールを適用するデータベース・スキーマ

このコマンド・ルールの既存のオブジェクト所有者を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

object_name

コマンド・ルールで保護されるオブジェクト

このコマンド・ルールの既存のオブジェクトを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

clause_name

ALTER SYSTEMおよびALTER SESSIONコマンド・ルールの場合は、コマンド・ルールの作成に使用されたSQL文の句

このコマンド・ルールの既存の句を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

parameter_name

ALTER SYSTEMおよびALTER SESSIONコマンド・ルールの場合は、clause_nameパラメータのパラメータ

このコマンド・ルールの既存のパラメータを確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

event_name

ALTER SYSTEMおよびALTER SESSIONコマンド・ルールの場合は、コマンド・ルールで定義されているイベント

このコマンド・ルールの既存のイベント名を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

component_name

event_name設定のコンポーネント

このコマンド・ルールの既存のコンポーネント名を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

action_name

component_name設定のアクション。

このコマンド・ルールの既存のアクション名を確認するには、「DBA_DV_COMMAND_RULEビュー」で説明されているDBA_DV_COMMAND_RULEビューを問い合せます。

scope

マルチテナント環境の場合は、このプロシージャの実行方法を決定します。デフォルトはローカルです。オプションは次のとおりです。

  • コマンド・ルールが現在のPDBでローカルである場合は、DBMS_MACUTL.G_SCOPE_LOCAL (または1)

  • コマンド・ルールがアプリケーション・ルート内にある場合は、DBMS_MACUTL.G_SCOPE_COMMON (または2)

次の例では、Database Vaultポリシーから共通コマンド・ルールを削除する方法を示します。このコマンド・ルールはマルチテナント環境のアプリケーション・ルート内にあるため、このプロシージャを実行するユーザーはCDBルート内にいる必要があります。

BEGIN
 DBMS_MACADM.DELETE_CMD_RULE_FROM_POLICY(
  policy_name    => 'HR_DV_Policy',
  command        => 'ALTER SESSION',
  object_owner   => '%',
  object_name    => '%',
  clause_name    => 'END SESSION', 
  parameter_name => 'KILL SESSION',
  event_name     => '',
  action_name    => '',
  scope          => DBMS_MACUTL.G_SCOPE_COMMON);
END;
/

22.6 DELETE_OWNER_FROM_POLICYプロシージャ

DELETE_OWNER_FROM_POLICYプロシージャでは、Oracle Database Vaultポリシーから所有者を削除できます。

ポリシーの状態(有効または無効)に関係なく、いつでもポリシーから所有者を削除できます。変更は即座に反映されます。

構文

DBMS_MACADM.DELETE_OWNER_FROM_POLICY(
  policy_name   IN VARCHAR2,
  owner_name    IN VARCHAR2);

パラメータ

表22-6 DELETE_OWNER_FROM_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

owner_name

ユーザー名。現在のインスタンスで既存のポリシー所有者を確認するには、「DBA_DV_POLICY_OWNERビュー」で説明されているDBA_DV_POLICY_OWNERビューを問い合せます。

BEGIN
 DBMS_MACADM.DELETE_OWNER_FROM_POLICY(
  policy_name    => 'HR_DV_Policy',
  owner_name     => 'PSMITH');
END;
/

22.7 DELETE_REALM_FROM_POLICYプロシージャ

DELETE_REALM_FROM_POLICYプロシージャでは、既存のレルムをOracle Database Vaultポリシーから削除できます。

ポリシーの状態(有効または無効)に関係なく、いつでもポリシーからレルムを削除できます。変更は即座に反映されます。

構文

DBMS_MACADM.DELETE_REALM_FROM_POLICY(
  policy_name   IN VARCHAR2,
  realm_name    IN VARCHAR2);

パラメータ

表22-7 DELETE_REALM_FROM_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現在のデータベース・インスタンスで既存のDatabase Vaultポリシーを検索するには、DBA_DV_POLICYビューを問い合せます。

realm_name

レルム名。現在のデータベース・インスタンスで既存のDatabase Vaultレルムを検索するには、DV_REALMビューを問い合せます。

BEGIN
 DBMS_MACADM.DELETE_REALM_FROM_POLICY(
  policy_name    => 'HR_DV_Policy',
  realm_name     => 'HR Realm');
END;
/

22.8 DROP_POLICYプロシージャ

DROP_POLICYプロシージャでは、既存のOracle Database Vaultポリシーを削除できます。

ポリシーの状態(有効または無効)に関係なく、いつでもポリシーを削除できます。

構文

DBMS_MACADM.DROP_POLICY(
  policy_name      IN VARCHAR2);

パラメータ

表22-8 DROP_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

BEGIN
 DBMS_MACADM.DROP_POLICY(
  policy_name      => 'HR_DV_Policy');
END;
/

22.9 RENAME_POLICYプロシージャ

UPDATE_POLICY_DESCRIPTIONプロシージャでは、既存のOracle Database Vaultポリシーの名前を変更できます。

ポリシーの状態(有効または無効)に関係なく、いつでもポリシーの名前を変更できます。変更は即座に反映されます。

構文

DBMS_MACADM.RENAME_POLICY(
  policy_name      IN VARCHAR2,
  new_policy_name  IN VARCHAR2);

パラメータ

表22-9 RENAME_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

new_policy_name

新しいポリシー名(大/小文字混在で最大128文字)

BEGIN
 DBMS_MACADM.RENAME_POLICY(
  policy_name      => 'HR_DV_Policy',
  new_policy_name  => 'HR_WEST_COAST_DV_Policy');
END;
/

22.10 UPDATE_POLICY_DESCRIPTIONプロシージャ

UPDATE_POLICY_DESCRIPTIONプロシージャでは、Oracle Database Vaultポリシー内のdescriptionフィールドを更新できます。

構文

DBMS_MACADM.UPDATE_POLICY_DESCRIPTION(
  policy_name  IN VARCHAR2,
  description  IN VARCHAR2 DEFAULT);

パラメータ

表22-10 UPDATE_POLICY_DESCRIPTIONのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

description

ポリシーの目的の新しい説明(大/小文字混在で最大4000文字)

BEGIN
 DBMS_MACADM.UPDATE_POLICY_DESCRIPTION(
  policy_name  => 'HR_DV_Policy',
  description  => 'HR schema protection policy');
END;
/

22.11 UPDATE_POLICY_STATEプロシージャ

UPDATE_POLICY_STATEプロシージャでは、Oracle Database Vaultポリシー内のpolicy_stateフィールドを更新できます。

構文

DBMS_MACADM.UPDATE_POLICY_STATE(
  policy_name   IN VARCHAR2,
  policy_state  IN NUMBER,
 pl_sql_stack  IN BOOLEAN DEFAULT);

パラメータ

表22-11 UPDATE_POLICY_STATEのパラメータ

パラメータ 説明

policy_name

ポリシー名。現行のデータベース・インスタンスで既存のDatabase Vaultポリシーを確認するには、「DBA_DV_POLICYビュー」で説明されているDBA_DV_POLICYビューに問い合せます。

policy_state

ポリシーを有効にする方法を指定します。使用される値は、次のとおりです。

  • DBMS_MACADM.G_ENABLED (1)。これは、ポリシーをその作成後に有効にします。

  • DBMS_MACADM.G_DISABLED (0)。これは、ポリシーをその作成後に無効にします。

  • DBMS_MACADM.G_SIMULATION (2)。これは、ポリシーをシミュレーション・モードに設定します。シミュレーション・モードでは、ポリシー内で使用されるレルムまたはコマンド・ルールに対する違反が、ユーザー名や使用されたSQL文などエラーを説明する十分な情報とともに、指定されたログ表に記録されます。

  • DBMS_MACADM.G_PARTIAL (3)。これは、ポリシーを部分モードに設定します。部分モードでは、ポリシーに関連付けられているレルムまたはコマンド・ルールの強制状態を個別に変更できます。

シミュレーション・モードの詳細は、シミュレーション・モードについてを参照してください。

pl_sql_stack

シミュレーション・モードが有効な場合に、失敗した操作のPL/SQLスタックを記録するかどうかを指定します。PL/SQLスタックを記録する場合はTRUEと入力し、記録しない場合はFALSEと入力します。

BEGIN
 DBMS_MACADM.UPDATE_POLICY_STATE(
  policy_name   => 'HR_DV_Policy',
  policy_state  => DBMS_MACADM.G_DISABLED,
  pl_sql_stack  => TRUE);
END;
/