2 Oracle Database Vaultの構成および有効化
Oracle Database Vaultを開始するには、これを構成して有効にしてから、Oracle Databaseを再起動する必要があります。Oracleマルチテナント環境では、これをコンテナ・データベース(CDB)で完了してから、各プラガブル・データベース(PDB)で完了します。
Oracleでは、Oracle Database Vault内でキー・ロールを管理するために4つのアカウントを作成することをお薦めします。2つはプライマリ・アカウントで、2つはバックアップ・アカウントです。これらのアカウントのパスワードを安全な場所に保管して、紛失したり忘れたりしないようにします。特に、DV_OWNER
ロールを持つアカウントは最も重要なアカウントになるので、ロックしたり、そのパスワードを紛失したりしないようにします。アカウントをロックするリスクを最小限に抑えるために、Oracleでは、これらの4つのアカウントに割り当てる特定のデータベース・プロファイルを作成することをお薦めします。
2.1 コンテナ・データベースでのDatabase Vaultの構成
次のステップを実行して、コンテナ・データベースでDatabase Vaultを構成します。
- アカウントを作成し、コンテナ・ルートとプラガブル・データベースの両方で権限を付与できるデータベース・ユーザーとして接続します:
connect / as sysdba
- 次の権限を付与します:
GRANT CREATE SESSION, SET CONTAINER TO c##dvowner IDENTIFIED BY <password> CONTAINER = ALL; GRANT CREATE SESSION, SET CONTAINER TO c##dvowner_backup IDENTIFIED BY <password> CONTAINER = ALL; GRANT CREATE SESSION, SET CONTAINER TO c##dvacctmgr IDENTIFIED BY <password> CONTAINER = ALL; GRANT CREATE SESSION, SET CONTAINER TO c##dvacctmgr_backup IDENTIFIED BY <password> CONTAINER = ALL;
- Oracleでは、Oracle Database Vault用に作成したアカウントを永続的にロックしないプロファイルを作成することをお薦めします。これらは要件にあわせて調整できますが、Oracleでは、適切な時間の経過後にアカウントのロックを解除できるように、許容可能な長さに
PASSWORD_LOCK_TIME
プロファイル・パラメータを使用することをお薦めします。この例では、次のパラメータが1分に設定されています:CREATE PROFILE C##DV_PROFILE LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_VERIFY_FUNCTION ora12c_verify_function PASSWORD_LOCK_TIME 1/1440 CONTAINER=ALL;
- 作成したOracle Database Vaultアカウントにプロファイルを割り当てます:
ALTER USER c##dvowner PROFILE c##dv_profile CONTAINER=ALL; ALTER USER c##dvowner_backup PROFILE c##dv_profile CONTAINER=ALL; ALTER USER c##dvacctmgr PROFILE c##dv_profile CONTAINER=ALL; ALTER USER c##dvacctmgr_backup PROFILE c##dv_profile CONTAINER=ALL;
- コンテナ・データベースで構成を実行します:
connect / as sysdba BEGIN CONFIGURE_DV ( dvowner_uname => 'c##dvowner', dvacctmgr_uname => 'c##dvacctmgr', force_local_dvowner => FALSE); END; /
- 無効なオブジェクトを再コンパイルします。このステップは必須ではありませんが、無効なオブジェクトは最小限に抑えることをお薦めします。
@$ORACLE_HOME/rdbms/admin/utlrp.sql
C##DVOWNER
として、Oracle Database Vaultを有効にします:CONNECT c##dvowner EXEC DBMS_MACADM.ENABLE_DV;
- Oracleデータベースを再起動します。Oracle Real Application Clusterの環境にいる場合は、Oracle Real Application Clusterを使用してローリング有効化を実行することで停止時間を最小限に抑えることができますが、単一インスタンス環境では停止時間を取る必要があります。
CONNECT / as sysoper shutdown immediate; startup;
- コンテナ・データベースから、Oracle Database VaultがCDBルートで構成および有効化されていることを確認します:
connect / as sysdba SELECT * FROM DBA_DV_STATUS;
Oracle Database Vault Operations Controlを有効にしていないため、
DV_CONFIGURE_STATUS
とDV_ENABLE_STATUS
の両方にTRUE
が表示され、APP_PROTECTION
にNOT CONFIGURED
が表示されます。例:NAME STATUS ------------------- -------------- DV_CONFIGURE_STATUS TRUE DV_ENABLE_STATUS TRUE DV_APP_PROTECTION NOT CONFIGURED
- バックアップ・アカウントに適切なDatabase Vaultロールを付与します。
たとえば、Oracle Database Vault所有者のバックアップであるユーザーには、
DV_OWNER
ロールがあります:CONNECT c##dvowner GRANT DV_OWNER TO c##dvowner_backup WITH ADMIN OPTION CONTAINER=ALL;
- バックアップ・アカウントに適切なDatabase Vaultロールを付与します。
たとえば、Oracle Database Vaultアカウント・マネージャのバックアップであるユーザーには、
DV_ACCTMGR
ロールがあります:CONNECT c##dvacctmgr GRANT DV_ACCTMGR TO c##dvacctmgr_backup WITH ADMIN OPTION CONTAINER=ALL;
- Database Vault関連のユーザーに適切なロールがあることを確認するには、DBAロールを持つユーザーとしてロール権限ビューを問い合せます:
connect / as sysdba column grantee format a25 column granted_role format a25 select grantee, granted_role, admin_option, common from dba_role_privs where granted_role in ('DV_ACCTMGR','DV_OWNER') order by 1,2,3;
次のような出力が表示されます:GRANTEE GRANTED_ROLE ADMIN_OPTION COMMON ______________________ _______________ _______________ _________ C##DVACCTMGR DV_ACCTMGR YES YES C##DVACCTMGR_BACKUP DV_ACCTMGR YES YES C##DVOWNER DV_OWNER YES YES C##DVOWNER_BACKUP DV_OWNER YES YES
2.2 プラガブル・データベースでのDatabase Vaultの構成
プラガブル・データベースでDatabase Vaultを構成するには、次のステップを実行します。0個以上のプラガブル・データベースでDatabase Vaultを有効にできます。
次の構成では、共通データベース・ユーザーを使用し、それぞれDV_OWNER
ロールとDV_ACCTMGR
ロールを付与します。ただし、これは一般的な構成であり、他の構成もあります。共通ユーザーではなく、プラガブル・データベースにローカルなデータベース・ユーザーを作成および使用できます。様々な構成オプションの詳細は、『Oracle Database Vault管理者ガイド』を参照してください。
- プラガブル・データベースで、
SYSDBA
管理権限を持つユーザーとして構成を実行します:alter session set container=pdb_name; BEGIN CONFIGURE_DV ( dvowner_uname => 'c##dvowner', dvacctmgr_uname => 'c##dvacctmgr'); END; /
- 無効なオブジェクトを再コンパイルします。このステップは必須ではありませんが、無効なオブジェクトは最小限に抑えることをお薦めします。
$ORACLE_HOME/rdbms/admin/utlrp.sql
- 次に、
C##DVOWNER
として、プラガブル・データベースでOracle Database Vaultを有効にします:CONNECT c##dvowner@pdb_name EXEC DBMS_MACADM.ENABLE_DV;
SYSOPER
ロールを持つユーザーとして、Oracleプラガブル・データベースを再起動します。Oracle Real Application Clusterの環境にいる場合は、ローリング有効化を実行して停止時間を最小限に抑えることができますが、単一インスタンス環境では停止時間を取る必要があります。connect / as sysoper ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE pdb_name OPEN;
- すべてのコンテナおよびプラガブル・データベースでOracle Database Vaultのステータスを確認する場合は、コンテナ・データベースから次のコマンドを実行できます。これで、Database Vaultがコンテナ・データベースおよびプラガブル・データベースで有効になりました。
connect / as sysdba SELECT * FROM CDB_DV_STATUS;
次のような出力が表示されます。赤い強調表示された行に注目します。これは、コンテナ・データベースとプラガブル・データベースの両方でOracle Database Vaultが有効になっていることを示しています:NAME STATUS CON_ID ______________________ _________________ _________ DV_CONFIGURE_STATUS TRUE 1 DV_ENABLE_STATUS TRUE 1 DV_APP_PROTECTION NOT CONFIGURED 1 DV_CONFIGURE_STATUS TRUE 3 DV_ENABLE_STATUS TRUE 3 DV_APP_PROTECTION NOT CONFIGURED 3
または、コンテナIDのかわりにコンテナ名を表示する場合は、次の問合せを実行します:SELECT CON_ID_TO_CON_NAME(CON_ID) CON_NAME, NAME, STATUS FROM CDB_DV_STATUS;
次のような出力が表示されます:NAME STATUS CON_ID ______________________ _________________ _________ CDB$ROOT DV_CONFIGURE_STATUS TRUE CDB$ROOT DV_ENABLE_STATUS TRUE CDB$ROOT DV_APP_PROTECTION NOT CONFIGURED pdb_name DV_CONFIGURE_STATUS TRUE pdb_name DV_ENABLE_STATUS TRUE pdb_name DV_APP_PROTECTION NOT CONFIGURED
CON_ID_TO_CON_NAME
ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください