インスタンス管理者は、サービスレベルのセキュリティ、Real Application Securityに対するサポートの構成、セッション・タイムアウトの構成、ワークスペースの分離によるブラウザ攻撃の防止、リージョンおよびWebサービスからのドメインの除外、認証制御の構成、強力なパスワード・ポリシーの作成、データベース・アクセス記述子(DAD)によるアクセスの制限、認可済URLの管理など、インスタンス・セキュリティを構成できます。
インスタンス管理者は、「インスタンスの管理」、「セキュリティ」、「セキュリティ設定」でサービスレベルのセキュリティ設定を構成できます。
サービスレベルのセキュリティ設定には、ログイン制御の構成、ファイル・アップロード機能の制御、IPアドレスによるアクセスの制限、インスタンスに対するプロキシ・サーバーの構成、セッションIDを含むURLに対するサポートの制御、Oracle Application Expressで未処理のエラーを表示する方法などが含まれます。
開発者または管理者がApplication Expressのログイン・ページからワークスペースにログインするときにユーザーのコンピュータに便利なCookieを送信するかどうかを制御します。
「ワークスペースCookieの設定」オプションが「はい」に設定されている場合、Oracle Application Expressは次のような永続Cookieを送信します。
最後に使用されたワークスペース名とユーザー名が組み合されます
6か月の存続期間があります
Application Expressのワークスペース・ログイン・フォーム(Oracle Application Express管理サービスのログイン・フォームではありません)への移入のために読み取られます
ログイン・フォームにCookieを移入するかどうかを制御するには:
はい - Application Expressワークスペース・ログイン・ページが、最後に使用されたワークスペース名とユーザー名の組み合せを含む永続Cookieを送信できるようにします。
このCookieの存続期間は6か月で、Application Expressワークスペース・ログイン・フォーム(サービス管理ログイン・フォームではない)の「ワークスペース」および「ユーザー名」フィールドへの移入に使用されます。
注意:
システムがこのCookieを受信している場合は、ブラウザのツールまたはシステム・ユーティリティを使用して、ディスク上の永続位置から物理的に削除できます。このCookieはORA_WWV_REMEMBER_UN
という名前です。以前のリリースのOracle Application Expressの場合、このCookieはORACLE_PLATFORM_REMEMBER_UN
という名前です。これは、個別のホスト名およびパス・コンポーネントを持つ、アクセスされた各Oracle Application Expressサービスに存在します。
ユーザーはOracle Application Express管理サービスにログインできなくなります。
インスタンス管理者は、ユーザーがOracle Application Express管理サービスにログインするのを防ぐことができます。管理者によるログイン本番環境を無効にすると、権限のないユーザーによるApplication Express管理サービスへのアクセスおよび他のユーザー・ログイン資格証明の破損を防止できます。
Oracle Application Express管理サービスへのユーザー・アクセスを無効にするには、次の手順を実行します。
Oracle Application Express管理サービスへのアクセスが無効になっている場合、インスタンス管理者は次のSQL文を実行して再び有効にできます。
無効になっている場合に、Oracle Application Express管理サービスへのユーザー・アクセスを許可するには、次の手順を実行します。
ワークスペース・ログインを無効化して、Application Expressへのユーザー・アクセスを制限します。本番環境でワークスペース・ログインを無効にすると、ユーザーはアプリケーション・ビルダー、SQLワークショップ、チーム開発、ワークスペース管理などのApplication Expressアプリケーションを実行できなくなります。
内部ワークスペースへのユーザー・アクセスを無効にするには、次のステップを実行します。
「パブリック・ファイルのアップロードを許可」属性を使用して、認証されていないユーザーがファイルのアップロード制御を提供するアプリケーションでファイルをアップロードできるかどうかを制御します。
ファイルのアップロードを制御するには、次のステップを実行します。
使用可能なIPアドレスのカンマ区切りのリストを指定して、Oracle Application Expressインスタンスへのユーザー・アクセスを制限します。
IPアドレスでユーザー・アクセスを制限するには、次のステップを実行します。
すべてのアウトバウンドHTTPトラフィックにプロキシを使用するようにOracle Application Expressインスタンス全体を構成します。
インスタンス・レベルでのプロキシの設定は、アプリケーション・レベルまたはWebサービス参照で定義されているすべてのプロキシより優先されます。プロキシが指定されている場合、URLタイプのリージョン、Webサービスおよびレポート出力で、そのプロキシが使用されます。
Oracle Application Expressインスタンスに対してプロキシを構成するには、次の手順を実行します。
Application Expressがチェックサムに一方向のハッシュ文字列を生成するときに使用するハッシュ関数を選択します。
「チェックサム・ハッシュ関数」属性を使用すると、最近の開発に対応して、新しい調査に基づいてアルゴリズムを切り替えることができます。「チェックサム・ハッシュ関数」属性を使用して、Oracle Application Expressがチェックサムに一方向のハッシュ文字列を生成するときに使用するハッシュ関数を選択します。この属性は、新しいアプリケーションでセキュリティ・ブックマーク・ハッシュ関数属性のデフォルト値にもなります。アプリケーションは、ブックマークのURLを定義するときにブックマーク・ハッシュ関数を使用します。
ヒント:
「チェックサム・ハッシュ関数」を変更しても、エンド・ユーザーが保存した既存のブックマークすべてが無効になるため、既存のアプリケーションに現在の定義されている「ブックマーク・ハッシュ関数」は変更されません。既存のアプリケーションに移動し、既存のブックマークを無効にしてから、「チェックサム・ハッシュ関数」に定義されている値と同じになるように「ブックマーク・ハッシュ関数」を更新することを強くお薦めします。
チェックサム・ハッシュ関数を選択するには、次の手順を実行します。
Oracle Application ExpressでセッションIDを含まないアプリケーションURLをサポートするかどうかを制御します。
「セッションを再結合」属性を構成すると、インスタンス管理者はセッションIDを含むURLをOracle Application Expressでサポートするかどうかを制御できます。セッションの再結合を有効にすると、URLにセッションIDが含まれていない場合、Oracle Application Expressはセッションcookieを使用して既存のセッションを結合しようとします。
警告:
セキュリティ上の理由から、「ホスト名の許可」属性を構成してワークスペース分離を実装していないかぎり、管理者がセッション結合のサポートを無効にすることをお薦めします。ブラウザ攻撃を防ぐためのワークスペースの分離およびインスタンスのすべてのワークスペースの分離を参照してください。
注意:
セッションの再結合を有効にすると、攻撃者が既存のエンド・ユーザー・セッションを乗っ取ることが可能になることで、アプリケーションのセキュリティが侵害される可能性があります。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドを参照してください。
「セッションを再結合」を構成するには、次の手順を実行します。
セッション・ステート保護がそのアプリケーションに対して有効で、URLに有効なチェックサムが含まれています。パブリック・ブックマークの場合、最も制限的なアイテム・レベルの保護は「制限なし」または「チェックサムが必要 - アプリケーション・レベル」である必要があります。
URLにペイロードは含まれていません(リクエスト・パラメータ、クリア・キャッシュまたはデータ値ペア)。この設定には、アプリケーションで「フレームへの埋込み」が「同じ起点から許可」、または「拒否」に設定されている必要があります。
「すべてのセッションに対して有効」には、「フレームへの埋込み」が「同じ起点から許可」または「拒否」に設定されている必要があります。これはURLペイロードの条件に関連付けられませんが、セッション・ステート保護されるURLにも適用されます。
参照:
『Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド』
ブラウザ・セキュリティ
コンポーネント・ビューでのセッションの再結合の構成
ページ・デザイナでのセッションの再結合の構成
Oracle Application Expressインスタンスおよびすべての関連アプリケーションのHTTPSの必要性を判断します。
注意:
「HTTPSが必要」に設定すると、Oracle Application ExpressがHTTPプロトコルではアクセスできなくなります。この設定を有効にする前に、サーバーでHTTPSが有効であり正しく構成されていることを必ず確認してください。
Secure Socktets Layer (SSL)は、インターネット上で転送されるデータのセキュリティを管理するためのプロトコルです。SSLは、HTTPSプロトコルを使用してWebアプリケーションに実装されます。機密データが暗号化されていない(クリアテキストの)通信チャネルに送信されないように、SSL (HTTPSプロトコル)を使用してOracle Application Expressアプリケーションを実行することをお薦めします。
「HTTPSが必要」属性および「アウトバウンドHTTPSが必要」属性を構成することで、Oracle Application Expressインスタンスとすべての関連アプリケーションでHTTPSを必要とするように構成します。
重要:
「HTTPSが必要」を有効にすると、Oracle Application ExpressがHTTPプロトコルではアクセスできなくなります。この設定を有効にする前に、サーバーでHTTPSが有効であり正しく構成されていることを必ず確認してください。
Oracle Application ExpressでHTTPSを必須にするには、次の手順を実行します。
「HTTPSが必要」が有効になっている場合、インスタンス管理者は次のSQL文を実行して無効にできます。
「HTTPSが必要」を無効化するには、次の手順を実行します。
「アウトバウンドHTTPSが必要」が有効になっている場合、インスタンス管理者は次のSQL文を実行して無効にできます。
「アウトバウンドHTTPSが必要」を無効化するには、次の手順を実行します。
Oracle Real Application Securityを有効にします。
Real Application Securityを有効にするには、次の手順を実行します。
Oracle Database 12cリリース1 (12.1.0.2)以上を実行している場合は、Oracle Real Application Securityを有効化できます。Oracle Real Application Security (RAS)は、アプリケーション開発者と管理者がアプリケーションレベルのセキュリティ・ポリシーをデータベース層で定義し、割り当てて適用できるデータベース認証フレームワークです。
セッション・タイムアウトの属性を使用して、Webブラウザが開いたまま放置されたコンピュータの露出をアプリケーション・レベルで減らします。
インスタンスに対してセッション・タイムアウトを構成するには、次の手順を実行します。
アプリケーション・セッションが存続できる時間(秒)を制御する正の整数を入力します。
セッションが無期限に存在するようにするには、0を入力します。
値をデフォルトの8時間(28800秒)に戻すには、値を空のままにします。
このセッション期間よりも、12時間より前のセッションを削除する、1時間ごとのデータベース・ジョブ操作が優先されることがあります。
このApplication Expressインスタンスでアプリケーションによって使用されるセッションのデフォルトのアイドル時間を制御する正の整数を入力します。
セッション・アイドル時間のチェックが実行されないようにするには、値を0に設定します。
値をデフォルトの1時間(3600秒)に戻すには、値を空のままにします。
参照:
Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「セッション管理」
インスタンス管理者は、ワークスペースを分離することでブラウザ攻撃を防ぐことができます。
ワークスペースの分離は、ブラウザ攻撃を防ぐ効果的な方法です。
ワークスペースを真に分離する唯一の方法は、「ホスト名の許可」属性を構成してURLで異なるドメインを適用することです。攻撃者と攻撃を受ける側のURLでドメインとホスト名が異なる場合、ブラウザの同一起点ポリシーによって攻撃が回避されます。
参照:
ブラウザ攻撃を防ぐためのワークスペースの分離およびOracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
URLタイプのリージョンおよびWebサービスの制限付きドメインのリストを定義します。WebサービスまたはURLタイプのリージョンに除外されたドメインが含まれる場合、制限されていることを通知するエラーがユーザーに表示されます。
URLタイプのリージョンおよびWebサービスから、除外するドメインのリストを定義するには、次のステップを実行します。
Oracle Application Expressインスタンス全体に対して認証制御を構成します。
管理者はインスタンス全体に対して、または個々のワークスペースごとに認証制御を構成できます。
たとえば、インスタンス管理者がOracle Application Express管理サービスの認証制御を構成する場合、その構成は開発インスタンス全体にわたるすべてのワークスペースで、Application Expressのすべてのアカウントに適用されます。
インスタンス管理者がインスタンス全体でログイン制御を有効にしない場合は、各ワークスペース管理者がワークスペースごとに次の制御を有効にできます。
ユーザーのアカウント有効期限およびロック
ユーザー・アカウントへのログイン試行失敗の最大回数
アカウント・パスワード存続期間(つまりエンド・ユーザー・アカウントのパスワードを使用できる期限が切れるまでの残りの日数)
ヒント:
この機能は、Application Expressのユーザー作成および管理を使用して作成したアカウントにのみ適用されます。この機能は、追加的なアプリケーションの認証セキュリティを提供します。ワークスペースでのユーザーの管理を参照してください。
開発者ログインとエンド・ユーザー・ログインのセキュリティ設定を構成します。
開発者ログインとエンド・ユーザー・ログインのセキュリティ設定を構成するには、次の手順を実行します。
ワークスペース管理者および開発者アカウントに対するセキュリティ設定を管理します。
ワークスペース管理者およびワークスペース開発者アカウントに対するセキュリティ制御を構成するには:
インスタンス管理者は、Oracle Application Expressインスタンスに対して強力なパスワード・ポリシーを作成できます。
すべてのワークスペースでApplication Expressユーザー(ワークスペース管理者、開発者、エンドユーザー)のパスワード・ポリシーを管理します。
次のようなパスワード・ポリシーがあります。
Oracle Application Expressインスタンスのすべてのユーザー(ワークスペース管理者、開発者、エンド・ユーザーを含む)に適用する。
文字、パスワード長、特定の単語、新旧パスワードの差分などについての制限を指定する。
Oracle Application Express管理サービスにサインインするユーザーに適用する。
Application Expressインスタンス管理者は、サービス管理者のパスワード・ポリシーを選択できます。オプションは次のとおりです。
「作業領域のパスワード・ポリシー」で指定したポリシーの使用 - 「作業領域のパスワード・ポリシー」で指定したパスワード・ルールを適用します。
デフォルトの強力なパスワード・ポリシーの使用 - ハッカーが管理者のパスワードを判別できないようセキュリティの層をさらに追加します。このパスワード・ポリシーでは、サービス管理者パスワードが次の制限を満たしている必要があります。
6文字以上で構成されます。
小文字および大文字のアルファベット、数字、記号を1つ以上含みます。
ユーザー名は含めることができません。
Internalという単語を含めることができません。
このセクションの「ワークスペース名使用禁止」にある単語を含めることができません。
パスワード・ポリシーでは、ハッカーが管理者のパスワードを判別できないようセキュリティの層をさらに追加します。
データベース・アクセス記述子(DAD)によるOracle Application Expressへのアクセスを制限します。
ヒント:
PL/SQLのリクエスト検証ファンクションのディレクティブは、Oracle Application Server 10gおよびOracle HTTP Server 11g以降でのみ使用できます(また、埋込みPL/SQLゲートウェイはOracle Database 11g以降でのみ使用できます)。このディレクティブは、Oracle HTTP Serverリリース9.0.3では使用できません。
wwv_flow_epg_include_local
ファンクションを変更して再コンパイルすると、アクセスを制限できます。 DADの作成時にリクエスト検証ファンクションのディレクティブを作成することで、DADによるOracle Application Expressへのアクセスを制御できます。
mod_plsql
および埋込みPL/SQLゲートウェイでは、コールされるPL/SQLファンクションをHTTPリクエストごとに指定するためのディレクティブがサポートされています。この機能を使用すると、埋込みPL/SQLゲートウェイまたはmod_plsql
を介してコールされるプロシージャを制限できます。このファンクションは、リクエストで指定されたプロシージャが許可されていればTRUE
を戻し、許可されていなければFALSE
を戻します。このファンクションを使用すると、Oracle Application Expressに対するアクセス制限を、データベース・アクセス記述子(DAD)ベースで適用することもできます。
インストーラによるインストールでは、Oracle Application Express製品スキーマ(APEX_050100
)にPL/SQLファンクションも自動的に作成されます。アクセスを制限するには、このファンクションを変更して再コンパイルします。このファンクションのソース・コードは、ラッピングされておらず、Oracle Application Express製品コア・ディレクトリのファイルwwv_flow_epg_include_local.sql
にあります。
Oracle Application Expressには、wwv_flow_epg_include_modules.authorize
というリクエスト検証ファンクションが付属しています。このファンクションを使用すると、Oracle Application Expressに構成された標準的なDADに対して適切な制限が指定されます。
wwv_flow_epg_include_mod_local
ファンクションは、埋込みPL/SQLゲートウェイまたはmod_plsql
からコールされるOracle Application Expressのリクエスト検証ファンクションからコールされます。このOracle Application Expressファンクションは、まずリクエストを評価し、プロシージャ名に基づいて承認するか、拒否するか、またはローカル・ファンクションwwv_flow_epg_include_mod_local
に渡します(このローカル・ファンクションは、独自ルールでリクエストを評価できます)。
Oracle Application Expressで使用するDADを新しく作成する際は、リクエスト検証ファンクションのディレクティブを指定する必要があります。具体的には、ファンクションwwv_flow_epg_include_modules.authorize
を、dads.conf
のデータベース・アクセス記述子エントリのディレクティブPlsqlRequestValidationFunction
で指定する必要があります。
wwv_flow_epg_include_modules.authorize
ファンクションで実装される以外の制限がない場合は、wwv_flow_epg_include_mod_local
ファンクションのソース・コードについて実行する処理はありません。
wwv_flow_epg_include_local
ファンクションを変更して再コンパイルすると、アクセスを制限できます。
wwv_flow_epg_include_local
ファンクションのソース・コードは、ラッピングされておらず、Oracle Application Express製品コア・ディレクトリのファイルwwv_flow_epg_include_local
にあります。このソース・コードは次のようになります。
CREATE OR REPLACE FUNCTION wwv_flow_epg_include_mod_local( PROCEDURE_NAME IN VARCHAR2) RETURN BOOLEAN IS BEGIN RETURN FALSE; -- remove this statement when you add procedure names to the "IN" list IF UPPER(procedure_name) IN ( '') THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END wwv_flow_epg_include_mod_local; /
wwv_flow_epg_include_local
で、使用できるプロシージャの名前を指定してアクセスを制限できます。使用できるプロシージャの名前を指定するには、wwv_flow_epg_include_local
を次のように編集します。
認可済URLのリストを作成して管理します。
認可済URLは、特定のOracle Application Expressプロシージャのパラメータ値として使用できるURLのリストを識別します。これには、P_NEXT_URL
という入力パラメータを持つAPEX_UTIL.COUNT_CLICK
プロシージャなどがあります。
P_NEXT_URL
へのパラメータ値が相対URLでなく、現在のホスト名を示す値でない場合、この認証済URLのリストに含まれている必要があります。
認可済URLのリストに含まれるURLを編集します。
既存のURLを編集するには、次の手順を実行します。