6.9.2 セキュリティ属性の構成

アプリケーションのセキュリティ・ページを使用して、アプリケーション内のすべてのページのセキュリティを構成します。セキュリティ属性は、認証、認可、セッション管理、セッション・ステート保護、ブラウザ・セキュリティ、データベース・セッションのカテゴリに分類されます。

6.9.2.1 セキュリティ・ページへのアクセス

セキュリティ・ページにアクセスするには、次のステップを実行します。

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
    アプリケーションのホームページが表示されます。
  3. アプリケーションのホームページから、セキュリティ・ページに、次の2通りの方法でアクセスできます。
    • 「共有コンポーネント」からの場合:
      1. 「共有コンポーネント」をクリックします。

      2. 「セキュリティ」で、「セキュリティ属性」をクリックします。

    • 「アプリケーション・プロパティの編集」ボタン:
      1. アプリケーション名の右側にある「アプリケーション・プロパティの編集」をクリックします。

      2. 「セキュリティ」タブをクリックします。

    セキュリティ属性の編集ページが表示されます。

  4. 対象となる属性を編集します。
  5. 「変更の適用」をクリックして、変更を保存します。

6.9.2.2 セキュリティ・ページ

セキュリティ・ページを使用して、アプリケーション全体のセキュリティを設定します。アプリケーション・コンポーネントを直接編集し、より詳細な設定を管理します。

ノート:

必須の値には赤いアスタリスク(*)が付いています。

6.9.2.2.1 認証

認証は、ユーザーがアプリケーションにアクセスする前に、そのユーザーの本人確認を行うプロセスです。アプリケーションに対して複数の認証スキームを定義できますが、一度にカレントに設定できるスキームは1つだけです。

表6-8 認証属性

属性 説明 詳細情報

パブリック・ユーザー

データベース・アクセス記述子(DAD)を介したデータベースへの接続に使用するOracleスキーマ(またはユーザー)を示します。ユーザーの本人確認が行われると、Application Expressエンジンが組込み置換文字列APP_USERの値を設定して、各ユーザーを追跡します。

APP_USERがこの値と等しいと、Application Expressエンジンはカレント・セッションをパブリック・ユーザー・セッションとみなします。Application Expressエンジンは、次の組込み表示条件をサポートしています。

  • USER_IS_PUBLIC_USER

  • USER_IS_NOT_PUBLIC_USER

カレント・アプリケーション・ユーザー(APP_USER)がこの属性の値と等しい場合、ユーザーはパブリック・ユーザーとしてログインされます。一部のアプリケーションには、パブリック・モード(ログインが不要)およびプライベート・モード(ログインが必要)があります。ユーザーがパブリック・ユーザーかどうかを判断して、条件付きで情報の表示と非表示を切り替えることができます。

たとえば、ユーザーがパブリック・ユーザーの場合はログイン・ボタンを表示し、ユーザーがパブリック・ユーザーでない場合にはログアウト・リンクを表示するように設定できます。この値を参照するには、APEX_APPLICATION.G_PUBLIC_USERを使用します。

HOME_LINKおよび条件付きのレンダリングおよびプロセスの理解を参照してください

認証スキーム

このアプリケーションが使用する現行の認証方式を識別します。認証の目的は、アプリケーションのユーザーが本人であることを判断することです。認証スキームを作成するには、「認証スキームの定義」をクリックします。

認証の仕組みおよび認証スキームの作成を参照してください

6.9.2.2.2 認可

アプリケーション認可スキームによって、アプリケーション内のすべてのページへのアクセスが制御されます。アプリケーションに不当にアクセスすると、リクエストしたページに関係なく、エラー・ページが表示されます。

表6-9 認可属性

属性 説明

認可スキームの定義

「認可スキームの定義」ボタンをクリックして、認可スキームを作成します。

認可スキーム

アプリケーションの認可スキームを指定します。アプリケーションの認可スキームは、アクセス制御のためにアプリケーションに定義されます。ここで必要な認可スキームをアプリケーション・レベルで設定するには、アプリケーションのすべてのページが定義済の認可チェックに合格する必要があります。

パブリック・ページで実行

アプリケーション・レベルの認可スキームをパブリック・ページ(つまり、認可を必要としないページ)でチェックするかどうかを制御します。 オプションは次のとおりです。

  • オン: 「オン」を選択し、ページがパブリックの場合は、アプリケーション認可がチェックされます。

  • オフ: 「オフ」を選択し、ページがパブリックの場合は、アプリケーション認可が無視されます。

ノート: この属性は、認可スキームとして「パブリック・ユーザーは不可」を選択した場合は無視されます。

ロールまたはグループ・スキームのソース

タイプ「ロールまたはグループ内にある」の認可スキームのソースとして、Application Expressが使用する対象を定義します。選択可能な値は次のとおりです。

  • アクセス制御ユーザー・ロールの割当て: (「共有コンポーネント」/「アプリケーション・アクセス制御」で)ユーザーに割り当てられたロールを有効にします。

  • 認証スキーム: アプリケーションの認証スキームが「Application Expressアカウント」の場合は、ワークスペース・ユーザーに割り当てられているグループを有効にします。アプリケーションの認証スキームが「データベース・アカウント」の場合は、認可スキームが有効化されたときにデータベース・ロールが確認されます。認証スキームでReal Application Securityを使用する場合は、RAS動的ロールを有効にします。

  • カスタム・コード: 認証後プロセスでプロシージャapex_authentication.enable_dynamic_groupsをコールして、動的グループに値を移入します。

6.9.2.2.3 セッション管理

セッション管理属性を使用して、Webブラウザが開いたまま放置されたコンピュータの露出をアプリケーション・レベルで減らします。

表6-10 セッション管理

属性 説明

セッションを再結合

この属性を使用して、このアプリケーションのURLにセッションIDを含むかどうかをアプリケーション・レベルで制御します。「セッションを再結合」が有効で、URLにセッションIDが含まれていない場合、Application ExpressはセッションCookieを使用して既存のセッションを結合することを試みます。

セッションの再結合をアプリケーション・レベルで使用するには、管理者がインスタンス・レベルで「セッションを再結合」を有効化する必要があります。アプリケーションおよびページ設定は、より制限の多いインスタンス・レベルの設定によってオーバーライドされます。

「セッションを再結合」のオプションは次のとおりです。

  • アプリケーション・デフォルト - アプリケーション・レベルの設定が適用されます。

  • 無効 - URLにセッションIDが含まれていない場合、Application Expressは新しいセッションを作成します。

  • パブリック・セッションに対して有効 - URLがパブリック・ページのもので、セッションIDが含まれていない場合、Application Expressはそのアプリケーションに対して確立された既存のセッションCookieの利用を試みます。Application Expressは、セッションがまだ認証されていない場合にのみCookieを使用して結合します。

  • すべてのセッションに対して有効 - URLにセッションIDが含まれておらず、次の条件が満たされる場合、Application Expressはそのアプリケーションに対して確立された既存のセッションCookieの利用を試みます。
    • セッション・ステート保護がそのアプリケーションに対して有効で、URLに有効なチェックサムが含まれています。パブリック・ブックマークの場合、最も制限的なアイテム・レベルの保護は「制限なし」または「チェックサムが必要 - アプリケーション・レベル」である必要があります。

    • または、URLにペイロードが含まれていません(リクエスト・パラメータ、クリア・キャッシュまたはデータ値ペア)。

    このオプションでは、「フレームへの埋込み」を「同じ起点から許可」または「拒否」に設定する必要があります。これはURLペイロードの条件に関連付けられませんが、セッション・ステート保護されるURLにも適用されます。

警告: セッションの再結合を有効にすると、攻撃者が既存のエンド・ユーザー・セッションを乗っ取ることが可能になるため、アプリケーションのセキュリティが侵害される可能性があります。詳細は、「セッションを再結合」についてを参照してください。

関連項目:

ディープ・リンク

アプリケーションのディープ・リンクを有効または無効にします。オプションは次のとおりです。

  • 有効: 特定のページへのURLは、最終的にそのページにリダイレクトされます(場合によってはユーザーのログイン後)。

  • 無効: URLに有効なセッションIDが含まれていない場合、Application Expressは新しいセッションを開始し、アプリケーションのホーム・ページにリダイレクトします。

たとえば、多くの場合、ブラウザは開いたタブのURLを保存し、再起動後にセッションをリストアしようとするため、ディープ・リンクが発生します。この動作は望ましくない場合があります(URLがマルチステップ・ウィザードの途中のページを指す場合など)。「無効化」を選択すると、Application Expressは新しいセッションを開始し、アプリケーションのホームページにリダイレクトします。

最大セッションの長さ

セッションが存続してこのアプリケーションで使用できる期間(秒単位)を定義します。

  • セッションの存続期間を制御する正の整数を入力します。

  • セッションを無期限に存続させる場合は、0を入力します。

  • ワークスペースレベルまたはインスタンスレベルで定義されたセッションの存続期間を使用する場合は、値を空のままにします。

セッション・タイムアウトURL

最大セッション存続期間を超えた際にリダイレクトされるオプションのURLを入力します。このURLのターゲット・ページは、Application Expressで実装された場合、パブリック・ページである必要があります。

このページの一般的な用途は、ユーザーにセッションの有効期間を知らせ、ログイン・リンクや他のオプションを表示することです。URLが入力されていない場合、ユーザーには、メッセージ「セッションがタイムアウトしました。」およびアプリケーションのホームページのリンクが表示されます。#LOGOUT_URL#を入力すると、Application Expressは、ユーザーがアプリケーションのログアウト・リンクをクリックした場合と同じようにログアウトを実行します。

次の3つの置換アイテムのみがサポートされます。

  • &APP_SESSION.

  • &SESSION.

  • &APP_ID.

このURLは特別な目的を持つため、リンクに&APP_SESSION.および&SESSION.のいずれも含める必要はありません。

最大セッション・アイドル時間

セッション・アイドル時間は、最後のページ・リクエストと次のページ・リクエストの間の時間です。オプションは次のとおりです。

  • このアプリケーションで使用するセッションのアイドル時間を制御するには、正の整数を入力します。

  • ワークスペース・レベルまたはインスタンス・レベルで定義されたアイドル期間を使用する場合は、値を空のままにします。

セッション・アイドル・タイムアウトURL

最大セッション・アイドル時間を超えた際にリダイレクトされるオプションのURLを入力します。このURLのターゲット・ページは、Application Expressで実装された場合、パブリック・ページである必要があります。このページの一般的な用途は、ユーザーにセッションの有効期間を知らせ、ログイン・リンクや他のオプションを表示することです。URLが入力されていない場合、ユーザーには、メッセージ「セッションがタイムアウトしました。」およびアプリケーションのホームページのリンクが表示されます。#LOGOUT_URL#を入力すると、Application Expressは、ユーザーがアプリケーションのログアウト・リンクをクリックした場合と同じようにログアウトを実行します。

このURLでは次の3つの置換アイテムのみがサポートされます:

  • &APP_SESSION.

  • &SESSION.

  • &APP_ID.

このURLは特別な目的を持つため、リンクに&APP_SESSION.および&SESSIONのいずれも含める必要はありません。

セッション・タイムアウト警告(秒)

セッション・タイムアウト警告は、セッションがタイムアウトになるまでの時間(最大セッションの長さ、または最大セッション・アイドル時間のいずれか)を秒単位で定義して、ユーザーに警告します。最大セッション・アイドル時間の警告の場合、ユーザーはセッションを延長する機会が与えられます。最大セッションの長さの警告の場合、セッション最大時間に達したときにデータが失われないよう、ユーザーに作業の保存が求められます。

  • このアプリケーションで使用するセッション・タイムアウト警告時間を制御するには、正の整数を入力します。

  • このアプリケーションで使用されるセッションのセッション・タイムアウト警告をオフにするには、0を入力します。

  • ワークスペース・レベルまたはインスタンス・レベルで定義された警告時間を使用する場合は、値を空のままにします。

6.9.2.2.4 セッション・ステート保護

セッション・ステート保護を有効にすると、ハッカーがアプリケーション内のURLを改ざんするのを防ぐことができます。URL改ざんにより、プログラム・ロジック、セッション・ステートの内容および情報プライバシが悪影響を受ける可能性があります。この表は、「セッション・ステート保護」で使用可能な属性について説明しています。

表6-11 「セッション・ステート保護」

属性 説明

ブックマークの無効化

「ブックマークの無効化」をクリックすると、この非表示のアプリケーション属性(チェックサム・ソルト)のソルト属性をいつでもリセットできます。このボタンをクリックすると、以前に生成されたチェックサムを含むブックマーク済URLは、その後にアプリケーションへのアクセスに使用されるときに失敗します。

ヒント: 「ブックマークの無効化」をクリックして、ブックマーク・ハッシュ関数を変更し、チェックサムを計算する別のアルゴリズムに切り替えることもできます。

セッション・ステート保護の管理

「セッション・ステート保護の管理」をクリックして、セッション・ステート保護を構成します。

セッション・ステート保護

「セッション・ステート保護」リストから選択して、アプリケーションのセッション・ステート保護を有効化または無効化します。「有効」を選択すると、ページおよびアイテム・レベルで定義されたセッション・ステート保護コントロールがオンになります。詳細は、フィールドレベル・ヘルプを参照してください。

この後に作成されるURLの許可

ブックマーク済リンクにチェックサムが含まれ、セッション・ステート保護がアプリケーションに対して有効な場合、ブックマーク済リンクをこのアプリケーションのページへのアクセスに使用できるようになった日時がリストされます。

この日付および時間より前に作成されたブックマークは、ブックマーク済リンクにチェックサムが含まれ、セッション・ステート保護がアプリケーションに対して有効な場合、このアプリケーションへのアクセスに使用できません。チェックサムを含まないブックマークまたは不要なチェックサムを含むブックマークは、この属性による影響を受けません。これらの有用性は、他の基準を使用して決定されます。非表示のアプリケーション属性(チェックサム・ソルト)は、計算時と、ページのレンダリング時に生成されたf?p= URLに含まれるチェックサムのその後の検証時に使用されます。チェックサムは、「セッション・ステート保護」がアプリケーションに対して有効な場合に含まれます。このチェックサム・ソルト属性は、「ブックマークの無効化」ボタンをクリックすると、いつでもリセットできます。

ブックマーク・ハッシュ関数

ブックマーク可能なURLの、アプリケーション・レベルおよびユーザー・レベルのチェックサムを作成するために使用されます。

関連項目:

URL改ざんの防止

6.9.2.2.5 ブラウザ・セキュリティ

この表は、「ブラウザ・セキュリティ」で使用可能な属性について説明しています。

表6-12 ブラウザ・セキュリティ

属性 説明

キャッシュ

「キャッシュ」を使用して、アプリケーションのページ・コンテンツのブラウザによるキャッシュを有効化または無効化します。有効化すると、ブラウザはこのアプリケーションのページ・コンテンツを、メモリー内とディスク上の両方のキャッシュに保存します。キャッシュが有効になっている場合に、ブラウザの「戻る」ボタンがクリックされると、通常、ページはサーバーからではなくキャッシュからロードされます。無効にすると、ブラウザはアプリケーションのページ・コンテンツを保存しないように指示され、URLが変更されるたびにサーバーから最新のページ・コンテンツをリクエストします。

機密データが保存されないようにするために、この属性を無効にすることをお薦めします。そうしない場合、ログアウト後にブラウザ履歴で前に戻り、以前のセッションのキャッシュされたコンテンツを表示できる可能性があります。ブラウザのキャッシュを無効にすると、部分ページ・リフレッシュを使用するページ(対話モード・レポートを含むページなど)での問題も回避できます。

この属性が「無効」に設定されている場合、ページ・コンテンツをディスク上またはメモリー内にキャッシュしないようにブラウザに指示するHTTPヘッダーcache-control: no-storeがApplication Expressにより送信されます。この機能には、HTTPヘッダー・レスポンス変数cache-controlをサポートする最新のブラウザが必要であることに注意してください。

フレームへの埋込み

ブラウザのフレーム内にアプリケーションのページを表示するかどうかを制御します。使用可能なオプションは次のとおりです。

  • 拒否: 実行するサイトに関係なく、ページをフレームに表示できません。

  • 同じ起点から許可: ページ自体と同じ起点のフレームにのみ、ページを表示できます。

  • 許可: ページを任意のフレームで表示できます。

フレーム内のページの表示は、クリックジャック攻撃で不正に使用される場合があります。クリックジャック攻撃では、攻撃者は複数のレイヤーを使用して、ユーザーがトップ・レベル・ページをクリックしようとしたときに、別のページ上のボタンやリンクをクリックさせます。したがって、意図したページに対するクリック(またはキーストローク)が攻撃者によりハイジャックされ、別のページに移動させられます。

詳細は、フィールドレベル・ヘルプを参照してください。

HTMLエスケープ・モード

Oracle Application Expressで特殊文字をエスケープする方法を定義します。オプションは次のとおりです。

  • 基本: &"<および>をエスケープします

  • 拡張: &"<>'/およびASCII以外の文字(データベース文字セットがAL32UTF8ではない場合)をエスケープします

HTTPレスポンス・ヘッダー

Oracle Application Expressが各レスポンスで送信する必要があり、別の方法(たとえば、「フレームへの埋込み」属性を使用したX-Frame-Options)でサポートしていないアプリケーション固有の追加のHTTPヘッダーを入力します。

次に例を示します。

X-XSS-Protection: 1; mode=block

X-Content-Type-Options: nosniff

ヒント:

「キャッシュ」および「フレームへの埋込み」のいずれにも、HTTPヘッダー・レスポンス変数X-Frame-Optionsをサポートする最新のブラウザが必要です。

6.9.2.2.6 データベース・セッション

この表は、「データベース・セッション」で使用可能な属性について説明しています。

表6-13 データベース・セッション

属性 説明

解析対象スキーマ

アプリケーション内のすべてのSQLおよびPL/SQLが解析対象となるスキーマを指定します。#OWNER#を使用すると、SQL問合せおよびPL/SQL (リージョンやプロセスなど)でこの値を参照できます。

初期化PL/SQLコード

この属性を使用して、現在の「ページの表示」または「ページの受入れ」リクエストに関連付けられたデータベース・セッションに対してコンテキストを設定するPL/SQLブロックを入力します。ここに入力したブロックは、ページ・リクエスト時の非常に早い段階(APP_USER値が確立された直後)で実行されます。APP_USERの値(:APP_USERまたはv('APP_USER')を使用)をブロック内で使用できます。セッション・ステート内の他のアイテムの値も参照できますが、これらのアイテムは現在のページ・リクエストが開始する前にセッション・ステートに確立されている必要があります。例を表示するには、フィールドレベル・ヘルプを参照してください。

PL/SQLコードのクリーンアップ

この属性を使用して、ページ・プロセスの最後に実行するPL/SQLブロックを入力します。これは、VPDコンテキストまたはデータベース・リンクなど、使用されたリソースの解放またはクリーンアップに使用できます。例を表示するには、フィールドレベル・ヘルプを参照してください。

ランタイムAPIの使用状況

このアプリケーションによる、アプリケーションとワークスペース・データを変更するOracle Application Express APIへの実行中のアクセス方法を制御します。オプションは次のとおりです。

  • このアプリケーションを変更: アプリケーションはアプリケーション自体を変更できます。

  • 他のアプリケーションを変更: アプリケーションはワークスペース内の他のアプリケーションを変更できます。

  • ワークスペース・リポジトリを変更: アプリケーションはワークスペース・ユーザーとグループを変更できます。