3.4.5 インスタンスのすべてのワークスペースの分離

インスタンス管理者は、すべてのワークスペースを分離する制限を構成してブラウザ攻撃を防ぐことができます。ワークスペース管理者は、ワークスペースレベルでこれらのデフォルト値を上書きできます。

ノート:

開発環境のセキュリティとパフォーマンスを確保するために、一部の管理機能はOracle Cloudで実行されているOracle APEXインスタンスでは使用できません。

3.4.5.1 ブラウザ攻撃を防ぐためのワークスペースの分離の概要

ワークスペースの分離は、ブラウザ攻撃を防ぐ効果的な方法です。

ワークスペースを真に分離する唯一の方法は、「ホスト名の許可」属性を構成してURLで異なるドメインを適用することです。攻撃者と攻撃を受ける側のURLでドメインとホスト名が異なる場合、ブラウザの同一起点ポリシーによって攻撃が回避されます。

「ホスト名の許可」の構成によるワークスペースの分離は、ワークスペースの境界を越えようとするクライアント側攻撃への対策となります。このセキュリティ対策は、他のフレームワークおよび言語(Oracle Application Development Framework (ADF)やJavaなど)で作成されたアプリケーションを含むインスタンスのホストを使用してアクセスできるすべてのアプリケーションを信頼できる場合は、必要ありません。

インスタンス管理者は、インスタンスレベルで「ホスト名の許可」属性を構成できます。ワークスペース管理者は、特定のワークスペースのインスタンスレベルの設定をオーバーライドできます。

3.4.5.2 インスタンスレベルの「ワークスペースの分離」属性の構成

インスタンス内のすべてのワークスペースについて、分離およびリソース制限を構成します。

ヒント:

ワークスペース管理者は、ワークスペースレベルでこれらのデフォルト値を上書きできます。ブラウザ攻撃を防ぐためのワークスペースの分離を参照してください。

インスタンスレベルで「ワークスペースの分離」属性を構成するには:

  1. APEX管理サービスにサインインします。
  2. 「インスタンスの管理」をクリックします。
  3. 「インスタンスの設定」で、「セキュリティ」をクリックします。
  4. 「ワークスペースの分離」で、次の属性を構成します。

    ヒント:

    属性についてさらに学習するには、フィールドレベル・ヘルプを参照してください。

    属性 説明

    ホスト名の許可

    このインスタンスへのアクセスに使用できるホスト名のリストを、カンマ区切りで入力します。この属性を使用すると、WebサーバーのどのDNS別名をアプリケーションで使用できるかを指定できます。ワークスペース・レベルでこれをオーバーライドする特定の値を構成できます。1つ以上のホスト名を入力する場合、受信するHTTPリクエストURLのホスト名部分が、リストのホスト名のいずれかに一致する必要があります。

    たとえば、Webサーバーwww.example.comにDNS別名hr.example.comを登録できます。許可されるホスト名のインスタンス値を、www.example.comに設定できます。その後、HRワークスペースの「ホスト名の許可」をhr.example.comに設定した場合、ユーザーはhr.example.comを使用してHRアプリケーションにアクセスし、www.example.comを使用してこのインスタンスの他のすべてのアプリケーションにアクセスする必要があります。この構成では、ブラウザの同一生成元セキュリティ・ポリシーによって、HRアプリケーションと、別のブラウザのタブまたはウィンドウで実行されているインスタンスの他のアプリケーションとの間にクライアント側のバリアが提供されます。

    リソース・コンシューマ・グループ

    インスタンスのページ・イベントで使用されるデータベース・リソース・マネージャのコンシューマ・グループを指定します。リソース・コンシューマ・グループを使用すると、CPUやI/Oリクエストなどのハードウェア・リソースをより細かく制御できます。管理者がワークスペースのニーズまたは重要度に応じて提供するリソースを増やしたり減らしたりできるように、ワークスペースレベルの設定はインスタンスレベルの設定をオーバーライドします。

    リクエストごとの最初に、APEXエンジンによって、現在のデータベース・セッションの現在のコンシューマ・グループが、ワークスペースまたはインスタンスのレベルで定義されているコンシューマ・グループに切り替えられます。これは、実行中のアプリケーションにも、APEX開発環境内で使用されるアプリケーションにも適用されます。

    これらの制限は、割り当てられたリソース・マネージャの設定を有効にするAPEXエンジンを使用してアプリケーション・コードが実行されるすべてのページ・リクエストに適用されます。ただし、ワークスペース開発者が作成するOracleスケジューラ・ジョブ、またはAPEXがコード・パスにないORDS RESTリクエストにはこれらの制限は適用されません。

    スケジューラ・ジョブの開始時にapex_util.set_workspace('MY_WORKSPACE');などのワークスペースを設定するコールによって、適切なコンシューマ・グループが有効になります。ただし、開発者がこのタイプのコールを追加する理由がないこともよくあります。したがって、管理者は、APEXワークスペースとワークスペース・スキーマの両方(つまり、基礎となるデータベースのユーザー)にリソース・マネージャ・コンシューマ・グループを適用する必要があります。

    コンシューマ・グループに切り替える権限をPUBLICまたはAPEXスキーマに付与する必要があります。この権限は通常、DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUPのプロシージャを使用して付与されます。

    関連項目: Oracle Database管理者ガイドOracle Database Resource Managerを使用したリソースの管理

    最大同時ワークスペース・リクエスト数

    すべてのアプリケーションについてAPEXがサポートする同時ページ・イベントの最大数を入力します。ワークスペース・レベルで特定の値を構成できます。制限に達したとき、ページ・イベントを処理するかわりにAPEXにエラー・メッセージが表示されます。

    APEXは、GV$SESSIONCLIENT_INFO列を問い合せることによってワークスペース・リクエストを追跡します。この追跡は、DBMS_APPLICATION_INFO.SET_CLIENT_INFOの呼出しのように、開発者がCLIENT_INFOを上書きする場合には動作しません。

    最大同時セッション・リクエスト数

    このインスタンスのアプリケーションのセッションごとにAPEXがサポートする同時ページ・イベントの最大数を入力します。ワークスペース・レベルで特定の値を構成できます。制限に達したとき、新しいページ・イベントを処理するかわりにAPEXにエラー・メッセージが表示されます。あるいは、「同時セッション・リクエスト中断タイムアウト」属性を使用してアクティブなデータベース・セッションを停止し、新しいページ・イベントを処理することもできます。

    APEXは、GV$SESSIONCLIENT_IDENTIFIER列を問い合せることによってセッション・リクエストを追跡します。この追跡は、DBMS_SESSION.SET_IDENTIFIERの呼出しのように、開発者がCLIENT_IDENTIFIERを上書きする場合には動作しません。

    同時セッション・リクエスト中断タイムアウト

    「最大同時セッション・リクエスト数」の制限を超える新しいページ・イベントが発生した場合、APEXはこのAPEXセッションで他のページ・イベントを処理する最も古いアクティブなデータベース・セッションに対してalter system kill sessionを実行できます。「同時セッション・リクエスト中断タイムアウト」属性には、データベース・プロセスが中断されるまでアクティブでなければならない時間を秒単位で指定します。この属性を空のままにすると、APEXではどのデータベース・セッションも中断されません。

    警告: セッションを中断すると、アプリケーション・サーバーのデータベース・セッション・プールで問題が発生することがあります。

    ワークスペース内のファイルの最大サイズ

    ワークスペースにアップロードできるすべてのファイルの合計サイズ(バイト単位)を入力します。ワークスペース・レベルで特定の値を構成できます。

    最大Webサービス・リクエスト

    このインスタンスの各ワークスペースにおいて、現在を起点とした24時間の期間内にAPEXでサポートされるWebサービス・リクエストの最大数を入力します。ワークスペースレベルでより詳細な値を構成できます。

  5. 「変更の適用」をクリックします。