3 Oracle Database Vaultの開始

Oracle Database Vaultを使用して開始する前に、これをOracle Databaseに登録する必要があります。

3.1 マルチテナント環境でのOracle Database Vaultの手動インストール

特定の条件のマルチテナント環境に対しては、Oracle Database Vaultを手動でインストールする必要があります。

Database VaultおよびLabel SecurityがインストールされているCDBにPDBが接続されており、このPDBにこれらの製品がない場合は、Oracle Database Vault (およびOracle Label Security)をPDBに手動でインストールする必要があります。
  1. SYSDBA管理権限を付与されているユーザーとして、Oracle Database VaultをインストールするPDBにログインします。

    たとえば、hr_pdbというPDBにログインするには、次のようにします。

    sqlplus sec_admin@hr_pdb as sysdba
    Enter password: password

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

  2. 必要な場合は、「Database Vaultが構成および有効化されていることの確認」の説明に従い、Oracle Database VaultおよびOracle Label SecurityがこのPDBにすでにインストールされているかどうかを確認します。
  3. catols.sqlスクリプトを実行することで、Oracle Label Securityをインストールします。
    @$ORACLE_HOME/rdbms/admin/catols.sql

    Oracle Database Vaultを使用する前に、Oracle Label Securityをインストールする必要があります。

  4. catmac.sqlスクリプトを実行することで、Oracle Database Vaultをインストールします。
    @$ORACLE_HOME/rdbms/admin/catmac.sql
  5. 「1に値を入力してください」プロンプトで、PDBのデフォルト表領域を入力します。
  6. 「2に値を入力してください」プロンプトで、PDBの一時表領域を入力します。
インストールの完了後、Oracle Database Vaultを登録できます。

3.2 Oracle DatabaseへのOracle Database Vaultの登録

Oracle Database Vaultを非マルチテナント環境またはマルチテナント環境のいずれかに登録できます。

3.2.1 Oracle DatabaseへのOracle Database Vaultの登録について

Oracleのインストール後に、Oracle Database VaultをインストールしたOracle Databaseに登録(すなわち構成および有効化)する必要があります。

Oracle Databaseには、インストール・プロセスでデフォルトのデータベースを含めるように選択した場合、Database Vaultが付属しますが、このDatabase Vaultを使用するには登録する必要があります。カスタム・データベースを作成する場合、DBCAを使用してDatabase Vaultをインストールし、そのデータベースに対して有効にすることができます。登録プロセスでは、Oracle Label Securityがまだ有効ではない場合、有効になります。Oracle Label SecurityはOracle Database Vaultに必要ですが、別にOracle Label Securityの使用を開始してOracle Label Securityポリシーを作成する場合を除き、別個のライセンスは必要ありません。この手順は、CDBルート、アプリケーション・ルートおよび現在のプラガブル・データベース(PDB)に適用され、単一インスタンスとOracle Real Application Clusters (Oracle RAC)の両方のインストールに適用されます。

登録プロセスの一部として、Database Vault管理者アカウント作成します。これらは、Database Vault DV_OWNERロールおよびDV_ACCTMGRロールを付与されるユーザー・アカウントです。安全対策として、これらのユーザー・アカウントのバックアップを作成することをお薦めします。すべてのDV_OWNERユーザー・アカウントへのアクセス権を失うと、このロールをリカバリする方法はなくなります。結果として、Database Vaultロールを変更したり、Database Vaultを無効にすることができなくなります。データベースがDatabase Vault所有者アカウントを所有していた最後の既知のポイントにデータベースをリカバリすることで、この問題を改善できます。

この項では、Oracle Database Vaultを非マルチテナント環境において登録する方法、およびマルチテナント環境において登録する複数の方法を説明します。

ノート:

Oracle Database 12cより前のリリースからアップグレードしてあり、その以前のリリースで以前のOracle Database Vaultが有効になっている場合は、アップグレード・プロセスの完了後に、DBMS_MACADM.ENABLE_DVプロシージャを使用することでOracle Database Vaultを有効にする必要があります。

3.2.2 非マルチテナント環境におけるDatabase Vaultの登録

非マルチテナント環境では、SQL*PlusからOracle Database Vaultを登録します。

  1. ユーザー・アカウントを作成する権限があるユーザーとして、データベース・インスタンスにログインし、CREATE SESSION権限を他のユーザーに付与します。

    たとえば:

    sqlplus sec_admin
    Enter password: password
    
  2. Database Vault所有者(DV_OWNERロール)およびDatabase Vaultアカウント・マネージャ(DV_ACCTMGRロール)のアカウント用に使用される名前付きユーザー・アカウントを指定(または必要に応じて新規名前付きユーザーを作成)します。

    ロールごとに2つのアカウントを作成することをお薦めします。一方のアカウントはその名前付きユーザーのプライマリ・アカウントであり、日常的に使用されます。他方のアカウントは、プライマリ・アカウントのパスワードを忘れてしまいリセットする必要がある場合に備えたバックアップ・アカウントとして使用されます。

    たとえば:

    GRANT CREATE SESSION TO sec_admin_owen IDENTIFIED BY password;
    GRANT CREATE SESSION TO dbv_owner_backup IDENTIFIED BY password;
    GRANT CREATE SESSION TO accts_admin_ace IDENTIFIED BY password;
    GRANT CREATE SESSION TO dbv_acctmgr_backup IDENTIFIED BY password;

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

  3. SYSDBA管理権限を使用して接続します。
    CONNECT / AS SYSDBA
    Enter password: password
    
  4. バックアップDatabase Vaultユーザー・アカウントを構成します。
    BEGIN
     CONFIGURE_DV (
       dvowner_uname         => 'dbv_owner_backup',
       dvacctmgr_uname       => 'dbv_acctmgr_backup');
     END;
    /
    

    これらのユーザー・アカウントに、DV_OWNERDV_ACCTMGRなどの、Database Vaultロールの名前を入力しないでください。

  5. utlrp.sqlスクリプトを実行して、無効化されたオブジェクトを再コンパイルします。
    @?/rdbms/admin/utlrp.sql
    

    スクリプトから指示がある場合はそれに従い、再びスクリプトを実行します。指示がなくスクリプトが異常終了した場合は、再びスクリプトを実行します。

  6. 先ほど構成したバックアップDatabase Vault所有者ユーザーとして接続します。

    たとえば:

    CONNECT dbv_owner_backup
    Enter password: password
    
  7. Oracle Database Vaultを有効化します。
    EXEC DBMS_MACADM.ENABLE_DV;
    
  8. SYSDBA管理権限を使用して接続します。
    CONNECT / AS SYSDBA
    
  9. データベースを再起動します。
    SHUTDOWN IMMEDIATE
    STARTUP
    
  10. バックアップDV_OWNERユーザーとして接続し、前に作成したプライマリDV_OWNERユーザーにDV_OWNERロールを付与します。

    たとえば:

    CONNECT dbv_owner_backup
    Enter password: password
    
    GRANT DV_OWNER TO sec_admin_owen WITH ADMIN OPTION;
    
  11. バックアップDV_ACCTMGRユーザーとして接続してから、DV_ACCTMGRロールをプライマリDV_ACCTMGRユーザーに付与します。

    たとえば:

    CONNECT dbv_acctmgr_backup
    Enter password: password
    
    GRANT DV_ACCTMGR TO accts_admin_ace WITH ADMIN OPTION;
  12. 構成が成功したことを確認します。
    CONNECT / AS SYSDBA
    
    SELECT * FROM DBA_DV_STATUS;
    
  13. 2つのバックアップ・アカウント・パスワードを、将来必要になる場合に備えて、特権アカウント管理(PAM)システムなどの安全な場所に格納します。

3.2.3 CDBのルートを管理するための共通ユーザーによるDatabase Vaultの登録

マルチテナント環境では、CDBルートを管理する共通ユーザーによってOracle Database Vaultを登録できます。

  1. マルチテナント環境において、ユーザー作成権限を持ち、CREATE SESSIONおよびSET CONTAINER権限を付与する権限を持つユーザーとして、データベース・インスタンスのルートにログインします。

    たとえば:

    sqlplus c##sec_admin
    Enter password: password
    
  2. Database Vault所有者(DV_OWNERロール)およびDatabase Vaultアカウント・マネージャ(DV_ACCTMGRロール)のアカウント用に使用されるアカウントを作成します。

    ロールごとに2つのアカウントを作成することをお薦めします。一方のアカウントはプライマリ・アカウントであり、日常的に使用されます。他方のアカウントは、プライマリ・アカウントのパスワードを忘れてしまいリセットする必要がある場合に備えたバックアップ・アカウントとして使用されます。

    これらのアカウント名の先頭にc##またはC##を付加します。たとえば:

    GRANT CREATE SESSION, SET CONTAINER TO c##dbv_owner_root IDENTIFIED BY password CONTAINER = ALL;
    GRANT CREATE SESSION, SET CONTAINER TO c##dbv_owner_root_backup IDENTIFIED BY password CONTAINER = ALL;
    GRANT CREATE SESSION, SET CONTAINER TO c##dbv_acctmgr_root IDENTIFIED BY password CONTAINER = ALL;
    GRANT CREATE SESSION, SET CONTAINER TO c##dbv_acctmgr_root_backup IDENTIFIED BY password CONTAINER = ALL;
    

    passwordを安全なパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  3. SYSDBA管理権限を持つユーザーSYSとしてルートに接続します。
    CONNECT SYS AS SYSDBA
    Enter password: password
    
  4. プライマリDatabase Vaultユーザー・アカウントを構成します。
    BEGIN
     CONFIGURE_DV (
       dvowner_uname         => 'c##dbv_owner_root',
       dvacctmgr_uname       => 'c##dbv_acctmgr_root');
     END;
    /
    
  5. utlrp.sqlスクリプトを実行して、ルートで無効化されたオブジェクトを再コンパイルします。
    @?/rdbms/admin/utlrp.sql
    

    スクリプトから指示がある場合はそれに従い、再びスクリプトを実行します。指示がなくスクリプトが異常終了した場合は、再びスクリプトを実行します。

  6. 先ほど構成したプライマリDatabase Vault所有者ユーザーとして、ルートに接続します。

    たとえば:

    CONNECT c##dbv_owner_root
    Enter password: password
    
  7. 次のいずれかのオプションを使用して、Oracle Database Vaultを有効にします。
    • Oracle Database Vaultを有効にして通常モードを使用するには、次のようにします。この場合、PDBでDatabase Vaultを有効にしてPDBを再起動するまで、PDBは制限されたモードになります。

      EXEC DBMS_MACADM.ENABLE_DV (strict_mode => 'n');
    • Oracle Database Vaultを有効にして厳密モードを使用するには、次のようにします。この場合、各PDBでDatabase Vaultが有効になります。

      EXEC DBMS_MACADM.ENABLE_DV (strict_mode => 'y');
  8. SYSOPER管理権限で接続します。
    CONNECT / AS SYSOPER
    
  9. データベースを再起動します。
    SHUTDOWN IMMEDIATE
    STARTUP
    
  10. プライマリDV_OWNERユーザーとして接続してから、前に作成したバックアップDV_OWNERユーザーにDV_OWNERロールを付与します。

    たとえば:

    CONNECT c##dbv_owner_root
    Enter password: password
    
    GRANT DV_OWNER TO c##dbv_owner_root_backup WITH ADMIN OPTION;
    
  11. プライマリDV_ACCTMGRユーザーとして接続してから、DV_ACCTMGRロールをバックアップDV_ACCTMGRユーザーに付与します。

    たとえば:

    CONNECT c##dbv_acctmgr_root
    Enter password: password
    
    GRANT DV_ACCTMGR TO c##dbv_acctmgr_root_backup WITH ADMIN OPTION
    CONTAINER=ALL;
  12. 2つのバックアップ・アカウント・パスワードを、将来必要になる場合に備えて、安全な場所に格納します。

3.2.4 個別PDBを管理するためのDatabase Vault共通ユーザーの登録

マルチテナント環境では、Oracle Database Vaultをまずルートに登録して、後からPDBに登録する必要があります。

先にPDBに登録しようとすると、ORA-47503「Database VaultはCDB$ROOTで有効化されていません。」エラーが表示されます。
  1. マルチテナント環境において、ユーザー作成権限を持ち、CREATE SESSIONおよびSET CONTAINER権限を付与する権限を持つユーザーとして、データベース・インスタンスのルートにログインします。

    たとえば:

    sqlplus c##sec_admin
    Enter password: password
    
  2. まだ作成していない場合は、Database Vaultアカウントとして使用するユーザー・アカウントを作成します。

    これらのアカウントの作成の詳細は、CDBのルートを管理するための共通ユーザーによるDatabase Vaultの登録のステップ2を参照してください。

  3. CDBのルートを管理するための共通ユーザーによるDatabase Vaultの登録で説明されているように、CDBルートでOracle Database Vaultを登録してあることを確認します。
  4. 共通ユーザーにアクセス権限が必要なPDBに接続します。

    たとえば:

    CONNECT c##sec_admin@pdb_name
    Enter password: password
    

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

  5. このPDBのためにユーザーにCREATE SESSION権限およびSET CONTAINER権限を付与します。

    たとえば:

    GRANT CREATE SESSION, SET CONTAINER TO c##dbv_owner_root CONTAINER = CURRENT;
    GRANT CREATE SESSION, SET CONTAINER TO c##dbv_acctmgr_root CONTAINER = CURRENT;
    
  6. SYSDBA管理権限を持つユーザーSYSとして接続します
    CONNECT SYS@pdb_name AS SYSDBA
    Enter password: password
    
  7. PDBにいる間に、2つのプライマリDatabase Vaultユーザー・アカウントを構成します。

    たとえば:

    BEGIN
     CONFIGURE_DV (
       dvowner_uname         => 'c##dbv_owner_root',
       dvacctmgr_uname       => 'c##dbv_acctmgr_root');
     END;
    /
    
  8. utlrp.sqlスクリプトを実行して、このPDBで無効化されたオブジェクトを再コンパイルします。
    @?/rdbms/admin/utlrp.sql
    

    スクリプトから指示がある場合はそれに従い、再びスクリプトを実行します。指示がなくスクリプトが異常終了した場合は、再びスクリプトを実行します。

  9. 先ほど構成したプライマリDatabase Vault所有者ユーザーとして、PDBに接続します。

    たとえば:

    CONNECT c##dbv_owner_root@pdb_name
    Enter password: password
    
  10. このPDBでOracle Database Vaultを有効にします。
    EXEC DBMS_MACADM.ENABLE_DV;
    
  11. SYSDBA管理権限でCDBに接続します。
    CONNECT / AS SYSDBA
    
  12. PDBを閉じてから、再度開きます。

    たとえば:

    ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
    ALTER PLUGGABLE DATABASE pdb_name OPEN;
    

3.2.5 プラグインされたDatabese Vault PDB用の共通Database Vaultアカウント作成

マルチテナント環境では、SQL*Plusから、すでにDatabase Vaultが有効になっているデータベースに接続できます。

このシナリオでは、接続されるデータベースには、独自のローカルDatabase Vaultアカウントがあります。Database Vault対応データベースをDatabase Vaultが有効になっていないCDBに接続する場合は、CDBでDatabase Vaultを有効にしてCDBを再起動するまで、PDBは制限されたモードのままになるということを知っておいてください。Database Vaultが有効になっていないPDBをDatabase Vaultが有効になっているCDBに接続する場合は、PDBでDatabase Vaultを有効にしてPDBを再起動するまで、PDBは制限されたモードのままになります。それでも、この接続したDatabase Vault無効のPDBは使用可能です。ただし、このCDBでDatabase Vaultが厳密オプションで有効になっている場合、このPDBでDatabase Vaultを有効にする必要があります。

このPDBのDatabase Vault構成を管理するための共通ユーザーを有効化するには:

  1. ローカル・プライマリDatabase Vault所有者として、PDBにログインします。

    たとえば:

    sqlplus dbv_owner@pdb_name
    Enter password: password
    

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

  2. 共通Database Vault DV_OWNERユーザーに、CREATE SESSION権限とSET CONTAINER権限、および適切なDatabase Vaultロールを付与します。

    次のアカウントは、プライマリおよびバックアップ・アカウントになります。

    GRANT CREATE SESSION, SET CONTAINER, DV_OWNER TO c##dbv_owner_root;
    GRANT CREATE SESSION, SET CONTAINER, DV_OWNER TO c##dbv_owner_root_backup WITH ADMIN OPTION;
    
  3. DV_ACCTMGRロールを付与されているユーザーとして接続します。
  4. DV_ACCTMGR共通アカウントを作成します。
    GRANT CREATE SESSION, SET CONTAINER, DV_ACCTMGR TO c##dbv_acctmgr_root;
    GRANT CREATE SESSION, SET CONTAINER, DV_ACCTMGR TO c##dbv_acctmgr_root_backup WITH ADMIN OPTION;

3.2.6 DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成

プロファイルは、DV_OWNERおよびDV_ACCTMGRロールを付与されたユーザーに追加の保護を提供します。

DV_OWNERまたはDV_ACCTMGRロールを付与されたデータベース・ユーザーは、クリティカルな特権アカウントとみなされます。通常、これらのアカウントはサービス・アカウントとみなしてパスワードのロックアウト要件が適用されないようにする必要があります。Oracleでは、アカウントがロックされないカスタム・プロファイルを作成することをお薦めします。また、これらのDatabase Vault関連のアカウントの失敗したログイン試行の監査も必要です。
  1. CREATE PROFILEシステム権限を持つユーザーとして、データベース・インスタンスにログインします。
    • ルートの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合: データベース・インスタンスのルートにログインします。
    • PDBの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合: ユーザーを作成したPDBにログインします。
    • 非マルチテナント環境の場合: データベース・インスタンスにログインします。
  2. 次のようなプロファイルを作成します。
    • ルートの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合: ルートで、次のようなプロファイルを作成します。
      CREATE PROFILE c##dv_profile limit
      FAILED_LOGIN_ATTEMPTS UNLIMITED
      PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION
      PASSWORD_LOCK_TIME UNLIMITED
      CONTAINER=ALL;
    • PDBの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合: PDBで、次のようなプロファイルを作成します。
      CREATE PROFILE dv_profile limit
      FAILED_LOGIN_ATTEMPTS UNLIMITED
      PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION
      PASSWORD_LOCK_TIME UNLIMITED
      CONTAINER=CURRENT;
    • 非マルチテナント環境の場合: 次のようなプロファイルを作成します。
      CREATE PROFILE dv_profile limit
      FAILED_LOGIN_ATTEMPTS UNLIMITED
      PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION
      PASSWORD_LOCK_TIME UNLIMITED;
  3. このプロファイルを使用するために、DV_OWNERおよびDV_ACCTMGRユーザー・アカウントを更新します。
    • ルートの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合:
      ALTER USER c##sec_admin_owen PROFILE c##dv_profile CONTAINER=ALL;
      ALTER USER c##dbv_owner_root_backup PROFILE c##dv_profile CONTAINER=ALL;
      ALTER USER c##accts_admin_ace PROFILE c##dv_profile CONTAINER=ALL;
      ALTER USER c##dbv_acctmgr_root_backup PROFILE c##dv_profile CONTAINER=ALL;
    • PDBの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合:
      ALTER USER sec_admin_owen PROFILE dv_profile CONTAINER=CURRENT;
      ALTER USER dbv_owner_backup PROFILE dv_profile CONTAINER=CURRENT;
      ALTER USER accts_admin_ace PROFILE dv_profile CONTAINER=CURRENT;
      ALTER USER dbv_acctmgr_backup PROFILE dv_profile CONTAINER=CURRENT;
    • 非マルチテナント環境の場合:
      ALTER USER sec_admin_owen PROFILE dv_profile;
      ALTER USER dbv_owner_backup PROFILE dv_profile;
      ALTER USER accts_admin_ace PROFILE dv_profile;
      ALTER USER dbv_acctmgr_backup PROFILE dv_profile;
  4. AUDIT_ADMINロールを付与されたユーザーとして接続します。
  5. 統合監査ポリシーを作成して有効化し、DV_OWNERまたはDV_ACCTMGRロールを付与されたユーザーによる失敗したログインを追跡します。
    • ルートの共通DV_OWNERおよびDV_ACCTMGRユーザーの場合: ルートで、次のようなポリシーを作成します。
      CREATE AUDIT POLICY c##dv_logins ACTIONS LOGON;
      AUDIT POLICY c##dv_logins BY USERS WITH GRANTED ROLES DV_OWNER, DV_ACCTMGR WHENEVER NOT SUCCESSFUL;
    • PDBの共通DV_OWNERおよびDV_ACCTMGRユーザー、または非マルチテナント環境の場合、次のようなポリシーを作成します。
      CREATE AUDIT POLICY dv_logins ACTIONS LOGON;
      AUDIT POLICY dv_logins BY USERS WITH GRANTED ROLES DV_OWNER, DV_ACCTMGR WHENEVER NOT SUCCESSFUL;

3.2.7 Database Vaultが構成および有効化されていることの確認

DBA_DV_STATUSCDB_DV_STATUSDBA_OLS_STATUSおよびCDB_OLS_STATUSデータ・ディクショナリ・ビューは、Oracle Databaseが構成され有効になっているかどうかを確認します。

Oracle Database Vault管理者の他に、Oracle Database SYSユーザー、およびDBAロールを付与されているユーザーが、これらのビューを問合せできます。
  • Database Vaultの場合:

    • 非マルチテナント・データベースのために、またはマルチテナント環境でルートのみか個々のPDBのためにDatabase Vaultステータスを確認する場合は、DBA_DV_STATUSを問い合せます。たとえば:

      SELECT * FROM DBA_DV_STATUS;

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

      NAME                 STATUS
      -------------------- -----------
      DV_CONFIGURE_STATUS  TRUE
      DV_ENABLE_STATUS     TRUE
    • 管理権限がある共通ユーザーとして、マルチテナント環境ですべてのPDBのDatabase Vaultステータスを確認する場合は、コンテナID (CON_ID)フィールドの追加を提供する、CDB_DV_STATUSを問い合せます。

  • Oracle Label Securityの場合は、次のデータ・ディクショナリ・ビューを問い合せます。これらは、Database Vaultのそれらに相当するビューに似ています。

    • DBA_OLS_STATUS

    • CDB_OLS_STATUS

3.3 Oracle Database Vaultへのログイン

Oracle Enterprise Manager Cloud Control (Cloud Control)には、Oracle Database Vault用のページが用意されています。

Oracle Database Vaultページを使用して、Database Vaultで保護されたデータベースを一元的なコンソールから管理および監視できます。このコンソールでは、アラートの自動化、Database Vaultレポートの表示、およびDatabase Vaultで保護されたその他のデータベースへのDatabase Vaultポリシーの伝播が可能です。
ログインする前に、Oracle Enterprise Managerのオンライン・ヘルプに従って、Database Vaultとともに使用するCloud Controlターゲット・データベースを構成していることを確認してください。「Oracle DatabaseへのOracle Database Vaultの登録の概要」の説明を使用して、Oracle Database Vaultも、Oracle Databaseに登録する必要があります。
  1. Cloud Controlを起動します。

    たとえば:

    https://myserver.example.com:7799/em
    
  2. セキュリティ管理者としてCloud Controlにログインします。
  3. Cloud Controlのホーム・ページで、「ターゲット」メニューから「データベース」を選択します。
  4. 「データベース」ページで、接続先のOracle Database Vaultで保護されているデータベースのリンクを選択します。

    データベースのホームページが表示されます。

  5. 「セキュリティ」メニューから、「Database Vault」を選択します。

    「データベース・ログイン」ページが表示されます。

  6. 次の情報を入力します。
    • ユーザー名: 適切なOracle Database Vaultロールを付与されているユーザーの名前を入力します。

      • Database Vaultポリシーの作成および伝播: DV_OWNERまたはDV_ADMINロール、SELECT ANY DICTIONARY権限

      • Database Vaultアラートおよびレポートの表示: DV_OWNERDV_ADMINまたはDV_SECANALYSTロール、SELECT ANY DICTIONARY権限

    • パスワード: パスワードを入力します。

    • ロール: リストから「通常」を選択します。

    • 別名保存: 次回このページが表示されるときに、これらの資格証明が自動入力されているようにするには、このチェック・ボックスを選択します。資格証明は、Enterprise Managerに安全な方法で格納されます。これらの資格証明へのアクセスは、現在ログインしているユーザーによって異なります。

    Database Vaultホームページが表示されます。


    em_dv_home_page.pngの説明が続きます
    図em_dv_home_page.pngの説明

3.4 クイック・スタート・チュートリアル: DBAアクセスからのスキーマの保護

このチュートリアルでは、HRスキーマの周辺でレルムを作成する方法を示します。

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

このチュートリアルでは、Oracle Database Vault PL/SQLパッケージを使用することで、HRサンプル・データベース・スキーマの周辺でレルムを作成します。

HRスキーマのEMPLOYEES表には、管理権限を使用したアクセスも含め、企業内のほとんどの社員に公開しない給与などの情報が含まれています。これを実現するには、HRスキーマをデータベース内の保護ゾーン(Oracle Database Vaultではレルムと呼ぶ)のセキュア・オブジェクトに追加します。そして、このレルムに制限付きの認可を付与します。その後、レルムをテストして適切に保護されていることを確認します。最後に、レポートを実行し、レルムをテストする際に試行するような疑わしいアクティビティの監査証跡をOracle Database Vaultがどのように作成するかを確認します。

3.4.2 ステップ1: SYSTEMとしてログインしHRスキーマにアクセスする

このチュートリアル用にHRスキーマを有効にする必要があります。

このチュートリアルを開始する前に、HRサンプル・スキーマがインストールされていることを確認してください。Oracle Databaseサンプル・スキーマは、サンプル・スキーマのインストール方法を説明しています。
  1. DBAロールを付与されたユーザーとしてデータベース・インスタンスにログインしてから、HRスキーマにアクセスします。

    たとえば:

    sqlplus system
    Enter password: password
    
  2. マルチテナント環境で、適切なPDBに接続します。

    たとえば:

    CONNECT SYSTEM@my_pdb
    Enter password: password
    

    利用可能なPDBを確認するには、CDBで、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

  3. HR.EMPLOYEES表に次のように問い合せます。
    SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM < 10;
    

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

    FIRST_NAME           LAST_NAME                     SALARY
    -------------------- ------------------------- ----------
    Steven               King                           24000
    Neena                Kochhar                        17000
    Lex                  De Haan                        17000
    Alexander            Hunold                          9000
    Bruce                Ernst                           6000
    David                Austin                          4800
    Valli                Pataballa                       4800
    Diana                Lorentz                         4200
    Nancy                Greenberg                      12008
    
    9 rows selected.
    
  4. HRスキーマがロックされて無効になっている場合は、DV_ACCTMGRユーザーとしてデータベース・インスタンスにログインし、アカウントをロック解除して有効にします。たとえば:
    sqlplus bea_dvacctmgr -- For a multitenant environment, sqlplus bea_dvacctmgr@hrpdb
    Enter password: password
    
    ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY password
    

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

    この例からわかるように、SYSTEMにはHRスキーマのEMPLOYEES表の給与情報へのアクセス権があります。SYSTEMには、SELECT ANY TABLEシステム権限を含むDBAロールが自動的に付与されるためです。

  5. SQL*Plusを終了しないでください。

3.4.3 ステップ2: レルムの作成

レルムでは、1つ以上のスキーマ、個々のスキーマ・オブジェクトおよびデータベース・ロールを保護できます。

レルムを作成したら、レルム内のスキーマやスキーマ・オブジェクトに適用するセキュリティ制限を作成します。HRスキーマにレルムを作成する必要があります。
  1. DV_OWNERまたはDV_ADMINロールおよびSELECT ANY DICTIONARY権限を付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。ログイン方法については、「Oracle Database Vaultへのログイン」で説明します。
  2. 「管理」ページの「Database Vaultコンポーネント」で、「レルム」をクリックします。
  3. Oracle Database Vault Administratorの「レルム」ページで、「作成」をクリックします。
  4. 「レルムの作成」ページの「一般」で、「名前」の後にHR Appsと入力します。
  5. 「説明」フィールドに、Realm to protect the HR schemaと入力します。
  6. 「必須レルム」チェック・ボックスの選択を解除したままにします。
  7. 「ステータス」に「有効」が選択されていて、そのレルムが使用可能になっていることを確認します。
  8. 「監査オプション」で、「失敗時に監査」が選択されていて、後から監査証跡を作成できることを確認します。
  9. 「次へ」をクリックして、「レルム・セキュア・オブジェクト」ページを表示します。
  10. 「追加」ボタンをクリックして、「セキュア・オブジェクトの追加」ダイアログ・ボックスで次の情報を入力します。
    • 所有者: HRと入力してHRスキーマを選択します。

    • オブジェクト・タイプ: TABLEと入力します。

    • オブジェクト名: EMPLOYEESと入力します。

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

    HR.EMPLOYEES表は、「レルムの作成 : レルム・セキュア・オブジェクト」ページに追加されます。

  12. 「完了」「終了」の順にクリックします。

この段階で、レルムが作成されていますが、それに対する認可は割り当てられていません。このチュートリアルで後ほど対応します。

3.4.4 ステップ3: SEBASTIANユーザー・アカウントの作成

この時点では、レルムが保護するデータベース・オブジェクトにアクセスする、またはそれらを操作するデータベース・アカウントもロールもありません。

そのため、このステップでデータベース・アカウントまたはデータベース・ロールを認可し、レルム内のスキーマにアクセスできるようにします。SEBASTIANユーザー・アカウントを作成します。

  1. DV_ACCTMGRロールを持つDatabase Vaultアカウント・マネージャとしてSQL*Plusに接続し、ローカル・ユーザーSEBASTIANを作成します。

    たとえば:

    CONNECT bea_dvacctmgr -- Or, CONNECT bea_dvacctmgr@hrpdb
    Enter password: password
    
    GRANT CREATE SESSION TO SEBASTIAN IDENTIFIED BY password;
    

    passwordを安全なパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  2. SYSDBA権限を持つSYSとして接続し、SEBASTIANに次の追加権限を付与します。
    CONNECT SYS AS SYSDBA -- Or, CONNECT SYS@hrpdb AS SYSDBA
    Enter password: password
    
    GRANT READ ANY TABLE TO SEBASTIAN;
    

(「ステップ6: レルムのテスト」でレルムをテストする際に必要なため、SQL*Plusを終了しないでください。)

3.4.5 ステップ4: ユーザーSEBASTIANによるレルムのテスト

この段階では、ユーザーSEBASTIANに、READ ANY TABLEシステム権限があるとしてもレルムをテストさせます。

  1. ユーザーSEBASTIANとして接続します。
    CONNECT sebastian
    Enter password: password
  2. HR.EMPLOYEES表を問い合せます。
    SELECT COUNT(*) FROM HR.EMPLOYEES;

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

    ERROR at line 1:
    ORA-01031: insufficient privileges
    
ユーザーSEBASTIANREAD ANY TABLEシステム権限がありますが、HR.EMPLOYEES表を問合せできません。これは、HR AppsレルムがREAD ANY TABLEシステム権限よりも優先されるためです。

3.4.6 ステップ5: レルムの認可の作成

次に、HR.EMPLOYEES表にアクセスできるよう、ユーザーSEBASTIANにHR Appsレルムへの認可を与える必要があります。

  1. Database Vault Administratorの「レルム」ページで、レルムのリストから「HR Apps」を選択し、「編集」をクリックします。
  2. 「レルム認可」ページになるまで、「次へ」ボタンをクリックします。
  3. 「追加」をクリックし、「認可の追加」ダイアログ・ボックスに次の情報を入力します。
    • レルム認可の権限受領者: SEBASTIANと入力します。

    • レルム認可タイプ: リストから「参加者」を選択します。

    • レルム認可ルールセット: このフィールドは空白のままにします。

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

    「参加者」認可により、HR Appsレルム内のユーザーSEBASTIANは、HR Appsレルムで保護されるオブジェクトのアクセス、操作および作成を管理できるようになります。この場合、EMPLOYEES表の表示を許可されているのは、HRユーザーおよびSEBASTIANのみです。

  5. 「完了」「終了」の順にクリックします。

3.4.7 ステップ6: レルムのテスト

レルムをテストするには、HR以外のユーザーとしてEMPLOYEES表にアクセスを試みる必要があります。

通常、SYSTEMアカウントにはHRスキーマのすべてのオブジェクトに対するアクセス権がありますが、この場合はOracle Database Vaultを使用してEMPLOYEES表を保護しているため、アクセス権はありません。

  1. SQL*Plusで、SYSTEMとして接続します。

    CONNECT SYSTEM -- Or, CONNECT SYSTEM@hrpdb
    Enter password: password
    
  2. もう一度、EMPLOYEES表内の給与情報へのアクセスを試みます。

    SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM <10;
    

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

    Error at line 1:
    ORA-01031: insufficient privileges
    

    SYSTEMにはEMPLOYEES表の給与情報へのアクセス権はなくなります。(実際に、ユーザーSYSでもこの表にはアクセスできません。)しかし、ユーザーSEBASTIANには、この情報へのアクセス権があります。

  3. ユーザーSEBASTIANとして接続します。

    CONNECT sebastian -- Or, CONNECT sebastian@hrpdb
    Enter password: password
    
  4. 次の問合せを実行します。

    SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM <10;
    

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

    FIRST_NAME           LAST_NAME                     SALARY
    -------------------- ------------------------- ----------
    Steven               King                           24000
    Neena                Kochhar                        17000
    Lex                  De Haan                        17000
    Alexander            Hunold                          9000
    Bruce                Ernst                           6000
    David                Austin                          4800
    Valli                Pataballa                       4800
    Diana                Lorentz                         4200
    Nancy                Greenberg                      12008
    
    9 rows selected.

3.4.8 ステップ7: 統合監査が有効ではない場合のレポートの実行

HR Appsレルムの失敗時の監査を有効にしたため、レポートを生成してセキュリティ違反を検出できます。

たとえば、「ステップ6: レルムのテスト」で試行した違反のレポートを生成できます。

  1. ユーザーSYSTEMとしてSQL*Plusに接続し、統合監査が有効ではないことを確認します。
    CONNECT SYSTEM -- Or, CONNECT SYSTEM@hrpdb
    Enter password: password
    
    SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
    

    VALUETRUEを戻す場合、この項を完了できません。「ステップ8: このチュートリアルのコンポーネントの削除」に進みます。

    統合監査が有効な場合、イベントを取得する統合監査ポリシーを作成する必要があります。Oracle Database Vaultの統合監査ポリシーの作成方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  2. 「Database Vault Administrator」ページで、「ホーム」をクリックしてホーム・ページを表示します。
  3. Database Vaultの「ホーム」ページの「レポート」で、「Database Vaultレポート」を選択します。
  4. 「Database Vaultレポート」ページで、「Database Vault強制監査レポート」を選択します。
  5. Database Vault監査レポートリストで、「レルム監査レポート」を選択します。
  6. 「検索」領域で、「コマンド」メニューから「等しい」を選択し、テキスト・フィールドにSELECTと入力します。次に「検索」をクリックします。

    「検索」リージョンの後の表にレポートが表示されます。

  7. 「OK」をクリックしてレポートを終了します。

Oracle Database Vaultにより、違反の種類(この場合は前の項目で入力したSELECT文)、発生した時間と場所、違反を試みたユーザーのログイン・アカウント、および違反の内容などを示すレポートが生成されます。

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

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

  1. ユーザーSEBASTIANを削除します。

    SQL*Plusで、次のようにOracle Database Vaultアカウント・マネージャ(たとえばbea_dvacctmgr)としてログインし、SEBASTIANを削除します。

    sqlplus bea_dvacctmgr -- Or, CONNECT bea_dvacctmgr@hrpdb
    Enter password: password
    
    DROP USER SEBASTIAN;
    
  2. HR Appsレルムを削除します。

    1. Cloud Controlで、DV_OWNERロールがあるユーザーとしてログインしていることを確認します。

    2. Database Vaultの「ホーム」ページで、「管理」をクリックします。

    3. 「レルム」ページで、レルムのリストからHR Appsを選択します。

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

  3. 必要な場合は、SQL*Plusで、HRアカウントをロックし、無効にします。

    ALTER USER HR ACCOUNT LOCK PASSWORD EXPIRE;