MLEでのJavaScriptの操作に必要なシステム権限およびオブジェクト権限

プロジェクトの要件に応じて、データベース内のJavaScriptと対話できるように、様々な権限をユーザーおよびロールに付与できます。

管理者は、アプリケーションの要件を慎重に確認し、ユーザーに必要な最小数の権限のみを付与する必要があります。このことは特にシステム権限に当てはまり、これは非常に強力であるため、信頼できるユーザーにのみ付与する必要があります。

MLE JavaScriptコードを操作するために必要な最小権限は、データベースでJavaScriptコードを実行する権限です。MLEは、DBMS_MLEに基づいた動的MLE実行と、MLEモジュールおよび環境を使用したMLE実行を区別します。

JavaScriptにストアド・コードを作成するには、独自のスキーマにJavaScriptスキーマ・オブジェクトを作成するための追加の権限が必要です。

MLEで使用可能な最も強力な権限では、スーパーユーザーは自分のスキーマのみでなく、任意のスキーマにMLEスキーマ・オブジェクトを作成、変更および削除できます。Oracle Databaseのすべての権限と同様に、名前にANYが含まれている権限が最も強力であるため、絶対に必要であるとされた場合にのみ、信頼できるユーザーに付与する必要があります。

ノート:

モジュールおよび環境に対するオブジェクト権限では、コール仕様(またはDBMS_MLE)によって定義されたソース・コードとユーザー・コンテキストの組合せなど、アプリケーションへのアクセス権は付与されません。これは、コール仕様のプロシージャまたはファンクション・オブジェクトへのアクセス権を付与することで実現されます。

関連項目:

トピック

JavaScriptコードの実行に必要な権限

独自のスキーマでJavaScriptコードを実行する前に、次のオブジェクト権限付与がユーザー・アカウントに発行されている必要があります:

GRANT EXECUTE ON JAVASCRIPT TO <role | user>

EXECUTE ON JAVASCRIPT権限には、DBMS_MLEを使用したJavaScriptの動的実行は含まれません。DBMS_MLEを使用する場合は、追加の権限が必要です:

GRANT EXECUTE DYNAMIC MLE TO <role | user>

NoSQL APIを使用するために必要な権限

MLE JavaScriptコードがSimple Oracle Document Access (SODA)を参照する場合、SODA_APPロールをユーザーまたはロールに付与する必要があります:

GRANT SODA_APP <role | user>

MLEスキーマ・オブジェクトを作成するために必要な権限

独自のスキーマでMLEモジュールおよび環境を作成する場合は、さらにシステム権限が必要です:

GRANT CREATE MLE TO <role | user>

MLEモジュールがコール仕様の形式でデータベースのSQLレイヤーおよびPL/SQLレイヤーに公開される場合は、PL/SQLプロシージャを作成する権限も必要です:

GRANT CREATE PROCEDURE TO <role | user>

多くの場合、ユースケースに応じて、表、索引、順序などの追加のスキーマ・オブジェクトを作成するために、さらにシステム権限が必要になります。Oracle Database 23ai以降、DB_DEVELOPER_ROLEロールを使用すると、管理者はローカル開発データベースの開発者に必要な権限をすばやく付与できます。ロールは、次のスニペットに示すように付与できます。

GRANT DB_DEVELOPER_ROLE TO <role | user>

関連項目:

DB_DEVELOPER_ROLEロールの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください

任意のスキーマでMLEモジュールおよび環境を作成するために必要な権限

パワー・ユーザーおよび管理者に追加の権限を付与して、任意のスキーマでMLEスキーマ・オブジェクトを作成、変更および削除できるようにすることができます。

GRANT CREATE ANY MLE TO <role | user>
GRANT DROP ANY MLE TO <role | user>
GRANT ALTER ANY MLE TO <role | user>

名前にANYを含むOracle Databaseのすべての権限と同様に、これらは非常に強力であるため、徹底的に調査した後に信頼できるユーザーにのみ付与する必要があります。このため、DBAロールおよびSYSアカウントにのみこれらの権限が付与されています。これらのシステム権限の使用は、ORA_SECURECONFIG監査ポリシーによって監査されます。

独自のスキーマ以外のスキーマでMLEコール仕様を作成するには、CREATE ANY PROCEDUREに対する権限も付与する必要があります:

GRANT CREATE ANY PROCEDURE TO <role | user>

前に示したシステム権限と同様に、CREATE ANY PROCEDUREは、同じ監査ポリシーORA_SECURECONFIGによって監査されます。

関連項目:

ORA_SECURECONFIG監査ポリシーの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください

実行後デバッグに必要な権限

他のデータベース・ユーザーは、所有していないMLEモジュールのデバッグ情報を収集できます。デフォルトでは、MLE所有者は、特定の権限なしで独自のMLEモジュールで実行後デバッグを使用できます。デバッグ情報を収集する権限を別のロールまたはユーザーに付与して、モジュール所有者の代理としてJavaScriptコードの実行後デバッグを使用できるようにすることが可能です:

GRANT COLLECT DEBUG INFO ON <module> TO <role | user>

ノート:

PL/SQLコードとして作成されたMLEモジュール・コールに対する実行権限を、定義者権限を持つ他のスキーマのユーザーに付与することもできます。この場合、他のユーザーに追加の権限を付与する必要はありません。

ノート:

モジュールおよび環境に対するオブジェクト権限では、コール仕様(またはDBMS_MLE)によって定義されたソース・コードとユーザー・コンテキストの組合せなど、アプリケーションへのアクセス権は付与されません。これは、コール仕様のプロシージャまたはファンクション・オブジェクトへのアクセス権を付与することで実現されます。

関連項目:

実行後デバッグの詳細は、「MLE JavaScriptモジュールの実行後デバッグ」を参照してください