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