「アクセス制御管理ページ」を作成すると、アプリケーション、個々のページまたはページ・コンポーネントへのアクセスを制御できます。ページには、アプリケーション・モードのリストと「アクセス制御リスト」が含まれます。
このチュートリアルでは、「アクセス制御管理ページ」を作成し、権限を付与されたユーザーのみが特定の機能を実行できるようにアプリケーションへのアクセスを制限する方法を説明します。
内容は次のとおりです。
「アクセス制御」ウィザードを実行してアクセス制御リストを作成し、「アクセス制御管理ページ」を作成します。このページには、アプリケーション・モードのリストと「アクセス制御リスト」が含まれます。「アクセス制御管理ページ」を作成したら、次のステップを実行します。
「アクセス制御管理ページ」を実行します。
次のアプリケーション・モードから1つ選択します。
すべての対象への完全なアクセス権。アクセス制御リストは使用されません。
制限付きアクセス権。アクセス制御リストに定義されたユーザーのみが許可されます。
パブリック読取り専用。アクセス制御リストによって制御される編集および管理の権限です。
管理アクセス専用。
「アクセス制御リスト」にユーザーを追加します。
「アクセス制御管理ページ」の他に、「アクセス制御」ウィザードでは次のものが作成されます。
アクセス制御を管理するための2つ表(アプリケーションのデフォルト・スキーマ内に作成)
アプリケーション・モード・リストのオプションに対応した認可スキーム
「アクセス制御リスト」内で使用可能な権限
特定のページまたはコンポーネント属性ページで、これらの認可スキームのいずれかを選択することにより、そのページまたはページ・コンポーネントへのアクセスを制御できます。「アクセス制御」を作成したら、アプリケーション固有の要件に合うように、ページ、表および値をカスタマイズできます。
最初に、スプレッドシート内の従業員データに基づいてアプリケーションを作成する必要があります。
この項の内容は次のとおりです。
次の*.csvファイルをローカル・マシンにダウンロードします。
Webブラウザで次のURLに移動します。
http://www.oracle.com/technology/products/database/application_express/packaged_apps/acl_employees.zip
ご使用のコンピュータにacl_employees.zipファイルをダウンロードします。
解凍してacl_employees.csvファイルを抽出します。
Microsoft Windowsの場合、acl_employees.zipファイルをダブルクリックします。
UNIXまたはLinuxの場合、次のコマンドを入力します。
$ unzip acl_employees.zip
スプレッドシート・データに基づいて新しいアプリケーションを作成するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。
「作成」をクリックします。
「スプレッドシートから作成」を選択して「次へ」をクリックします。
「ファイルをアップロード(カンマ区切り(*.csv)またはタブ区切り)」を選択して「次へ」をクリックします。
「ロード方法」で、次のステップを実行します。
「ファイルをアップロード(カンマ区切り(*.csv)またはタブ区切り)」を選択します。
「次へ」をクリックします。
「データ」で、次のステップを実行します。
「テキスト・ファイル」で、「参照」をクリックしてacl_employees.csvファイルにナビゲートします。
残りのデフォルトを受け入れて「次へ」をクリックします。
「表のプロパティ」で、次のステップを実行します。
「スキーマ」で、適切なスキーマを選択します。
「表名」に、ACL_EMPLOYEESと入力します。
残りのデフォルトを受け入れて「次へ」をクリックします。
「ユーザー・インタフェースのデフォルト値」で、次のステップを実行します。
「単数形の名前」に、Employeeと入力します。
「複数形の名前」に、Employeesと入力します。
「次へ」をクリックします。
「サマリー・ページ」で、次のステップを実行します。
「列ごとのサマリー」で、「DEPARTMENT_ID」を選択して「次へ」をクリックします。
「列ごとの集計」で、何も選択せずに「次へ」をクリックします。
「アプリケーション・オプション」で、デフォルト値を受け入れて「次へ」をクリックします。
「ユーザー・インタフェース」で、「テーマ2」を選択して「次へ」をクリックします。
テーマは、アプリケーションのレイアウトおよびスタイルの定義に使用できるテンプレート集です。テーマは随時変更できます。
「作成」をクリックします。
「アプリケーション」ホームページが表示されます。
アプリケーションを実行するには、次のステップを実行します。
図11-1に示すように、「アプリケーションの実行」アイコンをクリックします。
ユーザー名およびパスワードを入力するように要求されたら、作業領域のユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
図11-2に示すとおり、レポートが表示されます。
ACL_EMPLOYEESアプリケーションを使用して、従業員データの表示および更新ができます。特定のレコードを更新するには、左端の列にある「編集」アイコンをクリックします。「解析」タブをクリックすると、各部門の従業員の数を視覚的な表形式に分類できます。
次に、権限を付与されたユーザーのみが特定の操作を実行できるように、アプリケーションを保護する必要があります。Application Expressアプリケーションにアクセス制御を実装する場合、アプリケーション・レベルで定義された認可スキームを使用することをお薦めします。最初のステップでは、「アクセス制御管理ページ」ウィザードを実行して、アクセス制御ページを作成します。
この項の内容は次のとおりです。
アクセス制御ページを作成するには、次のステップを実行します。
「開発者」ツールバーで「作成」をクリックします。
「新しいページ」を選択して「次へ」をクリックします。
「ページ」で、「アクセス制御」を選択して「次へ」をクリックします。
「アクセス制御」ウィザードが表示されます。
「管理ページ番号」に8と入力して、「次へ」をクリックします。
「タブ」で、次のステップを実行します。
「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内に新しいタブの作成」を選択します。
「タブ・セット」で、「TS1 (Employees, Analyze)」を選択します。
「タブ・セット・ラベル」に、Administrationと入力します。
「次へ」をクリックします。
確認ページを確認して、「終了」をクリックします。
「成功」ページが表示されます。
ページを実行するには、次のステップを実行します。
「ページの実行」をクリックします。
図11-3に示すとおり、新しいページが表示されます。
このページは、「アプリケーション管理」および「アクセス制御リスト」という2つのリージョンに分かれています。また、デフォルトでは、「アプリケーション・モード」は完全なアクセス権です。
「アプリケーション・モード」で、「制限付きアクセス権。アクセス制御リストに定義されたユーザーのみが許可されます。」を選択します。
「アプリケーション・モードの設定」をクリックします。
次に、「アクセス制御リスト」にユーザーを3名追加します。
Luis Popp(LPOPP)は、表示権限を所有します。
Adam Fripp(AFRIPP)は、編集権限を所有します。
John Chen(JCHEN)は、管理者権限を所有します。
「アクセス制御リスト」にユーザーを追加するには、次のステップを実行します。
「アクセス制御リスト」で、「ユーザーの追加」をクリックします。
新しい行が表示されます。
次のステップを実行して、最初のユーザーを追加します。
「ユーザー名」にLPOPPと入力します。
「権限」で、「表示」を選択します。
「変更の適用」をクリックします。
「ユーザーの追加」をクリックして、次のユーザーを入力するための空白行を追加します。
次のステップを実行して、2番目のユーザーを追加します。
「ユーザー名」にAFRIPPと入力します。
「権限」で、「編集」を選択します。
「変更の適用」をクリックします。
「ユーザーの追加」をクリックして、次のユーザーを入力するための空白行を追加します。
次のステップを実行して、3番目のユーザーを追加します。
「ユーザー名」にJCHENと入力します。
「権限」で、「管理者」を選択します。
「変更の適用」をクリックします。
「開発者」ツールバーで「アプリケーション」をクリックします。
「アプリケーション」ホームページが表示されます。
次に、ACL_EMPLOYEES表内の従業員をアプリケーションのユーザーにする必要があります。これを実行するには、現行の認証スキーム内に簡単な認証ファンクションを作成します。このファンクションは、ユーザーIDとパスワード(ユーザーIDに関連付けられた姓)を確認します。
認証ファンクションを作成するには、次のステップを実行します。
「アプリケーション・ビルダー」ホームページで、「ホーム」ブレッドクラム・リンクをクリックします。
「作業領域」ホームページが表示されます。
「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
「SQLエディタ」ペインで、次のステップを実行します。
次のコードを入力します。
CREATE OR REPLACE FUNCTION acl_custom_auth (
p_username IN VARCHAR2,
p_password IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
FOR c1 IN (SELECT 1
FROM acl_employees
WHERE upper(userid) = upper(p_username)
AND upper(last_name) = upper(p_password))
LOOP
RETURN TRUE;
END LOOP;
RETURN FALSE;
END;
/
「実行」をクリックします。
「ホーム」ブレッドクラム・リンクをクリックします。
「作業領域」ホームページが表示されます。
次に、新しいファンクションを使用できるように現行の認証スキームを更新する必要があります。
現行の認証スキームを更新するには、次のステップを実行します。
「アプリケーション・ビルダー」をクリックし、「ACL Employees」をクリックします。
「アプリケーション」ホームページが表示されます。
「共有コンポーネント」をクリックします。
「セキュリティ」で、「認証スキーム」をクリックします。
「認証スキーム」ページが表示されます。
「Application Express - カレント」アイコンをクリックします。
「ログイン・プロセス」までスクロールします。
「認証ファンクション」で、-BUILTIN-を次と置き換えます。
return acl_custom_auth
ページ上部までスクロールして「変更の適用」をクリックします。
次に、認可スキームを適切なアプリケーション・コンポーネントと関連付ける必要があります。ここまで、事前に次の3名のユーザーを「アクセス制御リスト」に追加しました。
LPOPPは表示権限を付与されました。
AFRIPPは編集権限を付与されました。
JCHENは管理者権限を付与されました。
この演習では、表示、編集および管理者権限を特定のアプリケーション・コンポーネントと関連付け、ユーザーが実行できるアクションを制御します。
この項の内容は次のとおりです。
まず、ユーザーに表示権限が付与されている場合のみ、アプリケーションにアクセスできるように指定する必要があります。これを実行するには、「アクセス制御 - 表示」認可スキームとアプリケーションを関連付けます。
認可スキームをアプリケーションと関連付けるには、次のステップを実行します。
「アプリケーションID」ブレッドクラム・リンクをクリックします。
「アプリケーション」ホームページが表示されます。
「共有コンポーネント」をクリックします。
「アプリケーション」で、「定義」をクリックします。
「セキュリティ」タブをクリックします。
「認可」までスクロールします。
「認可スキーム」で、「アクセス制御 - 表示」を選択します。
ページの上部の「変更の適用」をクリックします。
この演習では、データの編集または削除は、編集権限以上の権限を持つユーザーのみができるようにする必要があります。これを実行するには、「アクセス制御 - 編集」認可スキームとID列を関連付けます。この結果、ページ1上の「編集」アイコンは、表示権限を持つユーザーに対して非表示になりますが、編集権限または管理者権限を持つユーザーに対しては表示されます。
編集権限をID列と関連付けるには、次のステップを実行します。
「アプリケーションID」ブレッドクラム・リンクをクリックします。
「アプリケーション」ホームページが表示されます。
「1 - Report Page」をクリックします。
ページ1のページ定義が表示されます。
「リージョン」で、「レポート」リンクをクリックします。
「レポート属性」ページが表示されます。
IDの「編集」アイコンをクリックします。「編集」アイコンは、鉛筆が付いた小さいページに似ています。
「列属性」ページが表示されます。
「認可」までスクロールします。
「認可スキーム」で、「アクセス制御 - 編集」を選択します。
ページの上部の「変更の適用」をクリックします。
次に、「アクセス制御 - 編集」認可スキームと「作成」ボタンを関連付けます。この結果、権限のないユーザーに対しては「編集」アイコンが非表示になります。
編集権限を「作成」ボタンと関連付けるには、次のステップを実行します。
ページ1のページ定義に移動します。「1ページ」ブレッドクラム・リンクをクリックします。
ページ1のページ定義が表示されます。
「ボタン」で、「作成」リンク(アイコンでない)をクリックします。
「認可」までスクロールします。
「認可スキーム」で、「アクセス制御 - 編集」を選択します。
ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。
次に、「アクセス制御 - 編集」認可スキームとページ2を関連付けます。
ページ2に認可スキームを指定するには、次のステップを実行します。
ページ2に移動します。「ページ」フィールドに2と入力して、「実行」をクリックします。
ページ2のページ定義が表示されます。
「ページ」で、「ページ属性の編集」アイコンをクリックします。
「セキュリティ」までスクロールします。
「認可スキーム」で、「アクセス制御 - 編集」を選択します。
ページの上部の「変更の適用」をクリックします。
最後に、ページ8(アクセス制御管理)へのアクセスを制限する必要があります。これを実行するには、ページ8のすべてと「管理」タブに、「アクセス制御 - 管理者」認可スキームを指定します。
このチュートリアルの初めの部分で、次の3名のユーザーを「アクセス制御リスト」に追加しました。
Luis Popp(LPOPP): 表示権限を所有します。
Adam Fripp(AFRIPP): 編集権限を所有します。
John Chen(JCHEN): 管理者権限を所有します。
次に、これらのユーザーそれぞれがログインして、アプリケーションをテストします。
この項の内容は次のとおりです。
Luis Popp(LPOPP)は表示権限を所有します。
Luis Poppとしてログインする場合は、次のステップを実行します。
右上にある「ページの実行」アイコンをクリックします。
入力が要求されたら、次の各項目を指定します。
「ユーザー名」にLPOPPと入力します。
パスワードにPoppと入力します。
「ログイン」をクリックします。
図11-4に示すとおり、「Employees」レポート・ページが表示されます。
「編集」アイコンおよび「管理」タブは表示されません。
右上にある「ログアウト」をクリックします。
Adam Fripp(AFRIPP)は編集権限を所有します。
Adam Frippとしてログインするには、次のステップを実行します。
入力が要求されたら、次の各項目を指定します。
「ユーザー名」にAFRIPPと入力します。
パスワードにFrippと入力します。
「ログイン」をクリックします。
図11-5に示すとおり、「Employees」レポート・ページが表示されます。
今回は、「Employee Id」列の左側に「編集」アイコンが表示されましたが、「管理」タブは引き続き表示されません。
右上にある「ログアウト」をクリックします。
John Chen(JCHEN)は管理者権限を所有します。
John Chenとしてログインするには、次のステップを実行します。
入力が要求されたら、次の各項目を指定します。
「ユーザー名」にJCHENと入力します。
パスワードにChenと入力します。
「ログイン」をクリックします。
図11-6に示すとおり、「Employees」レポート・ページが表示されます。
「管理者」タブをクリックします。