10.5 マルチテナント環境のデータベース・セキュリティ
Oracle Multitenant Isolationは、Oracle Multitenant Architectureで実装されたセキュリティ原則のセットです。オンプレミス・データベースとOracle Cloud Infrastructureの両方で、各テナントのデータとOracle Databaseのすべての側面の全体的なパフォーマンスの整合性をガードするように設計されています。
Oracle Multitenant Isolationは、PDBロックダウン・プロファイル、およびPATH_PREFIX
やPDB_OS_CREDENTIAL
などのPDB初期化オプションによりサポートされます。Oracle JVMでは、Oracle Databaseリリース12c以降でマルチテナント分離がサポートされています。この項では、Oracle JVMで現在サポートされているPDBロックダウン・プロファイル機能およびPDB初期化パラメータについて説明します。
サポートされているPDBロックダウン・プロファイルの機能
機能またはバンドル名 | 説明 |
---|---|
JAVA |
データベース全体でJavaを無効または有効にします。 |
OS_ACCESS (バンドル)
|
Javaからのあらゆる種類のOSアクセスを無効または有効にします。 |
JAVA_RUNTIME |
java.lang.RuntimePermission を必要とするJava操作を無効または有効にします。これにより、クラス・ローダーの作成や取得、セキュリティ・マネージャの置換など、リスクのある操作が無効になります。
|
JAVA_OS_ACCESS |
JVMのファイル操作、およびjava.io.FilePermission タイプのJava権限を付与する機能を無効または有効にします。これにより、基本的に、Javaを使用してファイルにアクセスする機能が無効になります。これは、OS_ACCESS バンドル下の機能です。脚注1
|
NETWORK_ACCESS (バンドル)
|
Javaとの間のすべてのネットワークを無効または有効にします。 |
JAVA_TCP |
JavaのTCP操作を無効または有効にします。これは、NETWORK_ACCESS バンドル下の機能です。詳細は、次の項を参照してください。
|
JAVA_HTTP |
JavaのHTTP操作を無効または有効にします。これは、NETWORK_ACCESS バンドル下の機能です。詳細は、次の項を参照してください。
|
脚注1 この機能の名前は過去のものであり、わかりにくい場合があります。この機能は、すべてのJava OS操作ではなく、ファイル・アクセスにのみ関連します。Javaのファイル操作を有効にする方法、および他の種類のOS操作を無効にする方法の詳細は、次の項を参照してください。
サポートされているPDB初期化パラメータおよび句
名前 | 説明 |
---|---|
PATH_PREFIX ( |
有効なファイル・アクセス権限付与に関係なく、PATH_PREFIX ディレクトリ内のパスへのOSファイル・アクセスを制限します。
|
PDB_OS_CREDENTIAL (初期化パラメータ) |
Runtime.exec() を介してOSプロセスを分岐する際に、Oracleユーザー・アイデンティティではなく、Oracle JVMでは指定されたOSユーザー・アイデンティティを強制的に使用します。
|
現在のリリース以降のOracle JVMでは、PDBロックダウン・プロファイルのサポートが拡張され、次の項で説明するように柔軟性が向上しています。
ノート:
次の項で説明する機能拡張は、バックポートによってOracle Databaseリリース19cおよび21cでも使用できます。Oracle JVM OSアクセス制限の柔軟な指定
PDB分離機能の機能拡張により、PDBロックダウン・プロファイルでOracle JVMオペレーティング・システム(OS)アクセス制限を指定する際の柔軟性が追加されています。
JAVA_OS_ACCESSロックダウン・プロファイル機能の新しいロール
既存のJAVA_OS_ACCESS
ロックダウン・プロファイル(Java権限のjava.io.FilePermission
を制御する)機能には、新しい密接に関連するロールが割り当てられています。Oracle JVMランタイムのファイル・アクセス・チェックは、それによって制御するようになりました。この新しいロールは、ファイル・アクセス権を制御する既存のロールと適切に調和します。
OS_ACCESSロックダウン機能バンドル
既存のOS_ACCESS
ロックダウン・プロファイル機能バンドルは、その構成機能のJAVA_OS_ACCESS
がOracle JVMのファイル・アクセス・チェックを有効にするように構成されていないかぎり、Oracle JVMランタイムのファイル・アクセスのアクセスを無効にするために今までどおりに使用できます。
拡張されたOracle JVM OSアクセス制限の例
この項では、拡張されたOracle JVM OSアクセス制限の利用方法について説明します。
以前は、JavaからのすべてのOSアクセスを無効するために、次のコマンドを使用していました。
ALTER LOCKDOWN PROFILE my_profile1 DISABLE FEATURE ('OS_ACCESS');
現在は、ファイル・アクセスを除くJavaからのすべてのOSアクセスを無効にするために、次のコマンドを使用できます。
ALTER LOCKDOWN PROFILE my_profile2 DISABLE FEATURE ('OS_ACCESS');
ALTER LOCKDOWN PROFILE my_profile2 ENABLE FEATURE ('JAVA_OS_ACCESS');
完全な例
次の操作について説明する完全な例を示します。
PATH_REFIX
句の値を設定した新しいPDBの作成- Javaファイル操作を除いて、すべてのタイプのOSアクセスを無効にする新しいロックダウン・プロファイルの作成
- PDBへの新しいロックダウン・プロファイルのリンク
PATH_PREFIX
内のファイルの読取りと書込みができる新しいPDBのユーザーの管理
例10-6 Oracle JVMの拡張されたOSアクセス制限について説明する完全な例
- ルート
SYS
ユーザーとして接続しているときに、CDBルートがcdb1_pdb0
のcdb1_pdb5
という名前のPDBを作成します。create pluggable database cdb1_pdb5 admin user admin identified by manager file_name_convert = ('cdb1_pdb0','cdb1_pdb5') path_prefix='/d1/pdbs/pdb5/'
- ロックダウン・プロファイルを作成して、
OS_ACCESS
機能とNETWORK_ACCESS
機能は無効になるように設定し、JAVA_OS_ACCESS
機能は有効になるように設定します。create lockdown profile java_profile; alter lockdown profile java_profile disable feature=('OS_ACCESS'); alter lockdown profile java_profile disable feature=('NETWORK_ACCESS'); alter lockdown profile java_profile enable feature=('JAVA_OS_ACCESS');
JAVA_PROFILE
をPDBのpdb5
に関連付けます。alter session set container = cdb1_pdb5; alter system set pdb_lockdown = java_profile ;
- データベースをシステムの変更後に再起動します。
alter session set container = cdb1_pdb0; -- this is the root shutdown abort startup pfile = t_initvm1.ora alter pluggable database all open; alter session set container = cdb1_pdb5; grant create session, create procedure, create public synonym to admin; grant create table to admin; -- add other grants to the local PDB admin as required
- ユーザー
ADMIN
に、ファイル・アクセス操作の権限を付与します。call dbms_java.grant_permission('ADMIN', 'SYS:java.io.FilePermission', '/d1/pdbs/pdb5/-', 'read,write,delete');
cdb1_pdb5
の一般ユーザーを作成します。create user juser identified by juser; grant create session to juser;
juser
に、ファイル・アクセス操作の権限を付与します。call dbms_java.grant_permission('JUSER', 'SYS:java.io.FilePermission', '/d1/pdbs/pdb5/file1.txt', 'read'); call dbms_java.grant_permission('JUSER', 'SYS:java.io.FilePermission', '/d1/pdbs/pdb5/file2.txt', 'read,write');
Oracle JVMネットワーキング・アクセス制限の追加の柔軟性
PDB分離機能の機能拡張により、PDBロックダウン・プロファイルでOracle JVMネットワーキング・アクセス制限を指定する際の柔軟性が追加されています。
新しいロックダウン・プロファイル機能JAVA_TCP
既存のNETWORK_ACCESS
ロックダウン・プロファイル機能バンドルは、Oracle JVMランタイムのTCP操作を制御する新しい機能JAVA_TCP
を受け入れます。これは、PL/SQL TCP機能を制御する既存のUTL_TCP
ロックダウン・プロファイル機能に似ています。
新しいロックダウン・プロファイル機能JAVA_HTTP
既存のNETWORK_ACCESS
ロックダウン・プロファイル機能バンドルは、Oracle JVMランタイムのHTTP操作を制御する新しい機能JAVA_HTTP
を受け入れます。これは、PL/SQL HTTP機能を制御する既存のUTL_HTTP
ロックダウン・プロファイル機能に似ています。
NETWORK_ACCESSロックダウン・プロファイル機能バンドル
既存のNETWORK_ACCESS
ロックダウン・プロファイル機能バンドルは、Oracle JVMランタイム全体のネットワークを無効にするために今までどおりに使用できます。
データベース管理者に向けた重要なノート
このリリースでは、CDBデータベース管理者が、Oracle JVMからのファイル・アクセスを許可するPDBに対して、安全なロックダウンを詳細に構成できるようになっています。セキュリティと分離については、PDBに対してどのようなタイプのファイル・アクセスも許可する場合、常にPATH_PREFIX
句を使用します。
この項では、CDB管理者のPDB分離機能に実施された重要な機能拡張の概要を示します。
- 以前は、ロックダウン・プロファイルで
OS_ACCESS
機能を無効にすると、JavaからのすべてのOSアクセスが、ファイル操作を含めて無効化されていました。現在は、ロックダウン・プロファイルでJavaのファイル操作のみを有効して、それ以外のタイプのJavaからのOSアクセスを無効にできるようになりました。ALTER LOCKDOWN PROFILE my_profile DISABLE FEATURE ('OS_ACCESS'); ALTER LOCKDOWN PROFILE my_profile ENABLE FEATURE ('JAVA_OS_ACCESS');
- 以前は、ロックダウン・プロファイルで
NETWORK_ACCESS
機能を無効にすると、Javaからのすべてのネットワーク・アクセスが無効になりました。現在は、ロックダウン・プロファイルで選択的にOracle JVMに対してHTTP接続を有効にして、それ以外のタイプのネットワーキングを無効のままにできるようになりました。ALTER LOCKDOWN PROFILE my_profile DISABLE FEATURE ('NETWORK_ACCESS'); ALTER LOCKDOWN PROFILE my_profile ENABLE FEATURE ('JAVA_HTTP');
- 以前は、ロックダウン・プロファイルで
NETWORK_ACCESS
機能を無効にすると、Javaからのすべてのネットワーク・アクセスが無効になりました。現在は、ロックダウン・プロファイルで選択的にOracle JVMに対してTCP接続を有効にして、それ以外のタイプのネットワーキングを無効のままにできるようになりました。ALTER LOCKDOWN PROFILE my_profile DISABLE FEATURE ('NETWORK_ACCESS'); ALTER LOCKDOWN PROFILE my_profile ENABLE FEATURE ('JAVA_TCP');
関連項目:
- Oracle Multitenant Isolationホワイト・ペーパー
- 「ALTER LOCKDOWN PROFILE」: PDBロックダウン・プロファイル機能の説明
- 「CREATE PLUGGABLE DATABASE」:
PATH_PREFIX
句の詳細 - 「PDB_OS_CREDENTIAL」:
PDB_OS_CREDENTIAL
初期化パラメータの詳細