11 Oracle Database Vaultとその他のOracle製品の統合

Oracle Database Vaultは、Oracle Data Guardなどの他のOracle製品と統合できます。

11.1 Oracle Database Vaultと透過的データ暗号化の統合

データがデータベースのセキュアな範囲外にある場合のデータ保護を提供するという意味で、透過的データ暗号化はOracle Database Vaultを補完するものです。

透過的データ暗号化を使用して、データベース管理者またはデータベース・セキュリティ管理者は、アプリケーション表の機密情報の列のみを暗号化したり、アプリケーション表領域全体を暗号化したりできます。アプリケーションを変更する必要はありません。

ユーザーが認証チェックと認可チェックを通ると、透過的データ暗号化によりユーザーの情報は自動的に暗号化および復号化されます。このように、アプリケーションを変更しなくても暗号化を実装できます。

透過的データ暗号化ユーザーに適切な権限を付与したら、透過的データ暗号化を通常どおり管理でき、Database Vaultを補完するものとして使用できます。

図11-1に、暗号化されたデータがOracle Database Vaultレルムでどのように処理されるかを示します。

図11-1 暗号化されたデータとOracle Database Vault

図11-1の説明が続く
「図11-1 暗号化されたデータとOracle Database Vault」の説明

11.2 Oracle Virtual Private Databaseへのファクタの追加

Oracle Virtual Private DatabaseにはOracle Database Vaultのファクタを追加できます。

  1. PL/SQLファンクションまたはPL/SQL式であるVirtual Private Databaseポリシー述語を定義します。
  2. 各ファンクションまたは式に対して、ファクタごとに作成されるPL/SQLファンクションDVF.F$を使用します。

11.3 Oracle Database VaultとOracle Label Securityの統合

Oracle Database VaultとOracle Label Securityを統合すると、レポートおよびデータ・ディクショナリ・ビューとの統合を確認できます。

11.3.1 Oracle Database VaultとOracle Label Securityの統合方法

Oracle Database VaultとOracle Label Securityの統合により、OLSラベルをDatabase Vaultファクタ・アイデンティティに割当てできます。

Oracle Label Securityでは、データベース表またはPL/SQLプログラムのレコードへのアクセスを制限できます。たとえば、アクセスを特定の管理者に限定する必要があるレコードを含むEMPLOYEE表の、HIGHLY SENSITIVEラベル(Oracle Label Securityラベル)で保護されたデータをMaryは参照できます。もう1つのラベルを、このデータへのよりオープンなアクセスを許可するPUBLICにできます。

Oracle Database Vaultでは、データベース・セッションが発生するネットワーク用に、次のアイデンティティを指定してNetworkというファクタを作成できます。

  • Intranet: 従業員が会社のイントラネット内の場所で作業している場合に使用します。

  • Remote: 従業員がVPN接続から在宅で作業している場合に使用します。

次に、両方のアイデンティティに最大のセッション・ラベルを割り当てます。たとえば:

  • IntranetアイデンティティをOracle Label SecurityラベルのHIGHLY SENSITIVEに割り当てます。

  • RemoteアイデンティティをPUBLICラベルに割り当てます。

つまり、MaryがVPN接続を使用して在宅で作業している場合は、PUBLICアイデンティティで保護される、限定された表データにのみアクセスできます。しかし、職場にいる場合は、Intranetアイデンティティを使用しているため、HIGHLY SENSITIVEデータにアクセスできます。

Label Security統合の監査レポートを使用すると、Oracle Label Securityとの統合を監視できます。この情報を取得する監査ポリシーを作成できます。現在のOracle Databaseリリース23cでは、従来の監査はサポート対象外です。

11.3.2 Oracle Database VaultをOracle Label Securityとともに使用するための要件

Oracle Database VaultとOracle Label Securityを使用する前に、特定の要件を満たす必要があります。

  • Oracle Label Securityは別個にライセンス許可されます。それを使用するためのライセンスを購入済であることを確認してください。

  • Oracle Database Vaultをインストールする前に、Oracle Label Securityのインストールを済ませておく必要があります。

  • Oracle Label Securityのインストール・プロセスでLBACSYSユーザー・アカウントが作成されます。DV_ACCTMGRロールを付与されているユーザーとして、このアカウントをロック解除し、新しいパスワードを付与します。たとえば:

    sqlplus accts_admin_ace@pdb_name
    Enter password: password
    
    ALTER USER LBACSYS ACCOUNT UNLOCK IDENTIFIED BY password;
  • Oracle Enterprise ManagerでLBACSYSユーザー・アカウントを使用する場合、SYSDBA管理権限を持つユーザーSYSとしてEnterprise Managerにログインし、このユーザーにSELECT ANY DICTIONARYおよびSELECT_CATALOG_ROLEシステム権限を付与します。

  • 適切なOracle Label Securityポリシーが定義されていることを確認してください。

  • Oracle Label SecurityポリシーをDatabase Vaultポリシーと統合する場合、Oracle Label Securityのポリシー名が24文字未満であることを確認します。ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せることで、Oracle Label Securityポリシーの名前がチェックできます。

11.3.3 Oracle Label SecurityポリシーでのOracle Database Vaultファクタの使用方法

セキュリティを強化するには、Oracle Database VaultのファクタとOracle Label Securityポリシーを統合します。

11.3.3.1 Oracle Label SecurityポリシーでのOracle Database Vaultファクタの使用

Oracle Database VaultとOracle Label Securityの統合により、データベース・セッションの最大セキュリティ・チェックを制御できます。

Oracle Database Vaultでは、Oracle Label Securityポリシーに関連付けられているOracle Database Vaultファクタのラベルをマージすることによって、データベース・セッションにおける各ラベルの最大許容データをマージして、データベース・セッションの最大セキュリティ・チェックを制御します。

つまり、ラベルは、データベース表の行のアクセス権限に対する識別子として機能します。ポリシーは、表の行へのアクセスを管理するラベル、ルールおよび認可と関連付けられた名前です。

11.3.3.2 Oracle Label Securityポリシーと連携するファクタの構成

Oracle Label Securityポリシーの最大許容データ・ラベルに含めるファクタを定義できます。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
  2. ユーザー・アカウントLBACSYSを、Label Securityポリシーが適用されているスキーマを含むレルムの所有者にします。

    これにより、レルム内で保護されているすべてのデータへのアクセス権がLBACSYSアカウントに付与され、データを適切に分類できるようになります。

    たとえば、LBACSYSHR Realmというレルムの所有者にするには、次のようにします。
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
      realm_name   => 'HR Realm', 
      grantee      => 'LBACSYS', 
      auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER);
    END;
    /
  3. レルムの参加者または所有者として(ラベル・セキュリティ・ポリシーが適用されている)スキーマの所有者を認可します。
    たとえば:
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
      realm_name   => 'HR Realm', 
      grantee      => 'HR', 
      auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER);
    END;
    /
  4. レルムのラベル・セキュリティ・ポリシーを構成します。
    Oracle Label Securityで2つのラベルをマージしている場合、ラベルマージ・アルゴリズムを必要に応じて設定します。ほとんどの場合、LII (最小レベル/論理積/論理積)を使用するようにラベル・セキュリティ・ポリシーを構成する必要があります。この設定は、Oracle Label Security管理者が2つのラベルをマージする際に最も一般的に使用する方法です。この設定により、ラベルが異なる2つのデータ・セットを組み合せる際に必要な結果のラベルをアプリケーションで特定する必要がある場合に、最適な柔軟性が提供されます。これは、データ・ラベルが異なる行で結合を使用して問合せを実行する必要がある場合にも必要です。
    • 新しいラベル・セキュリティ・ポリシーを作成するには、DBMS_MACADM.CREATE_MAC_POLICYプロシージャを実行します。たとえば:
      BEGIN
       DBMS_MACADM.CREATE_MAC_POLICY(
        policy_name  => 'Access Locations',
        algorithm    => 'LII');
      END;
      /
    • 既存のラベル・セキュリティ・ポリシーを変更するには、 DBMS_MACADM.UPDATE_MAC_POLICYプロシージャを実行します。
  5. DBMS_MACADM.ADD_POLICY_FACTORファクタを実行して、ファクタとラベル・セキュリティ・ポリシーを関連付けます。
    たとえば:
    BEGIN
     DBMS_MACADM.ADD_POLICY_FACTOR(
      policy_name  => 'Access Locations', 
      factor_name  => 'Sector2_DB'); 
    END;
    /
  6. DBMS_MACADM.CREATE_IDENTITYプロシージャを実行して、ファクタ・アイデンティティを作成します。
    たとえば:
    BEGIN
     DBMS_MACADM.CREATE_IDENTITY(
      factor_name  => 'Sector2_DB', 
      value        => 'intranet', 
      trust_level  => 5); 
    END;
    /
  7. ラベルのポリシーを使用して、ファクタ・アイデンティティのラベル付けを行います。
    たとえば:
    BEGIN
     DBMS_MACADM.CREATE_POLICY_LABEL(
      identity_factor_name   => 'Sector2_DB', 
      identity_factor_value  => 'intranet',
      policy_name            => 'Access Locations',
      label                  => 'sensitive'); 
    END;
    /

ノート:

Oracle Label Securityポリシーをファクタと関連付けない場合、Oracle Database Vaultではポリシーに対するOracle Label Securityのデフォルト動作が維持されます。

11.3.4 チュートリアル: Oracle Database VaultとOracle Label Securityの統合

Oracle Database VaultとOracle Label Securityの統合により、同じ権限を持つ2人の管理ユーザーに異なるレベルのアクセス権を付与できます。

11.3.4.1 このチュートリアルについて

Oracle Database VaultファクタをOracle Label SecurityおよびOracle Virtual Private Database(VPD)とともに使用すると、機密データへのアクセスを制限できます。

このようなデータを制限して、セキュリティ管理者が任意のデータ・セッションに対して定義するファクタの適切な組合せが存在する場合にのみデータベース・セッションに公開されるようにすることができます。

11.3.4.2 ステップ1: このチュートリアル用のユーザーの作成

このチュートリアル用に2つの管理ユーザーを作成する必要があります。

  1. DV_ACCTMGRロールを付与されているユーザーとしてPDBにログインします。
  2. 次のローカル・ユーザーを作成します。
    GRANT CREATE SESSION TO mdale IDENTIFIED BY password CONTAINER = CURRENT;
    GRANT CREATE SESSION TO jsmith IDENTIFIED BY password CONTAINER = CURRENT;

    passwordを、ユーザーのプロファイルのパスワードの複雑度要件を満たすパスワードに置き換えます。

  3. システム権限を付与でき、Oracleシステム権限およびロール管理レルムの所有者認可を付与されているユーザーとして接続し、ユーザーmdaleとユーザーjsmithに管理権限を付与します。
    GRANT DBA TO mdale, jsmith;

    この段階で、ユーザーmdaleとユーザーjsmithは、同じ管理権限を持ちます。

11.3.4.3 ステップ2: Oracle Label Securityポリシーの作成

次に、Oracle Label Securityポリシーを作成し、ユーザーに適切な権限を付与します。

  1. SQL*Plusで、Oracle Label Security管理者LBACSYSとしてPDBに接続します。

    ユーザーLBACSYSがロックされて無効になっている場合、Database Vaultアカウント・マネージャとして接続し、LBACSYSアカウントのロックを解除して有効にしてから、LBACSYSとして再びログインします。

    たとえば:

    ALTER USER LBACSYS ACCOUNT UNLOCK IDENTIFIED BY password;
    
    CONNECT LBACSYS
    Enter password: password
  2. 新規のOracle Label Securityポリシーを作成します。
    EXEC SA_SYSDBA.CREATE_POLICY('PRIVACY','PRIVACY_COLUMN','NO_CONTROL');
  3. PRIVACYポリシーに次のレベルを作成します。
    EXEC SA_COMPONENTS.CREATE_LEVEL('PRIVACY',2000,'S','SENSITIVE');
    EXEC SA_COMPONENTS.CREATE_LEVEL('PRIVACY',1000,'C','CONFIDENTIAL');
    
  4. PII区分を作成します。
    EXEC SA_COMPONENTS.CREATE_COMPARTMENT('PRIVACY',100,'PII','PERS_INFO');
    
  5. ユーザーmdaleとユーザーjsmithに次のラベルを付与します。
    EXEC SA_USER_ADMIN.SET_USER_LABELS('PRIVACY','mdale','S:PII');
    EXEC SA_USER_ADMIN.SET_USER_LABELS('PRIVACY','jsmith','C'); 
    

    ユーザーmdaleは、PII区分を含むより機密性の高いラベル、Sensitiveを付与されます。ユーザーjsmithは、機密性の低いConfidentialラベルを取得します。

11.3.4.4 ステップ3: OLS認可を制御するためのOracle Database Vaultルールの作成

Oracle Label Securityポリシーの作成後、これと連携するDatabase Vaultルールを作成できます。

  1. Database Vault所有者としてPDBに接続します。
  2. 次のルール・セットを作成します。
    EXEC DBMS_MACADM.CREATE_RULE_SET('PII Rule Set', 'Protect PII data from privileged users','Y',1,0,2,NULL,NULL,0,NULL);
    
  3. PII Rule Setにルールを作成します。
    EXEC DBMS_MACADM.CREATE_RULE('Check OLS Factor',  'dominates(sa_utl.numeric_label(''PRIVACY''),  char_to_label(''PRIVACY'',''S:PII'')) = ''1''');
    

    この例のように、二重引用符ではなく、必ず一重引用符を使用してください。

  4. Check OLS FactorルールをPII Rule Setに追加します。
    EXEC DBMS_MACADM.ADD_RULE_TO_RULE_SET('PII Rule Set', 'Check OLS Factor');
11.3.4.5 ステップ4: ルール・セットを使用するためのALTER SYSTEMコマンド・ルールの更新

ルール・セットを使用する前に、デフォルト・コマンド・ルールであるALTER SYSTEMコマンド・ルールを更新する必要があります。

  1. Database Vault所有者として、ALTER SYSTEMコマンド・ルールの現行値を確認します。このコマンド・ルールは、Oracle Database Vaultインストール時のデフォルト・コマンド・ルールの1つです。
    SELECT * FROM DBA_DV_COMMAND_RULE WHERE COMMAND = 'ALTER SYSTEM';
    
  2. 後で元の値に戻せるように、これらの設定をノートにとります。

    デフォルトのインストールでは、「ALTER SYSTEM」コマンド・ルールは「システム・パラメータのファイングレイン・コントロールを許可」ルール・セットを使用し、有効になっています。

  3. PIIルール・セットに関連付けられる「ALTER SYSTEM」コマンド・ルールを更新します。
    EXEC DBMS_MACADM.UPDATE_COMMAND_RULE('ALTER SYSTEM', 'PII Rule Set', '%', '%', 'Y');
    

    このコマンドでは、PII Rule SetをALTER SYSTEMコマンド・ルールに追加し、すべてのオブジェクト所有者およびオブジェクト名に適用し、コマンド・ルールを有効にします。

11.3.4.6 ステップ5: 認可のテスト

すべてのコンポーネントの準備ができたら、認可をテストする準備ができます。

  1. SQL*Plusで、ユーザーmdaleとしてPDBにログインします。
  2. CPU_COUNT初期化パラメータの現行設定を確認します。
    SHOW PARAMETER PARAMETER CPU_COUNT
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ----------------------
    cpu_count                            string      2

    後で元の設定に戻せるように、これらの設定をノートにとります。

  3. ユーザーmdaleとして、ALTER SYSTEM文を使用し、CPU_COUNTパラメータを変更します。
    ALTER SYSTEM SET CPU_COUNT = 4;
    System altered.

    ユーザーmdaleはPII区分を含むSensitiveラベルを割り当てられたので、ALTER SYSTEM文を使用して、CPU_COUNTシステム・パラメータを変更できます。

  4. CPU_COUNTパラメータを元の値に戻します。

    たとえば:

    ALTER SYSTEM SET CPU_COUNT = 2;
  5. ユーザーjsmithとしてログインし、同じALTER SYSTEM文を発行します。
    ALTER SYSTEM SET CPU_COUNT = 14;

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

    ERROR at line 1:
    ORA-01031: insufficient privileges
    

    ユーザーjsmithはConfidentialラベルしか割り当てられていないので、ALTER SYSTEM文を実行できません。

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

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

  1. Oracle Label Security管理者としてPDBに接続し、ラベル・ポリシーとそのコンポーネントを削除します。
    EXEC SA_SYSDBA.DROP_POLICY('PRIVACY', TRUE);
  2. Oracle Database Vault所有者として接続し、次のコマンドを示した順序で発行し、ALTER SYSTEMコマンド・ルールを以前の設定に戻して、ルール・セットを削除します。
    EXEC DBMS_MACADM.UPDATE_COMMAND_RULE('ALTER SYSTEM', 'Allow System Parameters','%', '%', 'Y');
    EXEC DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('PII Rule Set', 'Check OLS Factor');
    EXEC DBMS_MACADM.DELETE_RULE('Check OLS Factor');
    EXEC DBMS_MACADM.DELETE_RULE_SET('PII Rule Set');
    COMMIT;
    
  3. Database Vaultアカウント・マネージャとして接続し、ユーザーmdaleとユーザーjsmithを削除します。
    DROP USER mdale;
    DROP USER jsmith;

11.3.5 関連するレポートおよびデータ・ディクショナリ・ビュー

Oracle Database Vaultには、Oracle Database VaultとOracle Label Securityの統合に関する情報が示されるレポートおよびデータ・ディクショナリ・ビューが用意されています。

表11-1では、Oracle Database Vaultレポートを示します。

表11-1 Oracle Database Vault-Oracle Label Security統合に関連するレポート

レポート 説明

「ファクタ構成の問題」レポート

Oracle Label Securityポリシーが存在しないファクタが表示されます。

「アイデンティティ構成の問題」レポート

無効なラベル・アイデンティティ(このアイデンティティのOracle Label Securityラベルが削除されていて、すでに存在しない)が表示されます。

「セキュリティ・ポリシー除外」レポート

EXEMPT ACCESS POLICYシステム権限が付与されているアカウントおよびロールが表示されます。この権限を持つアカウントは、すべてのVirtual Private Databaseのポリシー・フィルタと、Oracle Virtual Private Databaseを間接的に使用するOracle Label Securityポリシーを無視できます。

表11-2に、Oracle Database Vaultで使用される既存のOracle Label Securityポリシーに関する情報を提供するデータ・ディクショナリ・ビューを示します。

表11-2 Oracle Label Securityに使用されるデータ・ディクショナリ・ビュー

データ・ディクショナリ・ビュー 説明

DBA_DV_MAC_POLICY

定義されているOracle Label Securityポリシーが表示されます。

DBA_DV_MAC_POLICY

Oracle Label Securityポリシーに関連付けられているファクタが表示されます。

DBA_DV_POLICY_LABEL

各ポリシーのDBA_DV_IDENTITYビューの各ファクタ識別子に対するOracle Label Securityラベルが表示されます。

11.4 Oracle Database VaultとOracle Data Guardの統合

Oracle Database VaultとOracle Data Guardの統合では、まずプライマリ・データベースを構成し、次にスタンバイ・データベースを構成します。

11.4.1 ステップ1: プライマリ・データベースの構成

DGMGRLユーティリティを実行し、Oracle Database Vaultを構成して有効化し、次にALTER SYSTEM文を実行して、プライマリ・データベースを構成する必要があります。

  1. LinuxおよびUNIXシステムの場合、Oracle Database Vaultをインストールするノードのデータベースに/etc/oratabエントリがあることを確認します。
  2. Data Guard Brokerを使用している場合は、コマンド・プロンプトから次のように構成を無効化します。
    dgmgrl sys
    Enter password: password
    
    DGMGRL> disable configuration;
    
  3. プライマリ・サーバーでOracle Database Vaultを構成して有効化します。
    Oracle Database Vaultは、デフォルトで、Oracle Databaseの一部としてインストールされます。この登録のステータスは、DBA_DV_STATUSデータ・ディクショナリ・ビューを問い合せることで確認できます。
  4. SYSDBA管理権限を持つユーザーSYSとしてPDBにログインします。
  5. 次のALTER SYSTEM文を実行します。
    ALTER SYSTEM SET OS_ROLES=FALSE SCOPE=SPFILE; 
    ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE' SCOPE=SPFILE;
    ALTER SYSTEM SET SQL92_SECURITY=TRUE SCOPE=SPFILE;
    ALTER SYSTEM SET REMOTE_OS_ROLES=FALSE SCOPE=SPFILE;
  6. 各データベース・インスタンスでALTER SYSTEM文を実行して、前のステップに示すようにパラメータを設定します。
  7. SYSDBA管理権限を持つユーザーSYSとして、各PDBをクローズしてから再オープンします。
    ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
    ALTER PLUGGABLE DATABASE pdb_name OPEN;

関連トピック

11.4.2 ステップ2: スタンバイ・データベースの構成

スタンバイ・データベースに使用されるデータベース内でスタンバイ・データベース構成を実行できます。

  1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。
  2. スタンバイ・データベース・インスタンスをマウントします。
    ALTER DATABASE MOUNT STANDBY DATABASE;
  3. 次のALTER SYSTEM文を実行します。
    ALTER SYSTEM SET OS_ROLES=FALSE SCOPE=SPFILE; 
    ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE' SCOPE=SPFILE;
    ALTER SYSTEM SET SQL92_SECURITY=TRUE SCOPE=SPFILE;
    ALTER SYSTEM SET REMOTE_OS_ROLES=FALSE SCOPE=SPFILE;
  4. PDBを閉じてから、再度開きます。
    ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
    ALTER PLUGGABLE DATABASE pdb_name OPEN;
  5. 次のスタンバイ・インスタンスをマウントします。
  6. 管理リカバリを次のように再起動します。
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE; 
    
  7. Data Guard Brokerを使用している場合は、コマンド・ラインから構成を再有効化します。
    dgmgrl sys
    Enter password: password
    
    DGMGRL> enable configuration; 
    

    このコマンドにより、変更内容がプライマリ・データベースのOracle Database Vaultインストールで作成された物理スタンバイ・データベースに適用されます。

  8. 各物理スタンバイ・データベースで、物理スタンバイ・インストール・プロセスを繰り返します。たとえば、物理スタンバイ・データベースが3つある場合は、各スタンバイ・データベースでこれらの手順を実行します。

11.4.3 Oracle Database VaultとOracle Active Data Guardの統合後の監査の動作

Oracle Database VaultをOracle Active Data Guardと統合した後は、監査の構成内容によって、監査レコードがどのように生成されるかが変わります。

読取り専用の問合せ用にActive Data Guardフィジカル・スタンバイ・データベースを使用する場合は、統合監査を使用する必要があります。Oracle Database Vaultでは、従来のDatabase Vault監査表(DVSYS.AUDIT_TRAILS$)に書き込むことができません。統合監査により、Database Vaultの監査データがOracle Active Data Guardフィジカル・スタンバイ・データベースのオペレーティング・システムのログ・ファイルに確実に書き込まれます。これらのログ・ファイルのデータは統合監査証跡に移動できます。Database Vaultのアクティビティを監査するには、従来の監査がサポートされなくなったため、統合監査ポリシーを作成する必要があることに注意してください。

11.4.4 Oracle Data Guard環境でのOracle Database Vaultの無効化

Oracle Data Guard環境でOracle Database Vaultを無効にする場合は、まずプライマリ・データベースで、次にスタンバイ・データベースでプロシージャを実行する必要があります。

次の順序で、プライマリ・データベースとスタンバイ・データベースでOracle Database Vaultの無効化を実行します。

  1. プライマリ・データベースでOracle Database Vaultを無効にします。
  2. セカンダリ・データベースでOracle Database Vaultを無効にします。
  3. プライマリ・データベースを再起動します。
  4. 各スタンバイ・データベースを再起動します。

11.5 Oracle Database Configuration Assistantを使用したOracle Internet Directoryの構成

Oracle Database Vault対応データベースでOracle Internet Directoryを使用できます。

ただし、Oracle Database Configuration Assistant (DBCA)を使用して、Oracle Internet Directory (OID)を構成する場合、まずOracle Database Vaultを無効にする必要があります。

11.6 Oracle Database Vaultとエンタープライズ・ユーザー・セキュリティの統合

Oracle Database Vaultは、Oracle Enterprise User Securityと統合できます。

11.6.1 Oracle Database Vaultとエンタープライズ・ユーザー・セキュリティの統合について

エンタープライズ・ユーザー・セキュリティでは、データベース・ユーザーと認可が1箇所で集中管理されます。

Oracle Identity Managementと組み合せ、Oracle Database Enterprise Editionで使用できます。

通常、Oracle Database VaultをOracle Enterprise User Securityと統合するには、適切なレルムを構成して、保護の対象となるデータベース内のデータを保護します。

必要に応じてOracle Database Vaultレルムを定義した後に、エンタープライズ・ユーザーに対してアクセスを許可または禁止するルール・セットを作成できます。

ノート:

エンタープライズ・ユーザー・セキュリティ(EUS)は、Oracle Database 23cで非推奨になりました。

集中管理ユーザー(CMU)の使用に移行することをお薦めします。この機能を使用すると、エンタープライズ・ユーザー認証およびデータベースへの認可用のディレクトリ・サービスを介在させることなく、Microsoft Active Directoryに直接接続できます。Oracle Databaseがクラウドにある場合は、クラウド・アイデンティティ・プロバイダとの新しい統合の1つに移行することもできます。

11.6.2 エンタープライズ・ユーザー認可の構成

エンタープライズ・ユーザー認可を構成するには、Oracle Database Vaultルール・セットを作成して、ユーザー・アクセスを制御する必要があります。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
  2. DBMS_MACADM.CREATE_RULEプロシージャを実行して、ユーザー・アクセスを許可または禁止するルールを作成します。
    BEGIN
     DBMS_MACADM.CREATE_RULE(
      rule_name  => 'Control User Access', 
      rule_expr  =>'SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') = 'user_domain_name'',
      scope      => DBMS_MACUTL.G_SCOPE_LOCAL);
    END;
    /

    詳細は、次のとおりです。

    • rule_nameはルール名を指定します。必要に応じて、有効な名前を入力します。
    • rule_exprは、この例で指定したルール式を使用する必要があります。'user_domain_name'をドメインで置き換えます。たとえば:
      'SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') = 'myserver.us.example.com''
    • scopeDBMS_MACUTL.G_SCOPE_LOCALにする必要があります。
  3. DBMS_MACADM.CREATE_RULE_SETプロシージャを実行して、ルールに使用するルール・セットを作成します。
    たとえば:
    BEGIN
     DBMS_MACADM.CREATE_RULE_SET(
      rule_set_name    => 'EM User Authorization', 
      description      => 'Allows or disallows user access to EM', 
      enabled          => DBMS_MACUTL.G_YES,
      eval_options     => DBMS_MACUTL.G_RULESET_EVAL_ANY,
      audit_options    => DBMS_MACUTL.G_RULESET_AUDIT_OFF,
      fail_options     => DBMS_MACUTL.G_RULESET_FAIL_SILENT,
      fail_message     => '',
      fail_code        => 20461,
      handler_options  => DBMS_MACUTL.G_RULESET_HANDLER_OFF, 
      handler          => ' ',
      is_static        => TRUE);
    END;
    /
  4. DBMS_MACADM.ADD_RULE_TO_RULE_SETプロシージャを実行して、ルール・セットにルールを追加します。
    たとえば:
    BEGIN
     DBMS_MACADM.ADD_RULE_TO_RULE_SET(
      rule_set_name => 'EM User Authorization', 
      rule_name     => 'Control User Access',
      rule_order    => 1);
    END;
    /
  5. DBMS_MACADM.ADD_AUTH_TO_REALMプロシージャを実行して、保護するデータのレルム認可にルール・セットを追加します。
    たとえば、HR Realmというレルムの場合は、次のようになります。
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
      realm_name    => 'HR Realm', 
      grantee       => 'pfitch', 
      rule_set_name => 'EM User Authorization',
      auth_options  => DBMS_MACUTL.G_REALM_AUTH_OWNER,
      auth_scope    => DBMS_MACUTL.G_SCOPE_LOCAL);
    END;
    /

11.6.3 Oracle Database Vaultアカウントをエンタープライズ・ユーザー・アカウントとして構成

既存のOracle Database Vaultユーザー・アカウントをPDBのエンタープライズ・ユーザー・アカウントとして構成できます。

  1. CREATE ROLEシステム権限が付与されたユーザーとしてPDBにログインします。
  2. DV_OWNERロールのグローバル・ロールとDV_ACCTMGRロールのグローバル・ロールを作成します。

    たとえば:

    CREATE ROLE g_dv_owner IDENTIFIED GLOBALLY;
    CREATE ROLE g_dv_acctmgr IDENTIFIED GLOBALLY;
    
  3. DV_OWNERロールを付与されたユーザーとして接続します。
  4. DV_OWNERロールをグローバルDV_OWNERロールに付与します。
    GRANT DV_OWNER TO g_dv_owner;
  5. DV_ACCTMGRロールを付与されているユーザーとして接続します。
  6. DV_ACCTMGRロールをグローバルDV_ACCTMGRロールに付与します。
    GRANT DV_ACCTMGR TO g_dv_acctmgr;
  7. SYSDBA管理権限を持つユーザーSYSとして接続します。
  8. Database VaultユーザーをOIDにインポートするDV_ACCTMGRユーザーに、一時的にCREATE TABLE権限とSELECT_CATALOG_ROLEロールを付与します。
    GRANT CREATE TABLE, SELECT_CATALOG_ROLE TO dbv_acctmgr;
  9. コマンド・ラインで、ユーザー移行ユーティリティ(UMU)を実行してDatabase VaultアカウントをOracle Internet Directory (OID)にインポートします。

    次の例では、Database Vaultアカウントsec_admin_owenおよびaccts_admin_aceをOIDにインポートします。DBADMIN設定にDV_ACCTMGRユーザーが指定されます。

    $ORACLE_HOME/rdbms/bin/umu PHASE=ONE
    DBADMIN=dbv_acctmgr:password
    ENTADMIN=cn=jane_ent_admin,dc=example,dc=com:password
    USERS= LIST
    DBLOCATION=example.com:7777:orcl
    DIRLOCATION=example.com:636
    USERSLIST=sec_admin_owen:accts_admin_ace
    MAPSCHEMA=PRIVATE
    CONTEXT=CONTEXT="c=Users, c=us"
    KREALM=EXAMPLE.COM
    
    $ORACLE_HOME/rdbms/bin/umu PHASE=TWO
    DBADMIN=dbv_acctmgr:password
    ENTADMIN=cn=jane_ent_admin,dc=example,dc=com:password
    DBLOCATION=example.com:7777:orcl
    DIRLOCATION=example.com:636
    

    デフォルトでは、$ORACLE_HOME/network/log/umu.logファイルにエラーが書き込まれます。

    エンタープライズ・ユーザー・セキュリティ(EUS)ユーザー移行ユーティリティ(UMU)は、Oracle Database 21cでは非推奨です。かわりにEUSマネージャ(EUSM)機能を使用してください。
  10. Oracle Internet Directoryセルフ・サービス・コンソール(http://hostname:port/oiddas/)で、グローバルDV_OWNERおよびDV_ACCTMGRロール(g_dv_ownerg_dv_acctmgrなど)をエンタープライズ・ユーザーのDatabase Vaultアカウントに付与します。

    グローバル・ロールからエンタープライズ・ロールを作成し、このロールをユーザーに付与する方法については、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』のエンタープライズ・ユーザーの作成例に関する項を参照してください。

  11. SQL*Plusで、SYSDBA管理権限を持つユーザーSYSとして、CREATE TABLEおよびSELECT_CATALOG_ROLEロールをDV_ACCTMGRユーザーから取り消します。
    REVOKE CREATE TABLE, SELECT_CATALOG_ROLE FROM dbv_acctmgr;

11.7 Oracle Database VaultとOracle APEXの統合

Oracle Database Vaultは、Oracle APEXと統合できます。

11.7.1 Oracle Database VaultとOracle APEXの統合について

Oracle APEXは、SQLおよびPL/SQLを使用してWebアプリケーションを開発するためのOracleの主要ツールです。

Oracle Database Vaultを有効にして、Oracle APEXで開発されたアプリケーションを保護できます。Oracle Database Vault対応データベースでOracle APEXを使用するには、Oracle Database Vault対応サーバーにOracle APEXをインストールしてから、適切なプラガブル・データベース(PDB)で必要な認可を実行する必要があります。

11.7.2 Oracle Database Vaultが有効なOracle APEXのインストールまたはアップグレード

Oracle Database Vaultが有効な場合は、Oracle APEXのインストールまたはアップグレードに追加の権限が必要です。

  1. Oracle Database Vault対応データベースのルートに、DV_OWNERロールを持つユーザーとしてログインします。
  2. すべてのプラガブル・データベース(PDB)のSYSDV_PATCH_ADMINロールを付与します。
    GRANT DV_PATCH_ADMIN TO SYS CONTAINER=ALL;
  3. Oracle APEXインストレーション・ガイドの指示に従って、Oracle APEXのインストールを完了してください。
    このインストールにOracle Rest Data Services (ORDS)が含まれている場合は、Oracle Rest Data Servicesのプロキシ・ユーザーへのOracle APEXの認可を参照してください。
  4. DV_OWNERロールを持つユーザーとして、コンテナ・データベースで、すべてのPDBからSYSからDV_PATCH_ADMINロールを取り消します。
    REVOKE DV_PATCH_ADMIN FROM SYS CONTAINER=ALL;

11.7.3 Oracle Database VaultアクティビティのためのOracle APEXスキーマの認可

Oracle APEXスキーマ(APEX_SCHEMAなど)を、Oracle APEXで必要なOracle Database Vaultレルムおよび認可に追加する必要があります。

  1. Oracle Database Vault対応データベースのプラガブル・データベース(PDB)に、DV_OWNERロールを持つユーザーとして接続します。
  2. Oracle APEXスキーマを次のレルム、ポリシーおよびルールに対して認可します。
    たとえば、APEX_SCHEMAというOracle APEXスキーマの場合:
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
     REALM_NAME      => 'Oracle Default Schema Protection Realm',
     GRANTEE         => 'APEX_SCHEMA',
     RULE_SET_NAME   => NULL,
     AUTH_OPTIONS    => DBMS_MACUTL.G_REALM_AUTH_OWNER);
    END;
    /
    
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
     REALM_NAME      => 'Oracle System Privilege and Role Management Realm',
     GRANTEE         => 'APEX_SCHEMA',
     RULE_SET_NAME   => NULL,
     AUTH_OPTIONS    => DBMS_MACUTL.G_REALM_AUTH_OWNER);
    END;
    /
    
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
     REALM_NAME     => 'Oracle Default Component Protection Realm',
     GRANTEE        => 'APEX_SCHEMA',
     RULE_SET_NAME  => NULL,
     AUTH_OPTIONS   => DBMS_MACUTL.G_REALM_AUTH_OWNER);
    END;
    /
    
    BEGIN
     DBMS_MACADM.ADD_AUTH_TO_REALM(
     REALM_NAME     => 'Database Vault Account Management',
     GRANTEE        => 'APEX_SCHEMA',
     RULE_SET_NAME  => NULL,
     AUTH_OPTIONS   => DBMS_MACUTL.G_REALM_AUTH_OWNER);
    END;
    /
    
    EXEC DBMS_MACADM.UPDATE_POLICY_STATE('Oracle Account Management Controls',DBMS_MACADM.G_PARTIAL);
    BEGIN 
     DBMS_MACADM.UPDATE_RULE('Is User Manager'
    ,'DVSYS.DBMS_MACUTL.USER_HAS_ROLE_VARCHAR(''DV_ACCTMGR'',SYS_CONTEXT(''userenv'',''current_user'')) = ''Y''');
    END;
    /
    
    BEGIN 
     DBMS_MACADM.UPDATE_RULE('Is Alter DVSYS Allowed'
    ,'DVSYS.DBMS_MACADM.IS_ALTER_USER_ALLOW_VARCHAR(SYS_CONTEXT(''userenv'',''current_user'')) = ''Y''');
    END;
    /

11.7.4 Oracle Schedulerを使用するためのOracle APEXの認可

Oracle APEXはOracle Schedulerを使用しており、引き続き使用するには権限が必要です。

  1. Oracle Database Vault対応データベースのプラガブル・データベース(PDB)を、DV_OWNERロールを持つユーザーとして接続します。
  2. Oracle APEXスキーマに対するスケジューラ権限の使用をSYSユーザーに認可します。
    たとえば、APEX_SCHEMAという名前のOracle APEXスキーマの場合:
    EXEC DBMS_MACADM.AUTHORIZE_SCHEDULER_USER('SYS','APEX_SCHEMA');
  3. ジョブ・スケジューラ権限の使用をOracle APEXユーザーに認可します。
    EXEC DBMS_MACADM.AUTHORIZE_SCHEDULER_USER('APEX_SCHEMA','%');

11.7.5 DDLタスクを実行するためのOracle APEXの認可

アクセス権を持っているが、追加のOracle Database Vault制御の対象となる可能性があるオブジェクトに対してDDL権限を使用するよう、Oracle APEXスキーマを認可する必要があります。

  1. Oracle Database Vault対応データベースのプラガブル・データベース(PDB)を、DV_OWNERロールを持つユーザーとして接続します。
  2. Oracle APEXスキーマのDDL使用認可
    たとえば、APEX_SCHEMAという名前のOracle APEXスキーマの場合:
    EXEC DBMS_MACADM.AUTHORIZE_DDL('APEX_SCHEMA','%');

11.7.6 情報ライフサイクル・メンテナンス・タスクを実行するためのOracle APEXの認可

メンテナンス・タスクを実行するには、Oracle APEXスキーマを認可する必要があります。

  1. Oracle Database Vault対応データベースのプラガブル・データベース(PDB)を、DV_OWNERロールを持つユーザーとして接続します。
  2. Oracle APEXスキーマにDDL権限の使用を認可します。
    たとえば、APEX_SCHEMAという名前のOracle APEXスキーマの場合:
    EXEC DBMS_MACADM.AUTHORIZE_MAINTENANCE_USER('APEX_SCHEMA','%');

11.7.7 Oracle Rest Data Servicesのプロキシ・ユーザーへのOracle APEXの認可

Oracle Rest Data Services (ORDS)を使用する場合は、プロキシ・ユーザーを認可する必要があります。

  1. Oracle Database Vault対応データベースのプラガブル・データベース(PDB)を、DV_OWNERロールを持つユーザーとして接続します。
  2. プロキシできる既存のプロキシ・ユーザーおよびデータベース・ユーザーを検索します。
    SELECT PROXY, CLIENT FROM PROXY_USERS;
  3. ユーザーのプロキシを認可します。
    EXEC DBMS_MACADM.AUTHORIZE_PROXY_USER('proxy','client');
  4. 実行したPROXY_USERS問合せにリストされている組合せごとに、このステップを繰り返します。

11.7.8 Oracle Database Vaultによって保護されるOracle APEXおよびアプリケーション・オブジェクト

Oracle Database Vaultレルムおよびコマンド・ルールによって保護されているオブジェクトは、Oracle APEXの統合後も引き続き保護されます。

Oracle Database Vaultがこれらのオブジェクトへのアクセス権を付与する前に、同じ権限および認可を満たす必要があります。たとえば、HRスキーマ・オブジェクトへのアクセスを必要とするOracle APEXワークスペースを作成し、HRスキーマ・オブジェクトを保護するOracle Database Vaultレルムがある場合、そのワークスペースにはレルムにアクセスするための認可が必要です。

11.7.9 Oracle APEXおよびDatabase Vault統合のトラブルシューティング

Oracle APEXとDatabase Vaultの統合に問題がある場合は、トレースおよびOracle Database Vaultシミュレーション・モードを使用してこれらの問題を診断できます。

  • トレース: トレース・ファイルを使用すると、サーバー・プロセス・イベントおよびバックグラウンド・プロセス・イベントのOracle Database Vaultデータベース・インスタンスを追跡できます。トレース・ファイルを使用して、Oracle Database Vaultポリシーの認可が成功したか失敗したかを確認します。また、バグやその他の予期しない動作などの問題の解決にも役立ちます。
  • シミュレーション・モード: Oracle Database Vaultのレルムおよびコマンド・ルールによってSQL実行をブロックするかわりに、シミュレーション・モードを使用してシミュレーション・ログに違反を記録できます。Oracle Database Vaultでは、これらのエラーを一元的な場所に格納するため、簡単に分析できます。