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

ワークスペース管理者は、特定のワークスペースを分離することでブラウザ攻撃を防ぐことができます。ワークスペースレベルの設定は、インスタンス全体に対して構成された設定より優先されます。

ノート:

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

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

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

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

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

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

3.12.3.2 「ワークスペースの分離」属性の構成

「ワークスペースの分離」属性を構成します。

「ワークスペースの分離」属性を構成するには、次の手順を実行します。

  1. 既存のワークスペースを表示します。
    1. Oracle APEX管理サービスにサインインします。
    2. 「ワークスペースの管理」をクリックします。
    3. 「ワークスペース・レポート」で、「既存のワークスペース」をクリックします。
    4. ワークスペース名をクリックします。
  2. 情報の編集ページで、「ワークスペースの分離」を探し、次の表の説明に従って属性を編集します。

    ヒント:

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

    表3-5 「ワークスペースの分離」属性

    属性 説明

    ホスト名の許可

    このワークスペースへのアクセスに使用できるホスト名のリストを、カンマ区切りで入力します。この属性を空のままにすると、インスタンスレベルの値が適用されます。1つ以上のホスト名を入力する場合、受信するHTTPリクエストURLのホスト名部分が、リストのホスト名のいずれかに一致する必要があります。

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

    ワークスペースでRESTfulサービスを使用する場合は、分離のためにOracle REST Data Servicesのurl-mapping.xml構成ファイルで追加のプールを構成する必要があります。「ホスト名の許可」が構成されている場合、Oracle REST Data Servicesは「RESTfulパス接頭辞」ワークスペース属性を無視することに注意してください。

    次の構成例では、HRワークスペースのRESTfulサービスにはhttps://hr.example.com/apex/resource-handlerを使用してのみアクセスできることを指定しています。

    <pool base-url="https://hr.example.com/apex" name="apex" workspace-id="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を実行できます。この属性には、データベース・プロセスが中断されるまでアクティブでなければならない時間を秒単位で指定します。この属性を空のままにすると、インスタンスレベルの値が適用されます。

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

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

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

    最大電子メール・メッセージ

    24時間ごとにAPEX_MAIL APIで送信できる電子メール・メッセージの最大数を入力します。

    この値は、インスタンスレベルの設定をオーバーライドします。

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

    24時間ごとにAPEX_MAIL APIで送信できる電子メール・メッセージの最大数を入力します。この値は、インスタンスレベルの設定をオーバーライドします。

    コンテンツ・キャッシュのターゲット・サイズ

    ワークスペースレベルでコンテンツ・キャッシュのターゲット・サイズを示します。コンテンツ・キャッシュは、現在、WebソースおよびREST対応SQLサービスで使用できます。キャッシュ・サイズ・ターゲットはソフト制限として機能し、パフォーマンス上の理由から、APEXスケジューラ・ジョブによってのみ保持されます。つまり、APEXは、通常の操作中に指定された制限を超える可能性があります。メンテナンス・ジョブの次の実行では、キャッシュ・サイズが指定された制限を下回るまで、残りの有効期間が最短のキャッシュされたコンテンツが削除されます。

    この値は、インスタンスレベルの設定をオーバーライドします。

    コンテンツ・キャッシュの最大エントリ・サイズ

    コンテンツ・キャッシュに配置されるコンテンツの最大サイズを示します。この値は、インスタンスレベルの設定をオーバーライドします。

    この値は、インスタンスレベルの設定をオーバーライドします。

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