日本語PDF

6 コマンド・ルールの構成

コマンド・ルールを作成する、またはデフォルト・コマンド・ルールを使用すると、DDL文およびDML文を保護できます。

6.1 コマンド・ルールの概要

コマンド・ルールは、ALTER SESSIONなどのOracle Database SQL文により、Oracle Database Vault保護を適用します。

6.1.1 コマンド・ルールについて

コマンド・ルールは、1つ以上のデータベース・オブジェクトに影響するOracle Database SQL文を保護します。

これらの文は、SELECTALTER SYSTEM、データベース定義言語(DDL)およびデータ操作言語(DML)文を含められます。

コマンド・ルールをカスタマイズして実行するには、1つ以上のルールの集合であるルール・セットにコマンド・ルールを関連付けます。コマンド・ルールは実行時に実施されます。コマンド・ルールは、オブジェクトが存在するレルムに関係なく、コマンド・ルールによって保護されるSQL文の使用を試みる全員に影響します。

コマンド・ルールを使用して、基本的なOracle Database DDL文およびDML文の他に、幅広いSQL文を保護できます。たとえば、Oracle Flashback Technologyで使用される文を保護できます。

コマンド・ルールには、コマンド・ルールのコマンドへの関連付けに加えて、次の属性があります。

  • コマンド・ルールで保護されるSQL文

  • コマンド・ルールが影響するオブジェクトの所有者

  • コマンド・ルールが影響するデータベース・オブジェクト

  • コマンド・ルールが有効かどうか

  • 関連付けられているルール・セット

コマンド・ルールは、次のように分類できます。

  • 範囲がシステム全体に及ぶコマンド・ルール。このタイプでは、ほとんどの場合、データベース・インスタンスごとに1つのコマンド・ルールのみを作成できます。

  • スキーマ固有のコマンド・ルール。スキーマ固有のコマンド・ルールの例は、DROP TABLE文のコマンド・ルールです。スキーマごとに1つのCONNECTコマンド・ルールのみを作成できます。

  • オブジェクト固有のコマンド・ルール。コマンド・ルール定義に含まれる特定の表を使用してDROP TABLE文を作成することは、この一例です。

コマンド・ルールの影響を受ける文をユーザーが実行すると、Oracle Database Vaultによって最初にレルム認可がチェックされます。レルム違反が検出されず、関連付けられているコマンド・ルールが有効な場合は、関連付けられているルール・セットがDatabase Vaultによって評価されます。すべてのルール・セットの評価がTRUEの場合、その文は認可されてさらに処理されます。評価がFALSEのルール・セットがある場合、その文の実行は許可されずコマンド・ルール違反が生じます。

通常のステップであるユーザー認証プロセス、ファクタの初期化およびOracle Label Securityの統合が完了した後に、セッションを許可または拒否するCONNECTイベントにファクタを使用するコマンド・ルールを定義できます。たとえば、BIZAPPスキーマ内で、CREATE TABLEDROP TABLEおよびALTER TABLEなどのDDL文が営業時間後に認可されるのは許可するが、営業時間中には許可しないというコマンド・ルールを構成できます。

Oracle Database Vaultに作成するコマンド・ルール上でレポートを実行できます。

SYSSYS所有プロシージャを実行するのをブロックするコマンド・ルールを作成することはできません。

6.1.2 マルチテナント環境におけるコマンド・ルール

マルチテナント環境では、CDBルートまたはアプリケーション・ルートのどちらかで、共通およびローカルのコマンド・ルールを作成できます。

共通コマンド・ルールは、共通のレルム、ルール・セットおよびルールのみに関連付けることができます。ローカル・コマンド・ルールは、ローカルのレルム、ルール・セットおよびルールのみに関連付けることができます。

これらのコマンド・ルールをマルチテナント環境全体に適用するには、DVADMまたはDVOWNERロールを付与された共通ユーザーとして、CDBルートまたはアプリケーション・ルートからコマンド・ルール・プロシージャを実行する必要があります。CDBルートで作成される共通コマンド・ルールは、そのCDB環境内のすべてのPDBに適用されます。アプリケーション・ルートで作成される共通コマンド・ルールは、このアプリケーション・ルートに関連付けられているPDBのみに適用されます。CDBルートまたはアプリケーション・ルートに関連付けられているPDBにコマンド・ルールを伝播するには、PDBを同期させる必要があります。たとえば、saas_sales_appというアプリケーション・ルートをアプリケーションPDBと同期するには、次のようにします。

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

CDBルートの共通コマンド・ルールをPDBと同期するには、次のようにします。

ALTER PLUGGABLE DATABASE APPLICATION APP$CDB$SYSTEM SYNC;

USER_ROLE_PRIVSデータ・ディクショナリ・ビューを問い合せることで、ユーザーのロールを確認できます。コマンド・ルールに関する情報を確認するには、DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを問い合せます。

6.1.3 コマンド・ルールのタイプ

多数のSQL文のためのコマンド・ルールの他に、CONNECTALTER SYSTEMおよびALTER SESSION SQL文専用のコマンド・ルールを作成できます。

6.1.3.1 CONNECTコマンド・ルール

DBMS_MACADM.CREATE_CONNECT_CMD_RULEプロシージャは、ユーザー固有のCONNECTコマンド・ルールを作成します。

このタイプのコマンド・ルールは、ユーザー、関連付けられたルール・セット、有効化ステータス、およびマルチテナント環境の場合、CONNECTコマンド・ルールの実行対象を指定します。CONNECTコマンド・ルールを有効または無効にすることや、シミュレーション・モードを使用するようそれを設定することができます。シミュレーション・モードでは、コマンド・ルールに対する違反が、ユーザー名や使用されたSQL文などエラーを説明する十分な情報とともに、指定されたログ表に記録されます。

マルチテナント環境では、アプリケーション・ルートまたは特定のPDB内のどちらかで、CONNECTコマンド・ルールを作成できます。関連付けられたルール・セットは、CONNECTコマンド・ルールと一致している必要があります。CONNECTコマンド・ルールがアプリケーション・ルートにある場合、ルール・セットとルールもアプリケーション・ルートにある必要があります。CDBルートから共通ユーザーとしてCONNECTコマンド・ルール・プロシージャを実行します。CONNECTコマンド・ルールがプラガブル・データベース(PDB)に対してローカルである場合は、そのPDB内でCONNECTコマンド・ルール作成コマンドを実行する必要があり、ルール・セットとルールがローカルである必要があります。

次の例では、HRユーザーのためにローカルの有効化されたCONNECTコマンド・ルールを作成する、CONNECTコマンド・ルール定義を示します。このコマンド・ルールに関連付けられているルール・セットは、現在のPDBに対してローカルです。

BEGIN
DBMS_MACADM.CREATE_CONNECT_COMMAND_RULE(
 rule_set_name   => 'Enabled', 
 user_name       => 'HR', 
 enabled         => DBMS_MACUTL.G_YES,
 scope           => DBMS_MACUTL.G_SCOPE_LOCAL);
END; 
/
6.1.3.2 ALTER SESSIONおよびALTER SYSTEMコマンド・ルール

これらのSQL文をきめ細かく制御できる、様々な種類のALTER SESSIONおよびALTER SYSTEMコマンド・ルールを作成できます。

これらのタイプのコマンド・ルールを作成するプロシージャを次に示します。

  • DBMS_MACADM.CREATE_COMMAND_RULEは、ALTER SESSIONの場合はADVISECLOSE DATABASE LINKCOMMIT IN PROCEDUREおよびSET、またはALTER SYSTEMの場合はARCHIVE_LOGCHECK DATAFILESCHECKPOINTおよびSETなど、対応するSQL文からの句を使用する、ALTER SESSIONおよびALTER SYSTEMコマンド・ルールを作成します。

  • DBMS_MACADM.CREATE_SESSION_EVENTは、ALTER SESSION SET EVENTS SQL文固有のコマンド・ルールを作成します

  • DBMS_MACADM_CREATE_SYSTEM_EVENTは、ALTER SYSTEM SET EVENTS SQL文固有のコマンド・ルールを作成します。

これらのコマンド・ルールを作成するには、適切なDatabase Vaultプロシージャを使用して、作成文で句、および該当する場合は句のパラメータを指定します。ALTER SESSIONまたはALTER SYSTEMコマンド・ルールでSET EVENTS設定が使用されている場合は、特別なパラメータを使用して、イベント、コンポーネントおよびアクションを指定できます。

たとえば、ALTER SYSTEMコマンド・ルールの場合は、ALTER SYSTEM SQL文からSECURITY句およびそのRESTRICTED SESSIONパラメータを指定できます。RESTRICTED SESSIONTRUEFALSEかを指定するには、この順序番号の妥当性をテストできる、Database Vaultルールおよびルール・セットを作成する必要があります。

この概念がどのように機能するかを理解するには、まず、RESTRICTED SESSIONパラメータがTRUEに設定されているかどうかをチェックするよう設計されている、次のルールおよびルール・セットを作成します。

EXEC DBMS_MACADM.CREATE_RULE('RESTRICTED SESSION TRUE', 'UPPER(PARAMETER_VALUE) = ''TRUE''');

BEGIN
 DBMS_MACADM.CREATE_RULE_SET(
  rule_set_name    => 'Check RESTRICTED SESSION for TRUE',
  description      => 'Checks if restricted session is true',
  enabled          => DBMS_MACUTL.G_YES,
  eval_options     => DBMS_MACUTL.G_RULESET_EVAL_ALL,
  audit_options    => DBMS_MACUTL.G_RULESET_AUDIT_FAIL + DBMS_MACUTL.G_RULESET_AUDIT_SUCCESS,
  fail_options     => DBMS_MACUTL.G_RULESET_FAIL_SILENT,
  fail_message     => 'RESTRICTED SESSION is not TRUE',
  fail_code        => 20461,
  handler_options  => DBMS_MACUTL.G_RULESET_HANDLER_FAIL,
  handler          => '',
  is_static        => false);
END;
/
EXEC DBMS_MACADM.ADD_RULE_TO_RULE_SET(Check RESTRICTED SESSION for TRUE', 'RESTRICTED SESSION TRUE');

ルールおよびルール・セットを準備したら、RESTRICTED SESSIONパラメータをチェックする、ALTER SYSTEMコマンド・ルールを作成する準備は完了です。

BEGIN
DBMS_MACADM.CREATE_COMMAND_RULE(
 command         => 'ALTER SYSTEM', 
 rule_set_name   => 'Check RESTRICTED SESSION for TRUE', 
 object_owner    => '%', 
 object_name     => '%', 
 enabled         => DBMS_MACUTL.G_YES,
 clause_name     => 'SECURITY',
 parameter_name  => 'RESTRICTED SESSION',
 scope           => DBMS_MACUTL.G_SCOPE_LOCAL);
END; 
/

この例の説明は、次のとおりです。

  • rule_set_nameでは、RESTRICTED SESSIONTRUEに設定されているかFALSEに設定されているかをチェックします。マルチテナント環境では、ルール・セットとルールを、アプリケーション・ルート、またはPDBのローカルで、同じ場所でコマンド・ルールとして作成する必要があります。

  • object_ownerおよびobject_nameは、この種のALTER SESSIONまたはALTER SYSTEMコマンド・ルールに対して、必ず%に設定される必要があります。

  • enabledでは、コマンド・ルールを有効または無効にすることや、シミュレーション・モードを使用してコマンド・ルールに対する違反を指定のログ表に記録することができます。ログ・データには、ユーザー名や使用されたSQL文など、エラーの説明が示されます。

  • clause_nameでは、ALTER SYSTEM SQL文のSECURITY句を指定します。

  • parameter_nameでは、SECURITY句からのRESTRICTED SESSIONパラメータを指定します。

  • scopeでは、コマンド・ルールが現在のPDBに対してローカルになるよう設定します。関連付けられたルール・セットおよびルールも、現在のPDBに対してローカルになるようにする必要があります。アプリケーション・ルートでコマンド・ルールを作成する必要がある場合は、共通ユーザーとして、scopeDBMS_MACUTL.G_SCOPE_COMMONに設定し、アプリケーション・ルートからプロシージャ(および、その付随するルール・セットおよびルール作成プロシージャ)を実行します。

関連項目:

6.2 デフォルトのコマンド・ルール

Oracle Database Vaultには、よく使用されるSQL文に基づいて、デフォルト・コマンド・ルールが用意されています。

表6-1に、デフォルトのDatabase Vaultコマンド・ルールを示します。

表6-1 デフォルトのコマンド・ルール

SQL文 ルール・セット名

CREATE USER

アカウント/プロファイルを保守可能

ALTER USER

自分のアカウントを保守可能

DROP USER

アカウント/プロファイルを保守可能

CREATE PROFILE

アカウント/プロファイルを保守可能

ALTER PROFILE

アカウント/プロファイルを保守可能

DROP PROFILE

アカウント/プロファイルを保守可能

ALTER SYSTEM

システム・パラメータのファイングレイン・コントロールを許可

CHANGE PASSWORD

自分のアカウントを保守可能脚注1

脚注1

「自分のアカウントを保守可能」ルールで参照される実際のSQL文は、PASSWORDです。

次に示す一連のコマンド・ルールは、ユーザー管理の職務分離の実現をサポートします。

  • ALTER PROFILE

  • ALTER USER

  • CREATE PROFILE

  • CREATE USER

  • DROP PROFILE

  • DROP USER

ユーザーにこれらのコマンドの使用権限を付与するには、ルール・セットによってチェックされるロールをユーザーに付与します。たとえば、CREATE USERコマンド・ルールは、CREATE USER文を実行しようとするユーザーにDV_ACCTMGRロールが付与されていることを確認します。

ノート:

デフォルト・コマンド・ルールに関する情報を確認するには、DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを問い合せます。

6.3 コマンド・ルールで保護できるSQL文

コマンド・ルールを使用して、多数のSQL文を保護できます。

保護できるSQL文は、次のとおりです。

SQL文A-A SQL文A-D SQL文C-U

ALTER CLUSTER

ASSOCIATE STATISTICS

CREATE TABLE

ALTER DIMENSION

AUDIT

CREATE TABLESPACE

ALTER FLASHBACK ARCHIVE

AUDIT POLICY(統合監査ポリシーを監査するため)

CREATE TRIGGER

ALTER FUNCTION

CHANGE PASSWORD

CREATE TYPE

ALTER INDEX

COMMENT

CREATE TYPE BODY

ALTER INDEXTYPE

CONNECT

CREATE VIEW

ALTER JAVA

CREATE AUDIT POLICY

DELETE

ALTER LIBRARY

CREATE EDITION

DISASSOCIATE STATISTICS

ALTER OPERATOR

CREATE FLASHBACK ARCHIVE

DROP CLUSTER

ALTER OUTLINE

CREATE USER

DROP CONTEXT

ALTER MATERIALIZED VIEW

CREATE CLUSTER

DROP DATABASE LINK

ALTERMATERIALIZEDVIEWLOG

CREATE CONTEXT

DROP EDITION

ALTER PACKAGE

CREATE DATABASE LINK

DROP DIMENSION

ALTER PACKAGE BODY

CREATE DIMENSION

DROP DIRECTORY

ALTER PLUGGABLE DATABASE

CREATE DIRECTORY

DROP FLASHBACK ARCHIVE

ALTER PROCEDURE

CREATE FUNCTION

DROP FUNCTION

ALTER PROFILE

CREATE INDEX

FLASHBACK TABLE

ALTER RESOURCE COST

CREATE INDEXTYPE

EXECUTE

ALTER ROLE

CREATE JAVA

GRANT

ALTER ROLLBACK SEGMENT

CREATE LIBRARY

INSERT

ALTER SEQUENCE

CREATE OPERATOR

NOAUDIT

ALTER SESSION

CREATE OUTLINE

NOAUDIT POLICY(統合監査ポリシーのみ)

ALTER SYNONYM

CREATE PACKAGE

PURGE DBA_RECYCLEBIN

ALTER SYSTEM

CREATE PACKAGE BODY

PURGE INDEX

ALTER TABLE

CREATE PLUGGABLE DATABASE

RENAME

ALTER TABLESPACE

CREATE PROCEDURE

PURGE RECYCLEBIN

ALTER TRIGGER

CREATE PROFILE

PURGE TABLE

ALTER TYPE

CREATE ROLE

PURGE TABLESPACE

ALTER TYPE BODY

CREATE ROLLBACK SEGMENT

REVOKE

ALTER USER

CREATE SCHEMA

SELECT

ALTER VIEW

CREATE SEQUENCE

TRUNCATE CLUSTER

ANALYZE CLUSTER

CREATE MATERIALIZED VIEW

TRUNCATE TABLE

ANALYZE INDEX

CREATEMATERIALIZEDVIEWLOG

UPDATE

ANALYZE TABLE

CREATE SYNONYM

-

関連項目:

マルチテナント・コンテナ・データベース(CDB)におけるCREATE PLUGGABLE DATABASEALTER PLUGGABLE DATABASEおよびDROP PLUGGABLE DATABASEの使用の詳細は、「マルチテナント環境におけるコマンド・ルール」を参照してください

6.4 コマンド・ルールの作成

Oracle Database Vault Administratorでコマンド・ルールを作成できます。

  1. DV_OWNERまたはDV_ADMINロールおよびSELECT ANY DICTIONARY権限を付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。ログイン方法については、「Oracle Enterprise Cloud ControlからのOracle Database Vaultへのログイン」を参照してください。
  2. 「管理」ページの「Database Vaultコンポーネント」で、「コマンド・ルール」をクリックします。
  3. 「コマンド・ルール」ページで次のようにします。
    • 新しいコマンド・ルールを作成するには、「作成」をクリックして、「コマンド・ルールの作成」ページを表示します。


      create_command_rule122.pngの説明が続きます。
      図create_command_rule122.pngの説明
  4. 「コマンド・ルールの作成」ページで、次の設定を入力します。
    • コマンド: コマンド・ルールを作成するSQL文または操作を選択します。この属性は必須です。

      統合監査ポリシー・オブジェクトに対するコマンド・ルールを作成する場合、コマンドとして、AUDITまたはNOAUDITではなく、AUDIT POLICYまたはNOAUDIT POLICYを必ず指定します。

    • ステータス: 「有効」「無効」または「シミュレーション」のいずれかを選択します。これは、実行時にコマンド・ルールに適用されます。この属性は必須です。

    • 適用可能なオブジェクト所有者: リストから、コマンド・ルールが影響を与えるオブジェクトの所有者を選択します。ワイルドカード文字%を使用して、すべての所有者を選択できます。(ただし、ワイルドカード文字をテキストと一緒に使用することはできません。たとえば、EM%を使用して、名前がEMで始まるすべての所有者を選択することはできません。)この属性は、特定のスキーマ内のオブジェクトに提供するすべてのSQL文で必須です。サポートされているSQL文のリストは、「コマンド・ルールで保護できるSQL文」を参照してください。

      SELECTINSERTUPDATEDELETEおよびEXECUTE文は、すべての選択(%)、またはSYSおよびDVSYSスキーマには使用できないことに注意してください。

    • 適用可能なオブジェクト名: コマンド・ルールが影響を与えるデータベース・オブジェクトの名前を入力するか、%を指定してすべてのデータベース・オブジェクトを指定します。これには、表、プロシージャ、ビュー、統合監査ポリシーなどを含むことができます。「オブジェクト所有者」リストからオブジェクト所有者を選択した場合、この属性は必須です。

      コマンド・ルールが影響するオブジェクト上でOracle Database Vaultレポートを実行できます。詳細は、「コマンド・ルールに関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。

    • ルール・セット: リストから、コマンド・ルールに関連付けるルール・セットを選択します。この属性は必須です。

      ルール・セットの評価がTrueの場合、そのSQL文は成功します。評価がfalseの場合、その文は失敗し、Oracle Database Vaultによってコマンド・ルール違反が生成されます。(「Oracle Database Vaultレポート」で説明されている「コマンド・ルール構成の問題」レポートを使用することで、ルール違反を追跡できる)。ルール・セットに関連付けられている監査およびカスタム・イベント処理は、コマンド・ルール処理の一部として発生します。

      ルール・セットの詳細は、「ルール・セットの構成」を参照してください。

  5. 「OK」をクリックします。

6.5 コマンド・ルールの有効化ステータスの変更

Oracle Database Vault Administratorでコマンド・ルールを有効または無効にできます。

  1. DV_OWNERまたはDV_ADMINロールおよびSELECT ANY DICTIONARY権限を付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。ログイン方法については、「Oracle Enterprise Cloud ControlからのOracle Database Vaultへのログイン」を参照してください。
  2. 「管理」ページの「Database Vaultコンポーネント」で、「コマンド・ルール」をクリックします。
  3. 「コマンド・ルール」ページで、有効または無効にするコマンド・ルールを選択し、「編集」を選択します。
  4. 「コマンド・ルールの編集」ページで、「ステータス」メニューから、目的のステータスを選択します。
    • 有効
    • 無効
    • シミュレーション
  5. 「OK」をクリックします。

6.6 コマンド・ルールの削除

コマンド・ルールを削除する前に、それに関連するOracle Database Vaultビューに問い合せることで、そのコマンド・ルールへの様々な参照を特定できます。

  1. DV_OWNERまたはDV_ADMINロールおよびSELECT ANY DICTIONARY権限を付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。ログイン方法については、「Oracle Enterprise Cloud ControlからのOracle Database Vaultへのログイン」を参照してください。
  2. Oracle Database Vaultの「管理」ページで、「コマンド・ルール」を選択します。
  3. 「コマンド・ルール」ページで、削除するコマンド・ルールを選択します。
  4. 「削除」をクリックします。
  5. 「確認」ウィンドウで、「はい」をクリックします。

6.7 コマンド・ルールの動作

コマンド・ルールは、一連のステップに従い、関連付けられているコンポーネントをチェックします。

「レルムの動作」では、データベース・アカウントによりレルム内のオブジェクトに影響するSELECT、DDLまたはDML文が発行された場合の動作を説明しています。

SELECT、DDLまたはDML文が発行されると、次のアクションが実行されます。

  1. Oracle Database Vaultが、適用する必要のあるすべてのコマンド・ルールを問い合せます。

    SELECT、DDLおよびDML文では、オブジェクト所有者およびオブジェクト名でワイルドカード表記を使用できるため、複数のコマンド・ルールが適用される場合があります。

    ルール・セットは、コマンド・ルールおよびレルム認可の両方に関連付けることができます。Oracle Database Vaultにより、まずレルム認可ルール・セットが評価され、評価されるコマンド・タイプに適用するルール・セットが次に評価されます。

  2. 適用する各コマンド・ルールに関して、Oracle Database Vaultはそれに関連付けられているルール・セットを評価します。

  3. 適用可能なコマンド・ルールに関連付けられているルール・セットが1つでもFalseまたはエラーで返されると、Oracle Database Vaultによりそのコマンドの実行が阻止されます。それ以外の場合、コマンドは認可されてさらに処理されます。監査およびイベント・ハンドラに関するルール・セットの構成により、発生する監査またはカスタム処理が決定されます。

    コマンド・ルールはオブジェクト権限より優先されます。つまり、オブジェクトの所有者であっても、オブジェクトがコマンド・ルールで保護される場合、そのオブジェクトにアクセスできません。コマンド・ルールまたはコマンドのルール・セットのいずれかを無効にすることができます。コマンド・ルールを無効にする場合、コマンド・ルールは、その処理の確認を行いません。ルール・セットを無効にする場合、ルール・セットの評価は常にTRUEになります。ただし、特定のコマンドに対してコマンド・ルールを無効にする場合、ルール・セットが他のコマンド・ルールやレルム認可に関連付けられている可能性があるため、コマンド・ルールを無効にする必要があります。

6.8 チュートリアル: ユーザーによる表作成を制御するためのコマンド・ルールの使用方法

このチュートリアルでは、ユーザーがSCOTTスキーマに表を作成できるかどうかを制御する簡単なローカル・コマンド・ルールを作成します。

6.8.1 ステップ1: 表の作成

最初に、ユーザーSCOTTとして表を作成する必要があります。

  1. ユーザーSCOTTとしてデータベース・インスタンスにログインします。
    sqlplus scott
    Enter password: password
    

    マルチテナント環境で、適切なPDBにログインする必要があります。たとえば:

    sqlplus scott@hrpdb
    Enter password: password
    

    利用可能なプラガブル・データベース(PDB)を検索するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

    SCOTTアカウントがロックされて無効になっている場合、Database Vaultアカウント・マネージャとしてログインし、SCOTTのロックを解除し、新しいパスワードを作成します。たとえば:

    sqlplus accts_admin_ace --Or, sqlplus accts_admin_ace@hrpdb
    Enter password: password
    
    ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY password;

    『Oracle Databaseセキュリティ・ガイド』のガイドラインに従って、安全なパスワードでパスワードを置き換えてください。

    CONNECT SCOTT --Or, sqlplus SCOTT@hrpdb
    Enter password: password
  2. ユーザーSCOTTとして、表を作成します。
    CREATE TABLE t1 (num NUMBER);
    
  3. 表を削除します。
    DROP TABLE t1;
    

この段階で、ユーザーSCOTTは、表の作成および削除を行うことができます。SQL*Plusを終了せずに、SCOTTとして接続したままにします。後でSCOTTが別の表を作成しようとするときに使用します。

6.8.2 ステップ2: コマンド・ルールの作成

SCOTTスキーマで表の作成後、コマンド・ルールを作成できます。

  1. DV_OWNERまたはDV_ADMINロールおよびSELECT ANY DICTIONARY権限を付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。ログイン方法については、「Oracle Enterprise Cloud ControlからのOracle Database Vaultへのログイン」を参照してください。
  2. Oracle Database Vault Administratorの「管理」ページで、「コマンド・ルール」をクリックします。

    「コマンド・ルール」ページが表示されます。

  3. 「作成」をクリックします。

    「コマンド・ルールの作成」ページが表示されます。

  4. 次の設定を入力します。
    • コマンド: 「CREATE TABLE」を選択します。

    • ステータス: 「有効」に設定して、コマンド・ルールをアクティブにします。

    • 適用可能なオブジェクト所有者: 「SCOTT」を選択します。

    • 適用可能なオブジェクト名: %に設定して、SCOTTスキーマ内のすべてのオブジェクトに適用します。

    • ルール・セット: SCOTTスキーマに表を作成できないよう、「無効」を選択します。

  5. 「OK」をクリックします。

    Database Vault Administratorを終了しないでください。

コマンド・ルールは即時有効になります。ユーザーSCOTTは、CREATE TABLEコマンド・ルールを作成する前の、先ほどまでいたユーザー・セッションにまだいるとしても、ただちに表を作成できなくなります。

6.8.3 ステップ3: コマンド・ルールのテスト

これで、いつでもCREATE TABLEローカル・コマンド・ルールをテストできます。

  1. SQL*Plusで、ユーザーSCOTTとしてログインしていることを確認します。

    CONNECT SCOTT --Or, CONNECT SCOTT@hrpdb
    Enter password: password
    
  2. 表を作成してみます。

    CREATE TABLE t1 (num NUMBER);
    

    次の出力が表示されます。

    ORA-47400: Command Rule violation for create table on SCOTT.T1
    

    この例からわかるように、SCOTTは、自身のスキーマ内でも、表を作成できなくなります。

  3. Oracle Database Vault Administratorで、次の作業を実行します。

    1. 「コマンド・ルール」ページで、「CREATE TABLE」コマンド・ルールを選択して、「編集」をクリックします。

    2. 「コマンド・ルールの編集」ページで、「ルール・セット」リストから「有効」を選択します。

    3. 「OK」をクリックします。

  4. SQL*Plusで、ユーザーSCOTTとして、表の作成を再試行します。

    CREATE TABLE t1 (num NUMBER);
    
    Table created.
    

CREATE TABLEコマンド・ルールが「有効」に設定されたので、ユーザーSCOTTは、再び表の作成が許可されるようになりました。(SQL*Plusを終了しないでください。)

6.8.4 ステップ4: このチュートリアルのコンポーネントの削除

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

  1. Oracle Database Vault Administratorで、CREATE TABLEコマンド・ルールを次のように削除します。

    1. 「コマンド・ルール」ページに戻ります。

    2. 「CREATE TABLE」ローカル・コマンド・ルールを選択して、「削除」をクリックします。

    3. 「確認」ウィンドウで、「はい」をクリックします。

  2. ユーザーSCOTTとしてデータベース・インスタンスにログインして、t1表を削除します。

    DROP TABLE t1;
    
  3. SCOTTアカウントが使用可能である必要がなくなった場合、Database Vaultアカウント・マネージャとして接続し、次のALTER USER文を入力します。

    CONNECT accts_admin_ace --Or, CONNECT accts_admin_ace@hrpdb
    Enter password: password
    
    ALTER USER SCOTT ACCOUNT LOCK PASSWORD EXPIRE;

6.9 コマンド・ルール設計のガイドライン

Oracleでは、コマンド・ルール設計のガイドラインを提供しています。

  • 維持が簡単であるため、ファイングレイン・コマンド・ルールを作成します。

    たとえば、特定のスキーマ・オブジェクトでSELECT文が発生しないようにする場合は、スキーマ・レベルでSELECT文を阻止する一般的なコマンド・ルールを作成するのではなく、特定のスキーマ・オブジェクトでSELECT文を阻止する複数のコマンド・ルールを設計します。

  • CONNECTイベントにルールを作成する場合、必要なユーザー接続を間違えてロックアウトしないロジックを慎重に指定してください。アカウントが誤ってロックアウトされた場合、DV_ADMINまたはDV_OWNERロールを付与されたユーザーに、ロックアウト問題の原因となっているルールにログインして修正してもらうようにしてください。CONNECTコマンドは、DV_OWNERロールとDV_ADMINロールを持つユーザーには適用されません。これにより、不適切に構成されたCONNECTコマンド・ルールで完全なロックアウトが生じることはありません。

    アカウントがロックアウトされている場合は、Oracle Database Vaultを無効にして、ロックアウトの問題の原因となっているルールを修正し、再びOracle Database Vaultを有効にします。Oracle Database Vaultが無効な場合でも、Database Vault AdministratorとDatabase Vault PL/SQLパッケージはまだ使用できます。

  • 管理タスクに対して有効なコマンド・ルールを一時的に緩和する必要がある場合は、コマンド・ルールをシミュレーション・モードに切り替えることを検討してください。これにより、ルール・セット基準を満たすアクティビティは取得されず、違反したアクティビティのみが取得されることに注意してください。

  • コマンド・ルールの設計時には、処理が不用意に無効にされる可能性があるため、バックアップなどの自動プロセスを考慮するようにしてください。使用中のプログラム、使用中のアカウントまたはクライアント・プログラムが稼働中のコンピュータやネットワークなど、一連のOracle Database VaultファクタがTrueであることが明白な場合には、コマンドを許可するルールを作成することでこれらのタスクを把握できます。

  • シミュレーション・モードを使用することで、コマンド・ルールの開発フェーズをテストできます。このモードでは、コマンド・ルールは有効になりますが、それに関する詳細情報がログ・ファイルに書き込まれます。

6.10 コマンド・ルールのパフォーマンスへの影響

コマンド・ルールのパフォーマンスは、そのコマンド・ルールに関連付けられているルール・セット内のルールの複雑さに依存します。

たとえば、実行に5秒かかるPL/SQLファンクションを起動するルール・セットがあるとします。この場合、このルール・セットを使用するコマンド・ルールでは、実行するコマンド文へのアクセス権の付与に5秒かかります。

システム・パフォーマンスを確認するには、Oracle Enterprise Manager(Oracle Databaseと一緒にデフォルトでインストールされるOracle Enterprise Manager Cloud Controlを含む)、自動ワークロード・リポジトリ(AWR)およびTKPROFなどのツールを実行します。

関連項目:

6.11 コマンド・ルールに関連するレポートおよびデータ・ディクショナリ・ビュー

Oracle Database Vaultには、コマンド・ルールの分析に役立つ、レポートとデータ・ディクショナリ・ビューが用意されています。

表6-2に、Oracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、「Oracle Database Vaultレポート」を参照してください。

表6-2 コマンド・ルールに関連するレポート

レポート 説明

「コマンド・ルールの監査」レポート

コマンド・ルールを処理する操作により生成された監査レコードが表示されます。

「コマンド・ルール構成の問題」レポート

コマンド・ルールに存在するその他の構成問題に加え、ルール違反が追跡されます。

オブジェクト権限レポート

コマンド・ルールが影響するオブジェクト権限が表示されます。

機密オブジェクト・レポート

コマンド・ルールが影響するオブジェクトが表示されます。

「ルール・セット構成の問題」レポート

ルールが定義されていないか、有効ではなく、それらを使用するコマンド・ルールに影響を与える可能性があるルール・セットが表示されます。

DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを使用すると、コマンド・ルールにより保護されているSQL文を検出できます。詳細は、「DBA_DV_COMMAND_RULEビュー」を参照してください。