MLEでのJavaScriptの操作に必要なシステム権限およびオブジェクト権限
プロジェクトの要件に応じて、データベース内のJavaScriptと対話できるように、様々な権限をユーザーおよびロールに付与できます。
管理者は、アプリケーションの要件を慎重に確認し、ユーザーに必要な最小数の権限のみを付与する必要があります。このことは特にシステム権限に当てはまり、これは非常に強力であるため、信頼できるユーザーにのみ付与する必要があります。
MLEでは、さらに権限を付与する必要がある、DBMS_MLEに基づいた動的MLE実行と、その必要がない、MLEモジュールおよび環境を使用したMLE実行とが区別されます。
JavaScriptにストアド・コードを作成するには、独自のスキーマにJavaScriptスキーマ・オブジェクトを作成するための追加の権限が必要です。
MLEで使用可能な最も強力な権限では、スーパーユーザーは自分のスキーマのみでなく、任意のスキーマにMLEスキーマ・オブジェクトを作成、変更および削除できます。Oracle Databaseのすべての権限と同様に、名前にANYが含まれている権限が最も強力であるため、絶対に必要であるとされた場合にのみ、信頼できるユーザーに付与する必要があります。
ノート:
モジュールおよび環境に対するオブジェクト権限では、コール仕様(またはDBMS_MLE)によって定義されたソース・コードとユーザー・コンテキストの組合せなど、アプリケーションへのアクセス権は付与されません。これは、コール仕様のプロシージャまたはファンクション・オブジェクトへのアクセス権を付与することで実現されます。
関連項目:
-
システム権限の処理の詳細は、「任意のスキーマでMLEモジュールおよび環境を作成するために必要な権限」を参照してください
-
Oracle Databaseの権限の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください
トピック
- 動的MLE実行の場合の必要な権限
- NoSQL APIを使用するために必要な権限
- MLEスキーマ・オブジェクトを作成するために必要な権限
- 任意のスキーマでMLEモジュールおよび環境を作成するために必要な権限
- 実行後デバッグに必要な権限
親トピック: MLEのセキュリティ
動的MLE実行の場合の必要な権限
DBMS_MLEを使用してJavaScriptコードを動的に実行するには、その前に、次のオブジェクト権限をユーザー・アカウントに付与する必要があります:
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モジュールの実行後デバッグ」を参照してください