12 Database Vault操作の制御
Oracle Database Vault操作の制御により、共通ユーザーがプラガブル・データベース内のアプリケーション・データにアクセスするのを防ぎます。
Oracle Database Vault操作の制御(ops制御と略されます)は、Oracle Database 19cで導入されました。ops制御を使用すると、コンテナ・ユーザー(SYS
、SYSTEM
、C##
ユーザーなど)を、Oracle Multitenantプラガブル・データベース(PDB)に格納されている顧客またはアプリケーション・データから分離できます。
ops制御はコンテナ・データベース(CDB$ROOT
)から構成され、有効にすると、CDBに関連付けられているすべてのPDBに適用されます。特定のコンテナ・ユーザーを除外するか、特定のPDBを除外することにより、ops制御を選択的に無効にできます。ただし、ユーザーがops制御から除外された場合、その権限を使用してPDB内のデータにアクセスできます。PDBが除外されると、適切な権限を持つすべての共通ユーザーは、それらの権限を使用してPDB内のデータにアクセスできます。
- 操作の制御の構成および有効化
操作の制御を有効にするには、コンテナ・データベースまたはアプリケーション・コンテナ・ルートでOracle Database Vaultを構成および有効化する必要があります。 - Oracle Database Vault操作の制御からのコンテナ・ユーザーの除外
コンテナ・ユーザーは、操作の制御から除外でき、その権限を使用してプラガブル・データベース内のデータにアクセスできます。 - コンテナ・ユーザーの除外アクセスの無効化
共通ユーザーが操作の制御から除外されないようにするには、DELETE_APP_EXCEPTION
プロシージャを実行します。 - 特定のプラガブル・データベースに対する操作の制御の無効化
特定のPDBに対して操作の制御を無効にできます。 - Database Vault操作の制御の無効化
すべてのプラガブル・データベースに対して操作の制御を無効にするには、DISABLE_APP_PROTECTION
プロシージャを実行します。 - 操作の制御環境でのDBA操作
操作の制御環境でのデータベース管理者操作への影響はわずかです。
12.1 操作の制御の構成および有効化
操作の制御を有効にするには、コンテナ・データベースまたはアプリケーション・コンテナ・ルートでOracle Database Vaultを構成および有効化する必要があります。
前提条件
- コンテナ・ルート・データベースでOracle Database Vaultを構成して有効化します。
「CDBルートでのDatabase Vaultの構成および有効化」のステップに従って、Database Vaultを構成して有効化します。
- プラガブル・データベースで管理アクションを実行できるPDBデータベース・ユーザーがいることを確認します。管理アクションは次のとおりです(ただし、これに限定されません):
GRANT
、REVOKE CREATE SESSION
またはCONNECT
ロールDBA
ロールのGRANT
またはREVOKE
CREATE
、ALTER USER
またはDROP USER
システム権限CREATE
、ALTER
またはDROP TABLESPACE
システム権限DATAPUMP_EXP_FULL_DATABASE
またはDATAPUMP_IMP_FULL_DATABASE
ロールの使用GATHER_SYSTEM_STATISTICS
ロールの使用-
SELECT_CATALOG_ROLE
ロールの使用
ノート:
操作の制御を有効にすると、SYS
およびSYSTEM
は共通データベース・ユーザーとみなされ、PDBでCREATE
、ALTER USER
またはDROP USER
操作を実行できません。操作の制御を有効にする前に、データベース・ユーザーとその権限を構成することが重要です。
操作の制御の有効化
コンテナ・ルートから、DV_OWNER
ロールを持つユーザーとして次のプロシージャを実行します:
exec dbms_macadm.enable_app_protection;
コマンドが正常に完了すると、コンテナおよびプラガブル・データベースで操作の制御が構成および有効化されます。
DV_OWNER
ロールを持つユーザーとして次のプロシージャを実行します:
exec dbms_macadm.enable_app_protection(<pdb_name>);
操作の制御を有効にするためにデータベースの再起動は必要ありません。
親トピック: Database Vault操作の制御
12.2 コンテナ・ユーザーのOracle Database Vault操作の制御からの除外
コンテナ・ユーザーは、操作の制御から除外でき、その権限を使用してプラガブル・データベース内のデータにアクセスできます。
特定のコンテナ・ユーザーを操作の制御から除外するには、CDBルートでDV_OWNER
ロールまたはDV_ADMIN
ロールを持つユーザーとして次のコマンドを実行します:
exec DBMS_MACADM.ADD_APP_EXCEPTION ('C##COMMON_USER','%');
前述のコマンドを使用すると、共通ユーザーは、コンテナ・データベースに関連付けられているすべてのプラガブル・データベースでその権限を使用できます。
ノート:
除外ユーザーが実行したアクションでは、操作の制御によって防止されるすべてのアクションに対して、監査レコードが自動的に生成されます。これは必須の監査であるため、無効にできません。DV_OWNER
ロールまたはDV_ADMIN
ロールを持つユーザーとして次のコマンドを実行します:select * from DBA_DV_APP_EXCEPTION;
親トピック: Database Vault操作の制御
12.3 コンテナ・ユーザーの除外アクセスの無効化
共通ユーザーが操作の制御から除外されないようにするには、DELETE_APP_EXCEPTION
プロシージャを実行します。
DV_OWNER
ロールまたはDV_ADMIN
ロールを持つユーザーとして、CDBルートで次のコマンドを実行し、除外リストから共通ユーザーを削除します:exec DBMS_MACADM.DELETE_APP_EXCEPTION ('C##COMMON_USER','%');
DV_OWNER
ロールまたはDV_ADMIN
ロールを持つユーザーとして次のコマンドを実行します:select * from DBA_DV_APP_EXCEPTION;
親トピック: Database Vault操作の制御
12.4 特定のプラガブル・データベースに対する操作の制御の無効化
特定のPDBに対して操作の制御を無効にできます。
DV_OWNER
ロールを持つユーザーとして次のコマンドを実行する必要があります:exec dbms_macadm.disable_app_protection('<pdb_name>');
SYSDBA
として次のコマンドを実行します:select * from cdb_dv_status order by con_id;
親トピック: Database Vault操作の制御
12.5 Database Vault操作の制御の無効化
すべてのプラガブル・データベースに対して操作の制御を無効にするには、DISABLE_APP_PROTECTION
プロシージャを実行します。
DV_OWNER
ロールを持つユーザーとして、コンテナから次のコマンドを実行します: exec dbms_macadm.disable_app_protection;
SYSDBA
ユーザーとして、コンテナから次のコマンドを実行します。
select * from cdb_dv_status order by con_id;
ops制御が無効である場合は、列DV_APP_PROTECTION
にFALSE
が表示されます。
親トピック: Database Vault操作の制御
12.6 操作の制御環境でのDBA操作
操作の制御環境でのデータベース管理者操作への影響はわずかです。
- プラガブル・データベースでの操作
- プラガブル・データベースでのDatabase Vaultロールおよびデータベース・アカウントの使用
プラガブル・データベースでのDatabase Vaultの管理には、共通のDatabase Vaultロールおよびデータベース・アカウントを使用できません。 - DDL操作の実行
Oracle Database Vault操作の制御の共通ユーザーによるデータ定義言語(DDL)操作は、Oracleが所有および保守するスキーマに制限されます。 - Oracle Database VaultのOracle Enterprise Managerとの使用
- Database Vault操作の制御を使用したRMAN操作
Oracle Database Vault操作の制御では、RMANの完全リストアまたは複製がサポートされます。ただし、個々のオブジェクトのリカバリに関連するRMAN操作はサポートされません。Oracle Database Vaultでは、オブジェクトに変更が発生しているユーザーや理由を特定できず、操作の制御によって保護します。 - 操作の制御によって保護されるプラガブル・データベースでのデータ・ポンプ操作
共通ユーザーは、PDB固有データのOracle Data Pumpメタデータ・エクスポートのみを実行できます。 - 操作の制御によって保護されるPDBでのデータベース・スケジューラ・ジョブ
Oracle Databaseスケジューラ・ジョブは、共通ユーザー・オブジェクトの共通ユーザーが管理できますが、ローカルPDBユーザー・オブジェクトの共通ユーザーは管理できません。 - 操作の制御によって保護されるPDBでのOracleプロキシ認証
- 操作の制御によって保護されるPDBでのOracle GoldenGate
Oracle GoldenGateは、プラガブル・データベースが操作の制御によって保護されている場合に使用できます。
親トピック: Database Vault操作の制御
12.6.1 プラガブル・データベースでの操作
プラガブル・データベースには影響するが、アプリケーション・データには影響しないアクションは、通常、操作の制御環境で許容されます。
たとえば、操作の制御が有効になっているデータベースで、次の操作を実行できます:
- PDBのオープンまたはクローズ
- 同じコンテナ・データベースへの既存のPDBのクローニング
- PDBの切断
- 切断されたPDBの接続
- アプリケーション・オブジェクトに関するオプティマイザ統計の収集
- アプリケーション・オブジェクトに関連付けられたメタデータのデータ・ポンプ・エクスポートの実行
ノート:
Database Vaultを有効にせずに、操作の制御によって保護されているPDBをCDBに接続しようとすると、プラグイン違反が発生します。操作の制御によって保護されているPDBを接続する前に、受け取り側のCDBでDatabase Vaultおよび操作の制御を構成して有効化にする必要があります。親トピック: 操作の制御環境でのDBA操作
12.6.2 プラガブル・データベースでのDatabase Vaultロールおよびデータベース・アカウントの使用
プラガブル・データベースでのDatabase Vaultの管理には、共通のDatabase Vaultロールおよびデータベース・アカウントを使用できません。
ローカル・アカウントを作成し、適切なロールと権限を付与する必要があります。
C##DVACCTMGR
を使用してPDBにユーザーを作成できません:connect c##dvacctmgr@pdb1
create user testuser identified by Oracle123;
*
ERROR at line 1:
ORA-01031: insufficient privileges
PDBでDatabase Vaultが有効になっていない場合、PDBでDV関連のロールまたはユーザーを使用する理由はありません。かわりに、適切なシステム権限またはオブジェクト権限を付与されているPDBデータベース・ユーザーを使用します。たとえば:
connect dba_debra@pdb1
create user testuser identified by Oracle123;
User created.
親トピック: 操作の制御環境でのDBA操作
12.6.3 DDL操作の実行
Oracle Database Vault操作の制御の共通ユーザーによるデータ定義言語(DDL)操作は、Oracleが所有および保守するスキーマに制限されます。
PDB固有のオブジェクト(HR表など)でのDDLは、適切な権限を持つPDBデータベース・ユーザーに制限されます。たとえば、C##
、SYS
またはSYSTEM
ユーザーとして次のコマンドを実行すると、ORA-01031: 権限が不十分です
というエラー・メッセージが表示されます:
ALTER TABLE HR.EMPLOYEES ADD NEW_COLUMN VARCHAR2(20);
かわりに、適切な権限を持つPDBデータベース・ユーザーとしてアクションを実行します。
connect dba_debra@pdb1
ALTER TABLE HR.EMPLOYEES ADD NEW_COLUMN VARCHAR2(20);
親トピック: 操作の制御環境でのDBA操作
12.6.4 Oracle Database VaultのOracle Enterprise Managerとの使用
Oracle Database Vault操作の制御では、Oracle Enterprise Manager Cloud Controlタスクを予測どおりに実行できます。プラガブル・データベースに対するアクションは、PDBデータベース・アカウントを使用して実行する必要があります。PDBで操作の制御が有効な場合は、SYS
、SYSTEM
またはその他の共通(C##
)アカウントを使用しないでください。
親トピック: 操作の制御環境でのDBA操作
12.6.5 Database Vault操作の制御を使用したRMAN操作
Oracle Database Vault操作の制御では、RMANの完全リストアまたは複製がサポートされます。ただし、個々のオブジェクトのリカバリに関連するRMAN操作はサポートされません。Oracle Database Vaultでは、オブジェクトに変更が発生しているユーザーや理由を特定できず、操作の制御によって保護します。
個々のオブジェクト(HRスキーマ内の表など)をリストアまたはリカバリするには、このオブジェクトの手動リカバリを実行する必要があります。オブジェクトのリカバリが必要な時点までデータベースのクローンをインスタンス化し、スキーマ・アカウントまたはPDBのローカル・ユーザーを使用してオブジェクトのデータ・ポンプ・エクスポートを実行し、再度スキーマ・アカウントまたはPDBのローカル・ユーザーを使用してオブジェクトのデータ・ポンプ・インポートを実行します。
親トピック: 操作の制御環境でのDBA操作
12.6.6 操作の制御によって保護されるプラガブル・データベースでのデータ・ポンプ操作
共通ユーザーは、PDB固有データのOracle Data Pumpメタデータ・エクスポートのみを実行できます。
PDBデータベース・ユーザーを使用して、PDB固有オブジェクトのOracle Data Pumpエクスポートまたはインポート操作を実行することをお薦めします。
SYSTEM
)を使用してHRスキーマからメタデータのみをエクスポートするため、成功します:expdp system@pdb1 content=metadata_only directory=DATA_PUMP_DIR schemas=HR dumpfile=hr_metadata.dmp logfile=hr_metadata.log
SYSTEM
)を使用してHRスキーマからメタデータと実際のデータの両方をエクスポートするため、成功しません:expdp system@pdb1 content=all directory=DATA_PUMP_DIR schemas=HR dumpfile=hr_all.dmp logfile=hr_all.log
親トピック: 操作の制御環境でのDBA操作
12.6.7 操作の制御によって保護されるPDBでのデータベース・スケジューラ・ジョブ
Oracle Databaseスケジューラ・ジョブは、共通ユーザー・オブジェクトの共通ユーザーが管理できますが、ローカルPDBユーザー・オブジェクトの共通ユーザーは管理できません。
適切な権限を持つローカルPDBユーザーを使用して、PDB固有オブジェクトでOracle Databaseスケジューラ・ジョブを管理する必要があります。
親トピック: 操作の制御環境でのDBA操作
12.6.8 操作の制御によって保護されるPDBでのOracleプロキシ認証
connect dba_debra[hr]@pdb1
connect c##common_user[hr]@pdb1
親トピック: 操作の制御環境でのDBA操作
12.6.9 操作の制御によって保護されるPDBでのOracle GoldenGate
Oracle GoldenGateは、プラガブル・データベースが操作の制御によって保護される場合に使用できます。
Oracle Database Vault操作の制御は、Oracle GoldenGateとともに使用できます。
DV_OWNER
ロールを持つユーザーとして次のロール付与および認可を実行します:GRANT DV_STREAMS_ADMIN to c##ggadmin container=all;
GRANT DV_XSTREAM_ADMIN to c##ggadmin container=all;
GRANT DV_GOLDENGATE_ADMIN TO c##ggadmin container=all;
GRANT DV_GOLDENGATE_REDO_ACCESS TO c##ggadmin container=all;
EXEC DBMS_MACADM.AUTHORIZE_DDL('SYS', 'SYSTEM');
EXEC DBMS_MACADM.AUTHORIZE_DDL('SYS', '%');
操作の制御はプラガブル・データベース内のローカル・ユーザーに影響しないため、PDBのOracle GoldenGate管理者はローカル・データベース・ユーザーである必要があります。
親トピック: 操作の制御環境でのDBA操作