このセクションでは、Oracle Application Expressにセキュリティのベスト・プラクティスを実装する方法を説明します。管理者は、Oracle Application Expressインストールのセキュリティを保証する必要があります。開発者は、セキュアなアプリケーションを構築する必要があります。
内容は次のとおりです。
このセクションでは、Oracle Application Express管理者のためのセキュリティのベスト・プラクティスについて説明します。
内容は次のとおりです。
埋込みPL/SQLゲートウェイは、XML DB HTTP Protocol Listenerの一部としてデータベースで実行されます。XML DB HTTP Protocol Listenerおよび埋込みPL/SQLゲートウェイには、Oracle HTTP Serverおよびmod_plsql
と同等の主要機能があります。HTTPリスナーは、Oracle Application Expressがインストールされているデータベースと同じデータベースで実行されるため、HTTPリスナーをデータベースから分けることはできません。このため、インターネット上で実行されるアプリケーションには、埋込みPL/SQLゲートウェイを使用しないことをお薦めします。また、埋込みPL/SQLゲートウェイでは、mod_plsql
を使用するOracle HTTP Serverほどに柔軟な構成および詳細なログは提供されません。
Oracle HTTP Serverは、mod_plsql
プラグインを使用してOracle Database内のOracle Application Expressエンジンと通信します。mod_plsql
ファンクションは、WebサーバーとOracle Database内のOracle Application Expressエンジン間の通信ブローカとして機能します。
mod_plsql
の各リクエストは、Database Access Descriptor(DAD)というデータベースにアクセスする際に使用する一連の構成値に関連付けられます。mod_plsql
には、リクエストされたプロシージャのさらなる処理を許可または禁止することができるPlsqlRequestValidationFunction
というDADパラメータがあります。このパラメータを使用すると、DADからの実行の許可対象にしないパッケージおよびプロシージャのコールをブロックすることで、PL/SQLアプリケーションにさらに強力なセキュリティを実装できます。Oracle Application ExpressのDAD構成では、PlsqlRequestValidationFunction
ディレクティブに値wwv_flow_epg_include_modules.authorize
を使用することをお薦めします。
PlsqlRequestValidationFunction
パラメータの目的は、mod_plsql
によってどのプロシージャが起動されるかを制御することです。デフォルトでは、Oracle Application Expressのパブリックなエントリ・ポイントのみが許可されます。これは、Oracle Application Expressに付属する検証ファンクションを使用して拡張できます。詳細は、Oracle Application Express管理ガイドのOracle Application Expressへのアクセスの制限に関するセクションを参照してください。
Secure Sockets Layer(SSL)は、インターネット上に転送されるデータのセキュリティを管理するためのプロトコルです。SSLは、HTTPSプロトコルを使用してWebアプリケーションに実装されます。暗号化されていない(クリアテキストの)通信チャネルで機密データが送信されないように、SSL(HTTPSプロトコル)を使用してOracle Application Expressアプリケーションを実行することをお薦めします。
Oracle Application Express管理サービスのサービスの管理ページで「HTTPSが必要」属性を「はい」に設定すると、Oracle Application Expressインスタンスとすべての関連アプリケーションで、HTTPSを要求することができます。
「HTTPSが必要」属性を「はい」に設定してログアウトすると、プロトコルにHTTPSが使用されないかぎり、Oracle Application Express管理サービスおよびOracle Application Express作業領域に開発者または管理者としてログインできなくなります。
参照: Oracle Application Express管理ガイドの「HTTPSの必要性」 |
Oracle Application ExpressとOracle BI Publisherを統合する場合は、Secure Sockets Layer(SSL)を使用することをお薦めします。Oracle BI Publisherサーバー用にSSL(HTTPSプロトコル)を構成したら、ウォレットを作成して、内部管理環境設定でレポート・サーバーにHTTPSプロトコルを指定する必要があります。
参照: Oracle Application Express管理ガイドの「ウォレット情報の構成」および「レポート出力の構成」 |
作業領域の管理者および開発者は、Oracle Application Expressの開発環境にログインし、作業領域内で開発されたアプリケーションに対するエンド・ユーザーの認証を行うためのユーザー・アカウントを作成できます。Oracle Application Express管理者は、これらのアカウントのパスワードに対して、パスワードの複雑性ルール(またはポリシー)を作成できます。これらのルールは、全作業領域で、インストールのすべてのアカウントに適用されます。
次に、パスワードの複雑性ポリシーの例を示します。
すべてのパスワードには、次が含まれている必要があります。
1つ以上の大文字。
1つ以上の数字。
6つ以上の文字。
他にも多くのバリエーションが考えられることに注意してください。各Oracle Application Expressインスタンスに対して、管理者がパスワードの複雑性ポリシーを作成することをお薦めします。詳細は、Oracle Application Express管理ガイドの「すべての作業領域に対するログイン制御の有効化」、「パスワード・ポリシーについて」および「作業領域に対するログイン制御の有効化」を参照してください。
サイト管理者は、すべての管理者アカウント、開発者アカウントおよびエンド・ユーザー・アカウントに対し、そのアカウントに以前使用されたパスワードの履歴に基づいて、パスワードの再利用を制限することができます。
パスワードの再利用を制限するには、次のステップを実行します。
SQL*Plusを起動して、Oracle Application Expressがインストールされたデータベースに、apex_administrator_roleロールを使用するか、SYSDBA
ロールを指定するSYS
として接続します。次に例を示します。
Windowsの場合:
SYSTEM_DRIVE:\ sqlplus /nolog SQL> CONNECT SYS as SYSDBA Enter password: SYS_password
UNIXおよびLinuxの場合:
$ sqlplus /nolog
SQL> CONNECT SYS as SYSDBA
Enter password: SYS_password
次の文を実行します。
ALTER SESSION SET CURRENT_SCHEMA = APEX_040000;
次の文を実行します。
BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('PASSWORD_HISTORY_DAYS',365); COMMIT; END; /
これによって、作成または更新するパスワードは、過去365日間にそのアカウント用として使用されていないものに制限されます。以前に使用されたパスワード(実際は、パスワードのハッシュ表現)は、Oracle Application Express 4.0をインストールしたときから記録されます。
この機能を無効にするには、パラメータ値に0を指定して前述のブロックを実行します。次に例を示します。
BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('PASSWORD_HISTORY_DAYS',0); COMMIT; END; /
ヒント: 開発者は、Oracle Application Express APIリファレンスに記載されているAPEX_UTIL.STRONG_PASSWORD_CHECK プロシージャおよびAPEX_UTIL.STRONG_PASSWORD_VALIDATION ファンクションも使用することができます。 |
Oracle Application Expressのランタイム環境では本番アプリケーションを実行できますが、管理用のWebインタフェースは使用できず、これらのアプリケーションを直接開発することはできません。
機密の本番Oracle Application Expressアプリケーションは、Oracle Application Expressのランタイム・インストールで実行することをお薦めします。ランタイム・インストールでは、Webベースのアプリケーション開発環境が使用されないため、Application Builder、SQL Workshopおよび本番インストールに関係するユーティリティが使用できません。また、ランタイム環境に含まれるのは、アプリケーションの実行に必要なOracle Application Expressデータベース・オブジェクトおよび権限のみであるため、より堅牢な環境になります。
参照: Oracle Application Express管理ガイドの「ランタイム環境の管理」 |
「セッション・タイムアウト」属性を構成すると、アプリケーションの公開を抑制できます。ユーザーは、長時間コンピュータを操作しなかったり、アプリケーションを終了せずにコンピュータの元を離れることが頻繁にあります。このため、アプリケーションのユーザー・アイデンティティが、権限のないユーザーによって簡単に引き継がれる可能性があります。セッション・タイムアウトおよびアイドル・タイムアウトを設定すると、指定したタイムアウトの後、ユーザーは自動的にアプリケーションからログアウトされます。
「セッション・タイムアウト」属性には、次のものがあります。
最大セッションの長さ
セッション・タイムアウトURL
最大セッション・アイドル時間
アイドル・タイムアウトURL
アプリケーション・レベルでのこれらの属性の構成の詳細は、「セッション・タイムアウト」を参照してください。Oracle Application Expressインスタンス全体でのこれらの属性の構成の詳細は、Oracle Application Express管理ガイドの「セッション・タイムアウトの構成」を参照してください。
Oracle Database 11gでは、ネットワーク・サービスとの通信機能がデフォルトで無効になっています。 このため、Oracle Database 11gでOracle Application Expressを実行している場合は、新しいDBMS_NETWORK_ACL_ADMIN
パッケージを使用して、APEX_040000
データベース・ユーザーにすべてのホストに対する接続権限を付与する必要があります。これらの権限を付与しないと、次の場合に問題が発生します。
Oracle Application Expressによる外部への電子メールの送信
ユーザーはAPEX_MAIL
パッケージからメソッドをコールできますが、外部へ電子メールを送信するときに問題が発生します。
Oracle Application Express内のWebサービスの使用
PDF/レポートの印刷
(「検索」リンクを使用した)オンライン・ヘルプ・コンテンツの検索
内容は次のとおりです。
ヒント: このセクションで説明されている例を実行するには、データベースのcompatible初期化パラメータを少なくとも11.1.0.0.0に設定する必要があります。11g データベースではデフォルトでパラメータが正しく設定されますが、以前のバージョンから11g にアップグレードされたデータベースでは正しく設定されていない場合があります。データベースの初期化パラメータの変更の詳細は、Oracle Database管理者ガイドのOracle Databaseの作成と構成に関する項を参照してください。 |
次の例では、APEX_040000
データベース・ユーザーにホストに対する接続権限を付与する方法が示されています。
DECLARE ACL_PATH VARCHAR2(4000); ACL_ID RAW(16); BEGIN -- Look for the ACL currently assigned to '*' and give APEX_040000 -- the "connect" privilege if APEX_040000 does not have the privilege yet. SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL; -- Before checking the privilege, make sure that the ACL is valid -- (for example, does not contain stale references to dropped users). -- If it does, the following exception will be raised: -- -- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040000' -- ORA-06512: at "XDB.DBMS_XDBZ", line ... -- SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID FROM XDB.XDB$ACL A, PATH_VIEW P WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND EQUALS_PATH(P.RES, ACL_PATH) = 1; DBMS_XDBZ.ValidateACL(ACL_ID); IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040000', 'connect') IS NULL THEN DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH, 'APEX_040000', TRUE, 'connect'); END IF; EXCEPTION -- When no ACL has been assigned to '*'. WHEN NO_DATA_FOUND THEN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml', 'ACL that lets power users to connect to everywhere', 'APEX_040000', TRUE, 'connect'); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*'); END; / COMMIT;
次の例は、ローカル・ホスト上のリソースへのアクセス方法について、より低い権限で実行するデモンストレーションです。この例では、Oracle Application Expressオンライン・ヘルプの索引付けを有効にし、また電子メールとPDF印刷用サーバーもローカル・ホスト上に存在する場合には、これらも有効にします。
DECLARE ACL_PATH VARCHAR2(4000); ACL_ID RAW(16); BEGIN -- Look for the ACL currently assigned to 'localhost' and give APEX_040000 -- the "connect" privilege if APEX_040000 does not have the privilege yet. SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS WHERE HOST = 'localhost' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL; -- Before checking the privilege, make sure that the ACL is valid -- (for example, does not contain stale references to dropped users). -- If it does, the following exception will be raised: -- -- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040000' -- ORA-06512: at "XDB.DBMS_XDBZ", line ... -- SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID FROM XDB.XDB$ACL A, PATH_VIEW P WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND EQUALS_PATH(P.RES, ACL_PATH) = 1; DBMS_XDBZ.ValidateACL(ACL_ID); IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040000', 'connect') IS NULL THEN DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH, 'APEX_040000', TRUE, 'connect'); END IF; EXCEPTION -- When no ACL has been assigned to 'localhost'. WHEN NO_DATA_FOUND THEN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('local-access-users.xml', 'ACL that lets power users to connect to everywhere', 'APEX_040000', TRUE, 'connect'); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('local-access-users.xml','localhost'); END; / COMMIT;
前述のスクリプトの実行後に「ORA-44416: 無効な ACL」
エラーを受信したら、次の問合せを使用して無効なACLを識別します。
REM Show the dangling references to dropped users in the ACL that is assigned REM to '*'. SELECT ACL, PRINCIPAL FROM DBA_NETWORK_ACLS NACL, XDS_ACE ACE WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL AND NACL.ACLID = ACE.ACLID AND NOT EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL);
次に、次のコードを実行してACLを修正します。
DECLARE ACL_ID RAW(16); CNT NUMBER; BEGIN -- Look for the object ID of the ACL currently assigned to '*' SELECT ACLID INTO ACL_ID FROM DBA_NETWORK_ACLS WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL; -- If just some users referenced in the ACL are invalid, remove just those -- users in the ACL. Otherwise, drop the ACL completely. SELECT COUNT(PRINCIPAL) INTO CNT FROM XDS_ACE WHERE ACLID = ACL_ID AND EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL); IF (CNT > 0) THEN FOR R IN (SELECT PRINCIPAL FROM XDS_ACE WHERE ACLID = ACL_ID AND NOT EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL)) LOOP UPDATE XDB.XDB$ACL SET OBJECT_VALUE = DELETEXML(OBJECT_VALUE, '/ACL/ACE[PRINCIPAL="'||R.PRINCIPAL||'"]') WHERE OBJECT_ID = ACL_ID; END LOOP; ELSE DELETE FROM XDB.XDB$ACL WHERE OBJECT_ID = ACL_ID; END IF; END; / REM commit the changes. COMMIT;
ACLを修正したら、このセクションにある最初のスクリプトを実行して、APEX_040000
ユーザーにACLを適用する必要があります。「ホストに対する接続権限の付与」を参照してください。
Oracle Application Expressオンライン・ヘルプを検索する機能がOracle TextおよびURLデータストアによって実現します。Oracle TextのURLデータストアをDatabase 11gR2以上で使用する場合のデフォルトの動作と権限に変更があります。
Oracle Database 11gR2でOracle Application Expressオンライン・ヘルプを検索しようとすると次のエラーが表示される場合は、Oracle TextのURLデータストアを使用する権限がデータベース・ユーザーAPEX_040000
に付与されていません。
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine ORA-20000: Oracle Text error: DRG-10758: index owner does not have the privilege to use file or URL datastore
Oracle Application Expressでオンライン・ヘルプの索引付けを有効にするには、Oracle TextのURLデータストアを使用するための権限がAPEX_040000
データベース・ユーザーに付与されている必要があります。それには、この特定の権限をデータベース・ロールに割り当てた後、このロールをAPEX_040000
データベース・ユーザーに付与します。
Oracle TextのURLデータストアを使用するための権限がデータベース・ロールに付与されているかどうかを確認するには、次のステップを実行します。
SQL*Plusを起動して、SYS
としてSYSDBA
ロールを指定し、Oracle Application Expressがインストールされているデータベースに接続します。次に例を示します。
Windowsの場合:
SYSTEM_DRIVE:\ sqlplus /nolog SQL> CONNECT SYS as SYSDBA Enter password: SYS_password
UNIXおよびLinuxの場合:
$ sqlplus /nolog
SQL> CONNECT SYS as SYSDBA
Enter password: SYS_password
次のコマンドを実行します。
SELECT par_value FROM ctxsys.ctx_parameters WHERE par_name = 'FILE_ACCESS_ROLE';
NULL
、またはOracle TextのURLデータストアを使用する権限が付与されているデータベース・ロールが戻されます。
ステップ2で何も値が戻されない場合は、次の例に示すように新しいデータベース・ロールを作成します。
CREATE ROLE APEX_URL_DATASTORE_ROLE;
次の文を使用して、このロールをデータベース・ユーザーAPEX_040000
に付与します。
GRANT APEX_URL_DATASTORE_ROLE to APEX_040000;
ステップ2で値が戻された場合は、例のAPEX_URL_DATASTORE_ROLE
のかわりに、このデータベース・ロール名を使用します。
最後に、ステップ2で値が戻されなかった場合は、Oracle Text APIを使用して、次の文で新しく作成したデータベース・ロールに権限を付与します。
EXEC ctxsys.ctx_adm.set_parameter('file_access_role', 'APEX_URL_DATASTORE_ROLE');
このセクションでは、Oracle Application Express開発者のためのセキュリティのベスト・プラクティスについて説明します。
内容は次のとおりです。
パスワード・アイテムは、Webブラウザ画面に入力されたテキストを表示しません。パスワード・アイテムを作成するときは、セッション・ステートを保存しないパスワード属性を使用することをお薦めします。これによって、パスワードがセッション・ステート表のデータベースに保存されるのを回避できます。
設定可能なパスワード・アイテム・タイプ属性は、次のとおりです。
必須の値: 「はい」に設定し、ページ・アイテムが表示されている場合、Application Expressでは、ページの送信時にNOT NULL検証が自動的に実行されます。「いいえ」に設定すると、検証が行われず、NULL値が受け入れられます。
[Enter]を押すと送信: 「はい」に設定した場合、ユーザーがフィールドで[Enter]キーを押すと、ページが送信されます。
状態を保存しない: 「はい」に設定すると、パスワードがセッション・ステートに保存されません。セキュリティ上の理由により、この属性は常に「はい」に設定する必要があります。「いいえ」に設定する場合は、「セッション・ステートに暗号化された値を保存」属性を「はい」に設定することを考慮してください。
認可スキーム: オプションで認可スキームを選択します。このコンポーネントをレンダリングまたは処理するためには、この認可スキームがTRUEと評価される必要があります。
セッション・ステート保護: この属性を「制限なし」または「制限付き」に設定して、セッション・ステート保護のレベルを選択できます。
制限なし: URLまたはフォームでアイテムを渡して、アイテムを設定できます。URLにチェックサムは必要ありません。
制限付き: アイテムをブラウザから設定することはできません。アイテムの値の設定方法を内部プロセス、計算などに制限する場合は、このオプションを使用します。この属性は、データ・エントリ・アイテムとして使用できないアイテムのみに適用され、「セッション・ステート保護」が無効になっていても常に監視されます。
セッション・ステートに暗号化された値を保存: 機密のセッション・ステートは、Application Expressセッション・ステート管理表に格納するときに暗号化することができます。このアイテムの暗号化されたセッション・ステートを保持するには、この値を「はい」に設定します。詳細は、「セッション・ステートおよびセキュリティについて」を参照してください。
問題を引き起こす可能性のあるパスワード・アイテムは、次のいずれかです。
セッション・ステートを保存しないパスワード・アイテム・タイプを1つも使用しないもの
暗号化していない値をセッション・ステートに格納するもの
問題を引き起こす可能性のあるパスワード・アイテムを識別するには、「セキュリティ・プロファイル」および「パスワード・アイテム」レポートを使用します。
内容は次のとおりです。
「セキュリティ・プロファイル」レポートを表示するには、次のステップを実行します。
「作業領域」ホームページにナビゲートします。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーション・ビルダーのホームページが表示されます。
「タスク」リストで「アプリケーション間レポート」をクリックします。
「セキュリティ」で、「セキュリティ・プロファイル」レポートをクリックします。
このレポートには、現在のワークスペース内のすべてのアプリケーションに関する次の情報が表示されます。
アプリケーション
名前
解析対象スキーマ
アプリケーション・レベル認可スキーム
認証
認可スキーム
認可スキーム
ページ
暗号化アイテム
問題を引き起こす可能性のあるパスワード・アイテム
問題を引き起こす可能性のあるパスワード・アイテムを識別するには、次のステップを実行します。
「作業領域」ホームページにナビゲートします。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーション・ビルダーのホームページが表示されます。
「タスク」リストで「アプリケーション間レポート」をクリックします。
「セキュリティ」で、「パスワード・アイテム」をクリックします。
「パスワード・アイテム」レポートには、アプリケーション内にあるすべてのパスワード・アイテムが、暗号化を使用するかどうかおよびステートを保存するかどうかとともに表示されます。いずれも行わないパスワード・アイテムは、「問題を引き起こす可能性」
とハイライトされます。
ヒント: パスワード・アイテムを含むページで、ページ属性「フォームのオートコンプリート」を「オフ」に設定します。この属性を「オフ」に設定すると、Webブラウザによって、ページでアイテムのオートコンプリートが試行されなくなります。この属性の詳細は、表6-8「検証方法」を参照してください。 |
Oracle Application Expressアプリケーション・ページにアクセスすると、セッションIDを含む多数のリンクがWebブラウザのロケーション・ウィンドウに表示されます。アプリケーションがパブリックにアクセス可能であり、電子メールやメッセージング・サービスなどを使用してユーザーが他のアプリケーション・ユーザーにいずれかのリンクを伝えた場合、受信者はそのリンクを使用して即座に元のユーザーのセッションを共有できるようになります。この場合、両方のユーザーがアプリケーションを使用すると、画面の動作が予測不可能で再現が困難なものになるため、いずれのユーザーにとっても負の影響となります。これを回避するため、ログイン認証の入力が不要なすべてのアプリケーションに対して、ゼロ・セッションID機能を使用することをお薦めします。詳細は、「セッションIDにゼロを使用したブックマークの容易化」を参照してください。
クロスサイト・スクリプティング(XSS)は、動的に生成されるWebページを利用するセキュリティ攻撃です。XSS攻撃では、ユーザーのブラウザに読み込まれたときにアクティブになるスクリプトがWebアプリケーションに送信されます。これらのスクリプトがアクティブになると、データまたは場合によってはセッション資格証明が盗まれ、それらの情報が攻撃者に送信される可能性があります。
悪意のあるコードがOracle Application Expressアプリケーションに侵入すると、通常のページ・レンダリング時に、そのコードがアプリケーション内のHTMLリージョンや他の場所にレンダリングされる可能性があります。セッション・ステートへの不正なコードの挿入を阻止するため、Application Expressエンジンは特定の場合に文字をエスケープします。
内容は次のとおりです。
HTMLリージョンなどの静的表示領域では、&ITEM.
表記法を使用してセッション・ステートを参照できます。静的表示領域の例には、HTMLリージョン、ページのヘッダーとフッター、リージョンのヘッダーとフッター、リージョン・タイトル、ボタン・ラベル、ヘルプ・テキスト、フォーム・アイテム・ラベルおよび要素の後のテキスト、テンプレート、(フィールド・テキストの前後の)ラジオ・グループ、イベント成功メッセージ、イベント・エラー・メッセージ、ナビゲーション・バー属性、アプリケーション静的置換文字列値、チャート・ラベルおよび凡例、ブレッドクラムおよびリスト・フレーム・テキスト、カレンダ・テキスト、ラベル、凡例などがあります。
セッション・ステートがこのように参照される場合、ページに表示される値には、参照されるアイテムが「表示のみ」で「セッション・ステートの保存」属性が「いいえ」に設定されている場合にエスケープされる特殊文字(<
、>
、&
、"
)が含まれません。
参照されるアイテムに「セッション・ステートの保存」属性が「いいえ」に設定されている「表示のみ」以外の表示タイプが含まれている場合、ページに表示される値には、エスケープされる特殊文字が含まれます。また、アプリケーション・レベルのアイテムには、安全な表示タイプが含まれているとみなされますが、実際にフォーム・アイテムに含まれているような表示プロパティは含まれていません。
Application Expressエンジンは、事前定義済のスマート・エスケープ・ルールを使用して、セッション・ステートからフェッチされた値をエスケープするかどうか、およびいつそれを実行するかを決定します。
このルールを使用するのは、前にリストした表示タイプを使用したアイテムは、通常フィルタ処理(エスケープ)されずにブラウザに表示されることを意図したHTMLを含むテキスト用であるためです。安全に行われる方法は、これらのタイプのアイテムが常にエスケープされてアプリケーションに入力されるルールを実施する以外にありません。たとえば、ユーザーが、Oracle Application Expressのf?p URL構文を使用して、一部のテキストを安全なアイテムに渡す場合、Application Expressエンジンは値をセッション・ステートに保存する際に特殊文字をエスケープします。これにより次の2つの結果が予想されます。
値に特殊文字が含まれていなかった場合、渡された値は指定されたとおりにセッション・ステートに保存される。
値に特殊文字が含まれていた場合、値をセッション・ステートに保存する際に特殊文字をエスケープする。
いずれの状況でも、アイテムは、現在、前述のHTMLリージョンなどの静的領域で&ITEM.
表記法を使用して安全に参照できます。
前にリストした安全なアイテム・タイプを使用して、ブラウザにHTMLマークアップを保持および表示します。たとえば、安全なページ・アイテムP1_XXX
(&P1_XXX
を使用)を参照して、太字で一部のテキストをレンダリングする要件があるとします。アイテムP1_XXX
には次のHTMLが含まれているとします。
<b>ABABABAB</b>
実行するには、アプリケーション・コントロール(計算、プロセス、アイテムのソース式、アイテムのデフォルト値など)を使用して、値をこれらの安全なアイテムに格納します。値をこのように挿入する場合は、コンテンツの安全性を確認します。これらの方法を使用する場合、Application Expressエンジンは、値をセッション・ステートに保存する際に特殊文字をエスケープしません。
安全なアイテムの安全性は、最終的に、アイテムがページにポストされず、ページ送信の一部としてApplication Expressエンジンに発行されないルールによって確認されます。
htp.p
などの方法を使用してセッション・ステートからフェッチし、レンダリングするアイテムは、必要に応じてコードで明示的にエスケープする必要があります。たとえば、ページ上のPL/SQL動的コンテンツ・リージョンで次のhtp.pを使用するとします。
htp.p(v('SOME_ITEM'));
セッション・ステートからフェッチするアイテムの値に予期しないタグやスクリプトが含まれる可能性がある場合は、リージョンで次のhtp.pを使用できます。
htp.p(htf.escape_sc(v('SOME_ITEM')));
ただし、フェッチする値を安全にレンダリングできることが確かな場合は、この値をエスケープする必要はありません。開発者は、出力をエスケープしない方が適切な場合を判断する必要があります。
次のように、このルールに従うことをお薦めします。
アイテムが「安全なアイテム表示タイプについて」に示される安全なタイプのいずれかでないかぎり、エスケープせずにセッション・ステートからフェッチされたアイテムを表示しないでください。
これを行うのは、開発者としてハッカーが悪意ある値を安全ではないアイテムにポストするのを防ぐ方法はないためです。アプリケーションがこれらのアイテムを一般ユーザーに見えるように表示しなくても、このルールに従わないと、ハッカーはアプリケーションを使用してXSS攻撃をマウントできることに注意してください。
Application Expressエンジンは、レポートのボディでレンダリングされるデータをエスケープします。レポートのヘッダーおよびメッセージにおけるセッション・ステートへの参照は、安全なアイテム・タイプの値はエスケープされず、その他のアイテム・タイプの値はエスケープされるように、スマート・エスケープ・ルールを使用してセッション・ステートからフェッチされます。
Oracle Application Expressは、データベース表にセッション・ステートを保持します。セッション・ステートがデータベース表で保持されるのは、サーバー側にセッション・ステートを格納すると、クライアント側に格納する場合よりセキュアになるためです。Oracle Application ExpressアプリケーションはステートレスHTTPプロトコルを使用するため、複数のページ・ビューにわたるアプリケーションのセッション・ステートがデータベース表に保持されます。各Oracle Application Expressアプリケーション・ユーザーの同期データベース接続を保持しない場合は、メモリーおよびデータベース・リソースの要件が大幅に削減されます。
開発者は、アプリケーション・ビルダーおよび組込みの監視ページを使用して、Oracle Application Expressアプリケーションによって格納されたセッション・ステートを問い合せることができます。開発者および管理者は、認証されている作業領域のアプリケーションにアクセスできます。
開発者のベスト・プラクティスには、次のものが含まれます。
プログラムの制御フローの標準的な実装の一環として、クリア・キャッシュ・ページ・プロセスまたはページへのナビゲートに使用されるURLのクリア・キャッシュ・ディレクティブを使用して不要な値のセッション・ステートを消去します。
ステートを保存しないパスワード・ページ・アイテム・タイプを使用します。これを使用すると、入力したパスワードがデータベースのセッション・ステート表に保存されません。
セッションに機密データを保持する必要がある場合は、Oracle Application Expressのセッション・ステート表に暗号化した形式で保存する必要があります。この機能を使用するには、ページ・アイテムの「セッション・ステートに暗号化された値を保存」属性を「はい」に設定します。暗号化されて保存された値は、読取り時に自動的に複合化されます。
注意: 暗号化されたセッション・ステートの目的は、Oracle Application Expressのセッション・ステート表、デバッグ出力またはデータベース・データファイルへのアクセス権を持っている可能性のある他のOracle Application Express開発者やデータベース管理者に、暗号化された値が読み取られないようにするセッション・ステートを保持することです。データベースのバックアップを行う際は、バックアップ・ファイルでデータを暗号化する機能を使用することをお薦めします。 |
ヒント: アイテム値は、最大で4000バイト長まで暗号化できます。4000バイトを超える値を暗号化しようとすると、エラー・メッセージが表示されます。 |
セッション・ステート保護は、ハッカーがアプリケーション内のURLを改ざんするのを防ぐための組込み機能です。URL改ざんにより、プログラム・ロジック、セッション・ステートの内容および情報プライバシが悪影響を受ける可能性があります。
セッション・ステート保護は2ステップのプロセスで有効にします。最初に、この機能を有効にします。次に、ページおよびアイテムのセキュリティ属性を設定します。
内容は次のとおりです。
セッション・ステート保護を有効にすると、「ページ・アクセス保護」属性と「セッション・ステート保護」項目属性が、f?p=
URL内に配置されたチェックサムとともに使用され、URL改ざんと、セッション・ステートに対する権限のないアクセスおよび変更が防止されます。セッション・ステート保護を無効にすると、セッション・ステート保護に関連するページ属性および項目属性が無視され、生成されるf?p=
URLにはチェックサムが含まれません。
セッション・ステート保護は、セキュリティ属性の編集ページまたはセッション・ステート保護ページから有効にできます。
セッション・ステート保護は2ステップのプロセスで有効にします。最初に、この機能を有効にします。次に、ページおよびアイテムのセキュリティ属性を設定します。これらのステップは、ウィザードを使用して実行するか、セッション・ステート保護ページでページおよびアイテムのセキュリティ属性を手動で設定して行います。
内容は次のとおりです。
セキュリティ属性の編集ページからセッション・ステート保護を有効にするには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」アイコンをクリックします。
「セキュリティ」で、「セキュリティ属性」をクリックします。
「セッション・ステート保護」までスクロールして、「セッション・ステート保護」リストの「有効」を選択します。
セッション・ステート保護を構成するには、「セッション・ステート保護の管理」をクリックします。
セッション・ステート保護ページが表示されます。
ウィザードを使用してセッション・ステート保護の有効化、無効化または構成を行うには、「保護の設定 >」をクリックします。
あるいは、適切なページまたはアイテム属性ページにナビゲートし、「セキュリティ」属性を設定します。
ヒント: セッション・ステート保護を無効にするには、同じステップを再度実行しますが、「有効」のかわりに「無効」を選択します。セッション・ステート保護を無効にしても、既存のセキュリティ属性の設定は変更されませんが、それらの属性は実行時に無視されます。 |
セッション・ステート保護を有効にすると、カレント・アプリケーションへのブックマーク・リンクが機能するかどうかに影響します。次の規則を考慮してください。
セッション・ステート保護を有効にした後に作成したブックマーク・リンクは、ブックマーク・リンクにチェックサムが含まれている場合に機能します。
セッション・ステート保護を有効にする前に作成したブックマーク・リンクは、ブックマーク・リンクにチェックサムが含まれている場合は機能しません。
チェックサムが含まれていないか、または不要なチェックサムが含まれているブックマークは、セッション・ステート保護の影響を受けません。
ページ・レンダリング時、Application Expressエンジンは、計算中に非表示のアプリケーション属性(チェックサムsalt)を使用し、f?p
URLに含まれているチェックサムを確認します。セッション・ステート保護を有効にすると、Application Expressエンジンにチェックサムが含まれます。チェックサムsalt属性を再設定するには、セキュリティ属性の編集ページで「ブックマークの無効化」をクリックします。「ブックマークの無効化」をクリックすると、以前に生成されたチェックサムを含むアプリケーションへのアクセスに使用するブックマークURLが失敗することに注意してください。
セッション・ステート保護を有効にするには、次のステップを実行します。
共有コンポーネント・ページにナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セッション・ステート保護」を選択します。
セッション・ステート保護ページが表示されます。セッション・ステート保護の現行のステータス(有効または無効)がページ上部に表示されることに注意してください。
「保護の設定」ボタンをクリックします。
「セッション・ステート保護」ウィザードが表示されます。
「操作の選択」で、「有効化」を選択して、「次へ」をクリックします。
次に、ページおよびアイテムのセキュリティ属性を設定するかどうか決定します。
「有効化」を選択して、「次へ」をクリックします。
「セッション・ステート保護の有効化」をクリックします。
ヒント: セッション・ステート保護を無効にするには、同じステップを実行しますが、「有効化」のかわりに「無効化」を選択します。セッション・ステート保護を無効にしても、既存のセキュリティ属性の設定は変更されませんが、実行時にはそれらが無視されます。 |
セッション・ステート保護を有効にした後、セキュリティ属性を構成します。セキュリティ属性は2つの方法で構成できます。
ウィザードを使用し、特定の属性カテゴリの値を選択する。この場合、選択内容がアプリケーション内のすべてのページおよびアイテムに適用されます。
個々のページ、アイテムまたはアプリケーション・アイテムの値を構成する。
内容は次のとおりです。
「セッション・ステート保護」ウィザードの最初のページでは、ページ、アイテムおよびアプリケーション・アイテムのセッション・ステート保護設定のサマリーを確認できます。
既存のセッション・ステート保護設定のサマリーを表示するには、次のステップを実行します。
「セッション・ステート保護」ページにナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セッション・ステート保護」を選択します。
セッション・ステート保護ページが表示されます。
「保護の設定」をクリックします。
ページ下部で次のレポートを開きます。
ページ・レベルのセッション・ステート保護サマリー
ページ・アイテムのセッション・ステート保護サマリー
アプリケーション・アイテムのセッション・ステート保護
ウィザードを使用してセッション・ステート保護を構成するときは、特定の属性カテゴリの値を設定します。この場合、選択内容がアプリケーション内のすべてのページおよびアイテムに適用されます。
ウィザードを使用してセッション・ステート保護を構成するには、次のステップを実行します。
「セッション・ステート保護」ページにナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セッション・ステート保護」を選択します。
セッション・ステート保護ページが表示されます。
「保護の設定」をクリックします。
「セッション・ステート保護」ウィザードが表示されます。
「操作の選択」で、「構成」を選択して、「次へ」をクリックします。
「ページ・アクセス保護」で、次のいずれかを選択します。
制限なし: セッション・ステート引数(Request、Clear Cache、Name/Values)の有無にかかわらず、URLを使用してページを要求できます。
引数にチェックサムが必要: URLにRequest、Clear CacheまたはName/Value引数が表示されている場合は、チェックサムも提供する必要があります。チェックサム・タイプは、引数として渡されるすべてのアイテムの最も厳密なセッション・ステート保護属性と互換性がある必要があります。
引数使用不可: URLを使用してページを要求できますが、Request、Clear CacheまたはName/Value引数は許可されません。
URLアクセスなし: URLを使用してページにアクセスできませんが、ページは、URLリダイレクトを行わない「ページにブランチ」ブランチ・タイプのターゲットにできます。
「アプリケーション・アイテム保護」で、次のいずれかの項目を選択します。
制限なし: URLまたはフォームでアイテム名/値を渡して、アイテムのセッション・ステートを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムも入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
制限付き - ブラウザから設定できない: URLまたはPOSTDATAを使用してアイテムを変更できません。アイテムの値を内部プロセス、計算などに設定できる方法を制限する場合は、このオプションを使用します。この属性は、データ・エントリ・アイテムとして使用できないアイテムのみに適用され、セッション・ステート保護が無効になっていても常に監視されます。
次の表示形式タイプのアプリケーション・アイテムまたはページ・アイテムについては、この属性を使用します。
テキストとして表示(特殊文字をエスケープし、状態は保存しない)
テキストとして表示(状態は保存しない)
テキストとして表示(LOVに基づき、状態は保存しない)
テキストとして表示(PL/SQLに基づき、状態は保存しない)
テキスト・フィールド(無効、状態を保存しない)
HTML表の停止および開始(ラベルのみ表示)
「ページのデータ・エントリ・アイテム保護」で、次のいずれかの項目を選択します。
制限なし: URLまたはフォームでアイテム名/値を渡して、アイテムのセッション・ステートを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
「ページの表示専用アイテム保護」で、次のいずれかの項目を選択します。
制限なし: URLまたはフォームでアイテムの名前/値を渡して、アイテムを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
制限付き - ブラウザから設定できない: URLまたはPOSTDATAを使用してアイテムを変更できません。アイテムの値を内部プロセス、計算などに設定できる方法を制限する場合は、このオプションを使用します。この属性は、セッション・ステート保護が無効になっていても、常に監視されます。
次の表示形式タイプについては、この属性を使用します。
テキストとして表示(特殊文字をエスケープし、状態は保存しない)
テキストとして表示(状態は保存しない)
テキストとして表示(LOVに基づき、状態は保存しない)
テキストとして表示(PL/SQLに基づき、状態は保存しない)
テキスト・フィールド(無効、状態を保存しない)
HTML表の停止および開始(ラベルのみ表示)
「次へ」をクリックします。
「終了」をクリックします。
ページのセッション・ステート保護を構成するには、次のステップを実行します。
「セッション・ステート保護」ページにナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セッション・ステート保護」を選択します。
セッション・ステート保護ページが表示されます。
「ページ」アイコンをクリックします。
ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。
「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。
テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。
「実行」ボタン: 検索を実行するか、フィルタを適用します。
チャートの表示: このコントロールを使用して、情報をチャートで表示します。
「アクション」メニュー: 「アクション」メニューを表示します。このメニューを使用して、この対話モード・レポートをカスタマイズします。詳細は、「「アクション」メニューの使用」を参照してください。
ページ番号を選択します。
「ページおよびアイテム保護の設定」ページが表示されます。次の情報がページの上部に表示されます。
アプリケーションIDおよび名前
セッション・ステート保護のステータス(有効または無効)
ページ番号
ページの名前
「ページ・アクセス保護」で、次のいずれかを選択します。
制限なし: セッション・ステート引数(Request、Clear Cache、Name/Values)の有無にかかわらず、URLを使用してページを要求できます。
引数にチェックサムが必要: URLにRequest、Clear CacheまたはName/Value引数が表示されている場合は、チェックサムも提供する必要があります。チェックサム・タイプは、引数として渡されるすべてのアイテムの最も厳密なセッション・ステート保護属性と互換性がある必要があります。
引数使用不可: URLを使用してページを要求できますが、Request、Clear CacheまたはName/Value引数は許可されません。
URLアクセスなし: URLを使用してページにアクセスできませんが、ページは、URLリダイレクトを行わない「ページにブランチ」ブランチ・タイプのターゲットにできます。
「アイテム・タイプ」で、「データ・エントリ・アイテム」または「表示専用アイテム」を選択します。
データ・エントリ・アイテムは、フォームを使用して変更できるアイテムであり、非表示アイテムもこれに含まれます。表示専用アイテムはレンダリングされるだけで、フォームとともに送信されません。
「データ・エントリ・アイテム」を選択した場合は、各アイテムのセッション・ステート保護レベルを選択します。
制限なし: URLまたはフォームでアイテム名/値を渡して、アイテムのセッション・ステートを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
「表示専用アイテム」を選択した場合は、各アイテムのセッション・ステート保護レベルを選択します。
制限なし: URLまたはフォームでアイテムの名前/値を渡して、アイテムを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
制限付き - ブラウザから設定できない: URLまたはPOSTDATAを使用してアイテムを変更できません。アイテムの値を内部プロセス、計算などに設定できる方法を制限する場合は、このオプションを使用します。この属性は、セッション・ステート保護が無効になっていても、常に監視されます。次の表示形式タイプについては、この属性を使用します。
テキストとして表示(特殊文字をエスケープし、状態は保存しない)
テキストとして表示(状態は保存しない)
テキストとして表示(LOVに基づき、状態は保存しない)
テキストとして表示(PL/SQLに基づき、状態は保存しない)
テキスト・フィールド(無効、状態を保存しない)
HTML表の停止および開始(ラベルのみ表示)
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
「変更の適用」をクリックします。
アイテムのセッション・ステート保護を構成するには、次のステップを実行します。
「セッション・ステート保護」ページにナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セッション・ステート保護」を選択します。
セッション・ステート保護ページが表示されます。
「ページ・アイテム」アイコンをクリックします。
ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。
「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。
テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。
「実行」ボタン: 検索を実行するか、フィルタを適用します。
「アクション・メニュー」: 「アクション」を表示します。レポート・ビューをカスタマイズするにはこのメニューを使用します。「「アクション」メニューの使用」を参照してください。
ページ番号を選択します。
ページおよびアイテムのセッション・ステート保護の編集ページが表示されます。次の情報がページの上部に表示されます。
アプリケーションIDおよび名前
セッション・ステート保護のステータス(有効または無効)
ページ番号
ページの名前
「ページ・アクセス保護」で、各アイテムのセッション・ステート保護レベルを選択します。
制限なし: セッション・ステート引数(Request、Clear Cache、Name/Values)の有無にかかわらず、URLを使用してページを要求できます。
引数にチェックサムが必要: URLにRequest、Clear CacheまたはName/Value引数が表示されている場合は、チェックサムも提供する必要があります。チェックサム・タイプは、引数として渡されるすべてのアイテムの最も厳密なセッション・ステート保護属性と互換性がある必要があります。
引数使用不可: URLを使用してページを要求できますが、Request、Clear CacheまたはName/Value引数は許可されません。
URLアクセスなし: URLを使用してページにアクセスできませんが、ページは、URLリダイレクトを行わない「ページにブランチ」ブランチ・タイプのターゲットにできます。
「アイテム・タイプ」で、「データ・エントリ・アイテム」または「表示専用アイテム」を選択します。
データ・エントリ・アイテムは、フォームを使用して変更できるアイテムであり、非表示アイテムもこれに含まれます。表示専用アイテムはレンダリングされるだけで、フォームとともに送信されません。
「データ・エントリ・アイテム」を選択した場合は、各アイテムのセッション・ステート保護レベルを選択します。
制限なし: URLまたはフォームでアイテム名/値を渡して、アイテムのセッション・ステートを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
「表示専用アイテム」を選択した場合は、各アイテムのセッション・ステート保護レベルを選択します。
制限なし: URLまたはフォームでアイテムの名前/値を渡して、アイテムを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
制限付き - ブラウザから設定できない: URLまたはPOSTDATAを使用してアイテムを変更できません。アイテムの値を内部プロセス、計算などに設定できる方法を制限する場合は、このオプションを使用します。この属性は、セッション・ステート保護が無効になっていても、常に監視されます。次の表示形式タイプについては、この属性を使用します。
テキストとして表示(特殊文字をエスケープし、状態は保存しない)
テキストとして表示(状態は保存しない)
テキストとして表示(LOVに基づき、状態は保存しない)
テキストとして表示(PL/SQLに基づき、状態は保存しない)
テキスト・フィールド(無効、状態を保存しない)
HTML表の停止および開始(ラベルのみ表示)
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
「変更の適用」をクリックします。
アプリケーション・アイテムのセッション・ステート保護を構成するには、次のステップを実行します。
「セッション・ステート保護」ページにナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セッション・ステート保護」を選択します。
セッション・ステート保護ページが表示されます。
「アプリケーション・アイテム」アイコンをクリックします。
ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。
「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。
テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。
「実行」ボタン: 検索を実行するか、フィルタを適用します。
「アクション・メニュー」: 「アクション」を表示します。レポート・ビューをカスタマイズするにはこのメニューを使用します。「「アクション」メニューの使用」を参照してください。
アプリケーション・アイテムを選択します。
「セキュリティ」で、「セッション・ステート保護」リストから次のいずれかを選択します。
制限なし: URLまたはフォームでアイテム名/値を渡して、アイテムのセッション・ステートを設定できます。URLにチェックサムは必要ありません。
注意: Ajaxを使用してこのアイテムの値をセッション・ステートに設定する必要がある場合は、アイテムに対して「制限なし」保護レベルを使用する必要があります(たとえば「動的アクション」の場合は、「値の設定」、「送信するページ・アイテム」または「カスケードLOV」、「送信するページ・アイテム」)。
制限付き - ブラウザから設定できない: URLまたはPOSTDATAを使用してアイテムを変更できません。アイテムの値を内部プロセス、計算などに設定できる方法を制限する場合は、このオプションを使用します。この属性は、データ・エントリ・アイテムとして使用できないアイテムのみに適用され、セッション・ステート保護が無効になっていても常に監視されます。次の表示形式タイプのアプリケーション・アイテムについては、この属性を使用します。
テキストとして表示(特殊文字をエスケープし、状態は保存しない)
テキストとして表示(状態は保存しない)
テキストとして表示(LOVに基づき、状態は保存しない)
テキストとして表示(PL/SQLに基づき、状態は保存しない)
テキスト・フィールド(無効、状態を保存しない)
HTML表の停止および開始(ラベルのみ表示)
チェックサムが必要 - アプリケーション・レベル: スキーマ固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。ユーザー・レベル・チェックサムまたはセッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: ユーザー・レベル: 作業領域、アプリケーションおよびユーザー固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。セッション・レベル・チェックサムも使用できます(次の項目を参照)。現行の作業領域の別のセッションで同じアプリケーションを実行しているユーザーが生成したチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
チェックサムが必要: セッション・レベル: カレント・セッション固有のチェックサムを入力する場合は、URLでアイテムの名前/値を渡して、アイテムのセッション・ステートを設定できます。カレント・セッションで生成されたチェックサムを含むURLによってのみ、このアイテムを設定できるようにする場合に、このオプションを使用します。
「変更の適用」をクリックします。
Oracle Application Expressを使用すると、ファイルをアップロードし、アップロードしたファイルにアクセスできるアプリケーションを簡単に作成できます。これらのファイルは、共通のファイル記憶域表にアップロードされます。データベース・ビューAPEX_APPLICATION_FILES
では、データベース・アカウント(または作業領域)に関連付けられたファイルが表示されますが、共通のファイル記憶域表へのプログラムを介したアクセスでは、認証が不要な場合もあり、アップロードされたファイルを他のユーザーが参照できます。このため、開発者は、「フォームおよびレポートでのBLOBサポートについて」に記載された方法か、次に示すOTNのファイル・アップロードに関するOracle Application ExpressのHow Toドキュメントに記載された方法を使用することをお薦めします。
http://www.oracle.com/technology/products/database/application_express/howtos/index.html
いずれの方法の場合も、アップロードされたファイルは、パブリック表ではなく、スキーマ表に格納されます。
認証は、ユーザーがアプリケーションにアクセスする前に、そのユーザーの本人確認を行うプロセスです。認証では、ユーザーにユーザー名とパスワードの指定を要求するか、またはデジタル証明書や保護キーを使用する可能性があります。
認証スキームを作成する場合、多くの事前構成済の認証スキームから選択するか、既存のアプリケーションから認証スキームをコピーするか、または独自のカスタム認証スキームを作成できます。
内容は次のとおりです。
アプリケーションがユーザーとどのように対話するかを決定します。すべてのユーザーが同じ権限を持つ場合、そのユーザーはパブリック・ユーザーとみなされます。ただし、アプリケーションが各ユーザーを個別に追跡する必要がある場合は、認証方式を指定する必要があります。
認証は、アプリケーションにアクセスする各ユーザーのアイデンティティの証明を行います。多くの認証プロセスで、ユーザーはなんらかの資格証明(ユーザー名とパスワードなど)を提供する必要があります。これらの資格証明は評価され、合格または不合格のいずれかとなります。資格証明が合格した場合、ユーザーはアプリケーションにアクセスできます。不合格の場合は、アクセスが拒否されます。
ユーザーの本人確認が行われると、Application Expressエンジンが組込み置換文字列APP_USER
の値を設定して、各ユーザーを追跡します。ユーザーがページ間をナビゲートすると、Application ExpressエンジンがAPP_USER
の値を設定して、本人確認を行います。Application Expressエンジンは、各ユーザーのセッション・ステートを追跡するための重要なコンポーネントとしてAPP_USER
を使用します。
プログラミングの観点では、次の構文を使用してAPP_USER
にアクセスできます。
PL/SQLを使用する場合
V('APP_USER')
PL/SQLまたはSQLのいずれかのバインド変数として使用する場合
:APP_USER
APP_USER
を使用すると、独自のセキュリティ・チェックおよび条件付き処理を実行できます。たとえば、次の表を作成したと想定します。
CREATE TABLE my_security_table ( user_id VARCHAR2(30), privilege VARCHAR2(30));
表を作成したら、この表にユーザー権限情報を移入して、ページ、タブ、ナビゲーション・バー、ボタン、リージョン、または、その他のコントロールやコンポーネントの表示の制御に使用できます。
アプリケーションを作成する場合、認証を含めるかどうかを決定する必要があります。次の選択肢があります。
認証不要の選択。Oracle Application Expressはすべてのユーザーの資格証明をチェックしません。アプリケーションのすべてのページには、すべてのユーザーからアクセスできます。
組込み認証スキームの選択。使用可能な事前構成済の認証スキームに基づいて、認証方式を作成します。選択するスキームによっては、Oracle 10giAS、Oracle Internet Directoryまたは他の外部サービスの対応するコンポーネントを構成する必要もあります。詳細は、「事前構成済の認証スキームの使用」および「アプリケーションに関連付けられた認証スキームの変更」を参照してください。
カスタム認証スキームの作成。カスタム認証方式を作成すると、認証インタフェースを完全に制御できます。この方法を実装するには、Application Expressエンジンが各ページ・リクエストを処理する前に実行するPL/SQLファンクションを提供する必要があります。このファンクションのブール戻り値によって、Application Expressエンジンが通常どおりにページを処理するか、または失敗ページを表示するかが決まります。「認可スキームの作成」を参照してください。
認証スキームを作成するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページが表示されます。
ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。
「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。
テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。
「実行」ボタン: 検索を実行するか、フィルタを適用します。
ビュー・アイコン: このコントロールを使用して、アイコン・ビューとレポート・ビューを切り替えます。ビューを変更するには、次のアイコンをクリックします。
アイコンの表示 (デフォルト): 各スキームを大きいアイコンとして表示します。
レポートの表示: 情報をレポートで表示します。イベントをフロー・チャートで表示するには、「フロー・チャート」列の下にある「表示」アイコンをクリックします。
「アクション・メニュー」: 「アクション」を表示します。レポート・ビューをカスタマイズするにはこのメニューを使用します。「「アクション」メニューの使用」を参照してください。
新しい認証スキームを作成するには、「作成」をクリックします。
次のいずれかの項目を選択して、スキームの作成方法を指定します。
事前構成済のスキームに基づいて。「既存の認証スキームの管理」を参照してください。
既存の認証スキームのコピーとして
最初から
画面に表示されるステップに従います。
事前構成済の認証スキームを選択すると、Oracle Application Expressによって、標準動作の認証およびセッション管理を行う認証スキームがアプリケーションに作成されます。
内容は次のとおりです。
公開資格証明を使用すると、ユーザー名を取得する組込みログイン・ページを使用して、自分のアプリケーションがすべてのユーザーからアクセス可能になります。この認証方式は、アプリケーションの開発時に有用です。
公開資格証明を設定するには、次の手順を実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページで、「作成」をクリックします。
「ギャラリからの事前構成済スキームに基づく」を選択します。
「ギャラリ」で、「ログイン・ページの表示およびOpen Doorアカウント資格証明の使用」を選択します。
ログイン・ページを指定し、「次へ」をクリックします。
名前を入力して、「スキームの作成」をクリックします。
Oracle Application Expressのアカウント資格証明は、Oracle Application Expressのユーザー・リポジトリで作成および管理される内部のユーザー・アカウント(Cookieユーザー・アカウントともいう)です。この方式を使用すると、これらのアカウントに対してアプリケーションが認証されます。
参照: Oracle Application Express管理ガイドの「Application Expressユーザーの管理」 |
Application Expressのアカウント資格証明は次のような場合に有効です。
ユーザー・アカウント・リポジトリを制御する場合
ユーザー名およびパスワードに基づいたセキュリティで十分な場合
シングル・サインオン・フレームワークへの統合が不要な場合
この方法は特に、ユーザー・グループを新しいアプリケーションで迅速に起動および実行する必要がある場合に適しています。
Application Expressアカウント資格証明を設定するには、次の手順を実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページで、「作成」をクリックします。
「ギャラリからの事前構成済スキームに基づく」を選択します。
「ギャラリ」で、「ログイン・ページの表示およびApplication Expressアカウント資格証明の使用」を選択します。
ログイン・ページを指定し、「次へ」をクリックします。
名前を入力して、「スキームの作成」をクリックします。
データベース・アカウント資格証明は、データベース・スキーマ・アカウントを使用します。この認証スキームでは、データベース・ユーザー(スキーマ)はローカル・データベースに存在している必要があります。この方法を使用する場合、ユーザーの認証にデータベース・アカウントのユーザー名およびパスワードが使用されます。
適用可能なアプリケーションの指定したユーザーごとに1つのデータベース・アカウントを持ち、ニーズに対応したデータベース・ツールによるアカウントのメンテナンスを行う場合に、データベース・アカウント資格証明は有効です。
データベース・アカウント資格証明を設定するには、次の手順を実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページで、「作成」をクリックします。
「ギャラリからの事前構成済スキームに基づく」を選択します。
「ギャラリ」で、「ログイン・ページの表示およびDatabaseアカウント資格証明の使用」を選択します。
ログイン・ページを指定し、「次へ」をクリックします。
名前を入力して、「スキームの作成」をクリックします。
ログイン・ページを使用する認証スキームは、Lightweight Directory Access Protocol(LDAP)を使用して、ログイン・ページで送信されるユーザー名およびパスワードを検証するように構成できます。
アプリケーション・ビルダーには、このオプションの構成方法を示すウィザードと編集ページが含まれています。これらのウィザードでは、この構成のために、ご使用のアプリケーションにアクセス可能なLDAPディレクトリがすでに存在していることと、LDAPディレクトリが資格証明の検証のSIMPLE_BIND_S
コールに応答できることを想定しています。LDAP資格証明の認証スキームを作成する場合、SSL、LDAPホスト名、LDAPポート、DN文字列、SSLの使用の有無、完全なDN、および完全なDNを使用しない場合のオプションの検索フィルタが要求され保存されます。オプションの事前処理ファンクションを指定して、APIに渡されるユーザー名の書式設定を調整できます。
LDAP資格証明の検証を設定するには、次の手順を実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページで、「作成」をクリックします。
「ギャラリからの事前構成済スキームに基づく」を選択します。
「ギャラリ」で、「ログイン・ページの表示およびLDAPディレクトリ資格証明の使用」を選択します。
ログイン・ページを指定し、「次へ」をクリックします。
次の情報を指定し、「次へ」をクリックします。
LDAPホスト
LDAPポート
SSLの使用
完全なDNの使用
LDAP識別名(DN)文字列
(オプション)検索フィルタ
(オプション) LDAPユーザー名編集ファンクション
特定のアイテムのヘルプを表示するには、アイテム・ラベルをクリックします。ヘルプが使用できる場合、アイテム・ラベルの上にカーソルを置くとアイテム・ラベルは赤に変わり、カーソルは矢印と疑問符マークに変わります。「フィールドレベル・ヘルプについて」を参照してください。
名前を入力して、「スキームの作成」をクリックします。
注意: SSLモードとして「認証付きSSL」を選択する場合は、Oracle Application Expressのインスタンス設定を使用してウォレットを設定する必要があります。また、LDAPサーバーのルート証明書を信頼できる証明書としてこのウォレットにインポートする必要があります。詳細は、Oracle Application Express管理ガイドの「ウォレット情報の構成」およびOracle Database Advanced Security管理者ガイドの「Oracle Wallet Managerの使用」を参照してください。 |
データベース・アクセス記述子(DAD)データベース認証では、Basic認証スキームを使用してユーザーを認証するのに、Oracle Databaseのシステム固有の認証およびユーザー・メカニズムを使用します。この認証スキームでは、DAD構成に格納された値か、アカウント情報がDAD構成に格納されていない場合はBasic認証要求を使用して取得されるユーザー名のいずれかとして、データベース・アクセス記述子(DAD)からユーザー名が取得されます。
DAD資格証明の検証を使用するには、次の条件を満たす必要があります。
各アプリケーション・ユーザーが、Oracle Databaseにユーザー・アカウントを持っている。
Basic認証用のPL/SQL DADを構成している(アカウント情報なし)。
これによって、アプリケーション・ユーザーは、ブラウザ・セッションごとに1回ユーザー名/パスワードを要求されます。その後、ユーザー・アイデンティティ・トークンがAPP_USER
アイテム内で使用可能になります。
DADデータベース認証は、管理可能な数のユーザーに対して最小限の設定のみが必要な認証方式を実装する場合に役立ちます。これらのユーザーがデータベース内に自己管理されたアカウントを持っており、この認証方式を短期間(たとえば、開発のデモンストレーションまたはプロトタイプ段階の間)のみ使用することが理想です。
この方法の主なデメリットは、特にユーザーが自分のパスワードを管理していないか、またはユーザーのデータベース・アカウントがアプリケーションへの認証を容易化するためのみに存在している場合に、アカウントのメンテナンスが負担となることです。
DAD資格証明の検証を設定するには、次の手順を実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページで、「作成」をクリックします。
「ギャラリからの事前構成済スキームに基づく」を選択します。
「ギャラリ」で、「認証なし(DADを使用)」を選択します。
名前を入力して、「スキームの作成」をクリックします。
Oracle Application Server Single Sign-On資格証明は、Oracle AS Single Sign-On(SSO)Serverに認証を委譲します。この認証スキームを使用するには、サイトは、SSO Serverにパートナ・アプリケーションとして登録されている必要があります。詳細は、管理者に連絡してください。
Oracle Application Expressアプリケーションは、Oracle Application ServerのSingle Sign-On (SSO)インフラストラクチャでパートナ・アプリケーションとして実行できます。実行には、パートナ・アプリケーションとして、アプリケーション(またはApplication Expressエンジン)を登録する必要があります。アプリケーションまたはApplication Expressエンジンをパートナ・アプリケーションとして登録するには、Oracle Application Serverのパートナ・アプリケーションの登録手順に従い、Oracle 9iAS SSO Software Developer Kit(SDK)をインストールします。
この方法を選択する場合、ご使用のアプリケーションでは統合されたログイン・ページが使用されません。かわりに、ユーザーが新しいブラウザ・セッションでアプリケーションにアクセスすると、Application ExpressエンジンによってSingle Sign-Onログイン・ページにリダイレクトされます。ユーザーがSSOによって認証されると、SSOコンポーネントはアプリケーションにリダイレクトし、Application Expressエンジンにユーザー・アイデンティティおよびその他の情報を渡します。その後、ユーザーはログオフするか、ブラウザ・セッションを終了するか、またはその他のセッション終了イベントが発生するまでアプリケーションを使用できます。
Oracle Application Server Single Sign-Onを設定するには、次の手順を実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
認証スキーム・ページで、「作成」をクリックします。
「ギャラリからの事前構成済スキームに基づく」を選択します。
「ギャラリ」から、次のいずれかの項目を選択します。
Oracle Application Server Single Sign-On(パートナ・アプリケーションとしてのApplication Expressエンジン): Oracle AS Single Sign-On (SSO) Serverに認証を委譲します。この認証スキームを使用するには、サイトは、SSO Serverにパートナ・アプリケーションとして登録されている必要があります。
Oracle Application Server Single Sign-On(パートナ・アプリケーションとしてのMy Application)は、SSO Serverに認証を委譲します。SSOには、アプリケーションをパートナ・アプリケーションとして登録する必要があります。
名前を入力して、「スキームの作成」をクリックします。
認証スキームを最初から作成すると、認証インタフェースを完全に制御できます。これは、次のいずれかに該当する場合に最適な方法です。
データベース認証または他の方式が適切でない。
独自のログイン・フォームおよび関連方式を開発する必要がある。
Oracle 10gAS Single Sign-Onなどの外部サービスに対して、ユーザー認証のすべての設定を委譲する必要がある。
セッション管理のセキュリティ面を制御する必要がある。
ユーザー・レベルまたはセッション・レベルでアクティビティを記録または監査する必要がある。
セッションのアクティビティ制限または存続期限を施行する必要がある。
Oracle Application Expressページ・プロセスの前に一方向の条件付きリダイレクト・ロジックをプログラムする必要がある。
一般的なセッション管理フレームワークを使用して、アプリケーションをOracle Application Express以外のアプリケーションと統合する必要がある。
アプリケーションが、シームレス(たとえば、複数のアプリケーションID)に動作する複数のアプリケーションで構成されている。
参照: Oracle Application Express APIリファレンスの「APEX_CUSTOM_AUTH」 |
Oracle Application Expressは、カスタム認証を実行する際に、次の2つの不適切な状況が発生しないようにします。
あるユーザーが、他のユーザーに属するセッション・ステートに故意にアクセスしようとすること。ただし、ユーザーは任意のアプリケーション・セッションIDをURLに入力できます。
失効したセッション・ステート(多くの場合、同じユーザーに属する以前のセッション・ステート)が不注意にアクセスされること。これは一般的に、アプリケーション・ページへのブックマークを使用したために発生します。
Oracle Application Expressは、カスタム認証ファンクションによって設定されたユーザーIDトークンが、アプリケーション・セッションが最初に作成された際に記録されたユーザーIDと一致するかどうかを確認します。ユーザーがまだ認証されておらず、ユーザーIDが認識されていない場合、アクセスをしているセッション・ステートは、他のユーザーに属していません。これらの確認によって、リクエスト内のセッションIDが使用可能かどうかが判断されます。セッションIDが使用不可能な場合、Application Expressエンジンは適切なセッションIDを使用して、同じページにリダイレクトします。
Oracle Application Expressでアプリケーションを作成すると、ログイン・ページが作成されます。ページの別名は、LOGIN
です。このページは、認証スキームで無効なセッション・ページとして使用できます。このページは、Oracle Application ExpressのログインAPIをコールするプロセスを使用して、資格証明の検証およびセッションの登録を実行するように構成されています。
事前に構築されたモデル・ページを使用して、すべてのユーザー・インタフェースを調整し、要件に対してロジックを加工して、独自のログイン・ページを構築することもできます。
アプリケーションのログイン・ページを作成するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「ページの作成」をクリックします。
「ログイン・ページ」を選択します。
ログイン・ページ属性を指定して、「作成」をクリックします。
認証スキームを作成すると、使用可能な認証スキームが認証スキーム・リポジトリに表示されます。
認証スキーム・リポジトリにナビゲートするには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。
「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。
テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。
「実行」ボタン: 検索を実行するか、フィルタを適用します。
ビュー・アイコン: このコントロールを使用して、アイコン・ビューとレポート・ビューを切り替えます。ビューを変更するには、次のアイコンをクリックします。
アイコンの表示 (デフォルト): 各スキームを大きいアイコンとして表示します。
レポートの表示: 情報をレポートで表示します。イベントをフロー・チャートで表示するには、「フロー・チャート」列の下にある「表示」アイコンをクリックします。
「アクション・メニュー」: 「アクション」を表示します。レポート・ビューをカスタマイズするにはこのメニューを使用します。「「アクション」メニューの使用」を参照してください。
特定の認証スキームを編集するには、そのスキームを選択します。
認証スキーム・ページが表示されます。
該当する属性を編集し、「変更の適用」をクリックします。
アプリケーションのカレント認証スキームを表示するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「セキュリティ属性」をクリックします。
「認証」セクションに移動します。カレント認証スキームが「認証スキーム」の横に表示されます。
認証スキーム・ページにリンクして、スキーム名を選択するには、次のステップを実行します。
アプリケーションの認証スキームを変更するには、次のステップを実行します。
「認証スキーム」にナビゲートします。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認証スキーム」を選択します。
ページの上部の「カレントの変更」タブをクリックします。
「使用可能な認証スキーム」で新しい認証スキームを選択し、「次へ」をクリックします。
「カレント化」をクリックします。
認可は、ユーザー権限に基づいてリソースへのアクセスを制御することを示す広義語です。条件は特定のページ・コントロールまたはページ・コンポーネントのレンダリングおよび処理を制御しますが、認可スキームは特定のコントロールまたはコンポーネントへのユーザーのアクセスを制御します。
内容は次のとおりです。
認可スキームは、アプリケーションの認証スキームのセキュリティを強化します。認可スキームは、アプリケーション全体、各ページ、またはリージョン、アイテム、ボタンなどの特定のコントロールに対して指定できます。たとえば、認可スキームを使用して、ユーザーに表示するタブ、リージョンまたはナビゲーション・バーを選択的に決定できます。
認可スキームの結果は、成功または失敗のいずれかです。コンポーネントまたはコントロール・レベルの認可スキームに成功すると、そのコンポーネントまたはコントロールがユーザーに表示されます。失敗すると、そのコンポーネントまたはコントロールはユーザーに表示されません。アプリケーション・レベルまたはページ・レベルの認可スキームに失敗すると、Oracle Application Expressは事前定義済のメッセージを表示します。
認可スキームを定義する場合は、一意の名前を指定します。定義した認可スキームは、アプリケーションのコンポーネントまたはコントロールに割り当てることができます。アプリケーションのコンポーネントまたはコントロールに認可スキームを割り当てるには、該当する属性ページにナビゲートして、「認可スキーム」リストから認可スキームを選択するのみです。
認可スキームは、アプリケーションまたはアプリケーション・コンポーネントまたはコントロールに割り当てる前に作成する必要があります。
認可スキームを作成するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認可スキーム」を選択します。
「作成」をクリックします。
次のいずれかの項目を選択して、認可スキームの作成方法を指定します。
最初から
既存の認可スキームのコピーとして
画面に表示されるステップに従います。
既存の認可スキームの属性を編集するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
アプリケーションのホームページで、「共有コンポーネント」をクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「認可スキーム」を選択します。
「認可スキーム」ページが表示されます。デフォルトでは、各スキームがアイコンとして表示されます。
ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。
「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。
テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。
「実行」ボタン: 検索を実行するか、フィルタを適用します。
ビュー・アイコン: このコントロールを使用して、アイコン・ビューとレポート・ビューを切り替えます。ビューを変更するには、次のアイコンをクリックします。
アイコンの表示 (デフォルト): 各スキームを大きいアイコンとして表示します。
レポートの表示: 情報をレポートで表示します。イベントをフロー・チャートで表示するには、「フロー・チャート」列の下にある「表示」アイコンをクリックします。
「アクション・メニュー」: 「アクション」を表示します。レポート・ビューをカスタマイズするにはこのメニューを使用します。「「アクション」メニューの使用」を参照してください。
評価ポイント属性に、認可スキームを検証するタイミングを指定できます。認可スキームをセッションごとに1回検証するか、またはページ・ビューごとに1回検証するかを選択できます。
認可スキームがセッションごとに1回評価されるように指定して、その認可スキームが合格した場合、基礎となるコード、テストまたは問合せは、そのアプリケーション・セッション中に再実行されないことに注意してください。認可スキームが、セッション中の異なる時刻に評価されると結果が異なる可能性があるテストで構成されている場合、評価ポイントをページ・ビューごとに1回に指定する必要があります。
認可スキームがセッションごとに1回検証される場合、Oracle Application Expressは各ユーザーのセッション・キャッシュ内に検証結果をキャッシュします。セッションの認可スキーム・ステートは、APEX_UTIL.RESET_AUTHORIZATIONS
APIをコールしてリセットできます。
このプロシージャをコールすると、カレント・セッションに対して以前にキャッシュされた認可スキームの結果がNULLになります。このプロシージャは引数を取らず、パブリックに実行可能なAPEX_UTIL
パッケージの一部であることに注意してください。
参照: Oracle Application Express APIリファレンスの「RESET_AUTHORIZATIONSプロシージャ」 |
作成した認可スキームは、アプリケーション全体、ページ、コントロールまたはコンポーネントに割り当てることができます。
内容は次のとおりです。
認可スキームをアプリケーションに割り当てるには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「共有コンポーネント」アイコンをクリックします。
共有コンポーネント・ページが表示されます。
「セキュリティ」で、「セキュリティ属性」をクリックします。
「認可」までスクロールして、「認可スキーム」リストから認可スキームを選択します。
認可スキームをページに割り当てるには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
ページを選択します。
「ページ・レンダリング」で、ページのタイトルのセクションを探します。
「ページ属性の編集」アイコンをクリックします。
「セキュリティ」までスクロールして、「認可スキーム」リストから認可スキームを選択します。