ヘッダーをスキップ
Oracle® Application Expressアドバンスト・チュートリアル
リリース3.2
B53796-03
  目次へ移動
目次

前
 
次
 

11 アクセス制御ページの構築方法

「アクセス制御管理ページ」を作成すると、アプリケーション、個々のページまたはページ・コンポーネントへのアクセスを制御できます。ページには、アプリケーション・モードのリストと「アクセス制御リスト」が含まれます。

このチュートリアルでは、「アクセス制御管理ページ」を作成し、権限を付与されたユーザーのみが特定の機能を実行できるようにアプリケーションへのアクセスを制限する方法を説明します。

この項には、次の項目が含まれます。

このトピックに関するその他の例は、次に示すOracle by Examples (OBE)を参照してください。

アクセス制御管理の仕組み

「アクセス制御」ウィザードを実行してアクセス制御リストを作成し、「アクセス制御管理ページ」を作成します。このページには、アプリケーション・モードのリストと「アクセス制御リスト」が含まれます。「アクセス制御管理ページ」を作成したら、次のステップを実行します。

  1. 「アクセス制御管理ページ」を実行します。

  2. 次のアプリケーション・モードから1つ選択します。

    • すべての対象への完全なアクセス権。アクセス制御リストは使用されません。

    • 制限付きアクセス権。アクセス制御リストに定義されたユーザーのみが許可されます。

    • パブリック読取り専用。アクセス制御リストによって制御される編集および管理の権限です。

    • 管理アクセス専用。

  3. 「アクセス制御リスト」にユーザーを追加します。

「アクセス制御管理ページ」の他に、「アクセス制御」ウィザードでは次のものが作成されます。

特定のページまたはコンポーネント属性ページで、これらの認可スキームのいずれかを選択することにより、そのページまたはページ・コンポーネントへのアクセスを制御できます。「アクセス制御」を作成したら、アプリケーション固有の要件に合うように、ページ、表および値をカスタマイズできます。

アプリケーションの作成

最初に、スプレッドシート内の従業員データに基づいてアプリケーションを作成する必要があります。

この項の内容は次のとおりです。

スプレッドシート・データのダウンロード

次の*.csvファイルをローカル・マシンにダウンロードします。

  1. Webブラウザで次のURLに移動します。

    http://www.oracle.com/technology/products/database/application_express/packaged_apps/acl_employees.zip
    
  2. ご使用のコンピュータにacl_employees.zipファイルをダウンロードします。

  3. 解凍してacl_employees.csvファイルを抽出します。

    • Microsoft Windowsの場合、acl_employees.zipファイルをダブルクリックします。

    • UNIXまたはLinuxの場合、次のコマンドを入力します。

      $ unzip acl_employees.zip
      

スプレッドシート・データに基づくアプリケーションの作成

スプレッドシート・データに基づいて新しいアプリケーションを作成するには、次のステップを実行します。

  1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。

    「アプリケーション・ビルダー」ホームページが表示されます。

  2. 作成」をクリックします。

  3. スプレッドシートから作成」を選択して「次へ」をクリックします。

  4. ファイルをアップロード(カンマ区切り(*.csv)またはタブ区切り)」を選択して「次へ」をクリックします。

  5. 「ロード方法」で、次のステップを実行します。

    1. ファイルをアップロード(カンマ区切り(*.csv)またはタブ区切り)」を選択します。

    2. 次へ」をクリックします。

  6. 「データ」で、次のステップを実行します。

    1. 「テキスト・ファイル」で、「参照」をクリックしてacl_employees.csvファイルにナビゲートします。

    2. 残りのデフォルトを受け入れて「次へ」をクリックします。

  7. 「表のプロパティ」で、次のステップを実行します。

    1. 「スキーマ」で、適切なスキーマを選択します。

    2. 「表名」に、ACL_EMPLOYEESと入力します。

    3. 残りのデフォルトを受け入れて「次へ」をクリックします。

  8. 「ユーザー・インタフェースのデフォルト値」で、次のステップを実行します。

    1. 「単数形の名前」に、Employeeと入力します。

    2. 「複数形の名前」に、Employeesと入力します。

    3. 次へ」をクリックします。

  9. 「サマリー・ページ」で、次のステップを実行します。

    1. 「列ごとのサマリー」で、「DEPARTMENT_ID」を選択して「次へ」をクリックします。

    2. 「列ごとの集計」で、何も選択せずに「次へ」をクリックします。

  10. 「アプリケーション・オプション」で、デフォルト値を受け入れて「次へ」をクリックします。

  11. 「ユーザー・インタフェース」で、「テーマ2」を選択して「次へ」をクリックします。

    テーマは、アプリケーションのレイアウトおよびスタイルの定義に使用できるテンプレート集です。テーマは随時変更できます。

  12. 作成」をクリックします。

    「アプリケーション」ホームページが表示されます。

アプリケーションの実行

アプリケーションを実行するには、次のステップを実行します。

  1. 図11-1に示すように、「アプリケーションの実行」アイコンをクリックします。

    図11-1 「アプリケーションの実行」アイコン

    図11-1の説明が続きます。
    「図11-1 「アプリケーションの実行」アイコン」の説明

  2. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。

    図11-2に示すとおり、レポートが表示されます。

    図11-2 ACL_EMPLOYEESアプリケーション

    図11-2の説明が続きます。
    「図11-2 ACL_EMPLOYEESアプリケーション」の説明

    ACL_EMPLOYEESアプリケーションを使用して、従業員データの表示および更新ができます。特定のレコードを更新するには、左端の列にある「編集」アイコンをクリックします。「解析」タブをクリックすると、各部門の従業員の数を視覚的な表形式に分類できます。

「アクセス制御管理ページ」の作成

次に、権限を付与されたユーザーのみが特定の操作を実行できるように、アプリケーションを保護する必要があります。Oracle Application Expressアプリケーションにアクセス制御を実装する場合、アプリケーション・レベルで定義された認可スキームを使用することをお薦めします。最初のステップでは、「アクセス制御管理ページ」ウィザードを実行して、アクセス制御ページを作成します。

この項の内容は次のとおりです。

アクセス制御ページの作成

アクセス制御ページを作成するには、次のステップを実行します。

  1. 「開発者」ツールバーで「作成」をクリックします。

  2. 新しいページ」を選択して「次へ」をクリックします。

  3. 「ページ」で、「アクセス制御」を選択して「次へ」をクリックします。

    「アクセス制御」ウィザードが表示されます。

  4. 「管理ページ番号」に8と入力して、「次へ」をクリックします。

  5. 「タブ」で、次のステップを実行します。

    1. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内に新しいタブの作成」を選択します。

    2. 「タブ・セット」で、「TS1 (Employees, Analyze)」を選択します。

    3. 「タブ・セット・ラベル」に、Administrationと入力します。

    4. 次へ」をクリックします。

  6. 確認ページを確認して、「終了」をクリックします。

    「成功」ページが表示されます。

ページの表示

ページを実行するには、次のステップを実行します。

  1. ページの実行」をクリックします。

    図11-3に示すとおり、新しいページが表示されます。

    図11-3 「アクセス制御管理ページ」

    図11-3の説明が続きます。
    「図11-3 「アクセス制御管理ページ」」の説明

    このページは、「アプリケーション管理」および「アクセス制御リスト」という2つのリージョンに分かれています。また、デフォルトでは、「アプリケーション・モード」は完全なアクセス権です。

  2. 「アプリケーション・モード」で、「制限付きアクセス権。アクセス制御リストに定義されたユーザーのみが許可されます。」を選択します。

  3. アプリケーション・モードの設定」をクリックします。

アクセス制御リストへのユーザーの追加

次に、「アクセス制御リスト」にユーザーを3名追加します。

  • Luis Popp(LPOPP)は、表示権限を所有します。

  • Adam Fripp(AFRIPP)は、編集権限を所有します。

  • John Chen(JCHEN)は、管理者権限を所有します。

「アクセス制御リスト」にユーザーを追加するには、次のステップを実行します。

  1. 「アクセス制御リスト」で、「ユーザーの追加」をクリックします。

    新しい行が表示されます。

  2. 次のステップを実行して、最初のユーザーを追加します。

    1. 「ユーザー名」にLPOPPと入力します。

    2. 「権限」で、「表示」を選択します。

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

    4. ユーザーの追加」をクリックして、最初のユーザーを入力するための空白行を追加します。

  3. 次のユーザーを追加します。

    1. 「ユーザー名」にAFRIPPと入力します。

    2. 「権限」で、「編集」を選択します。

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

    4. ユーザーの追加」をクリックして、次のユーザーを入力するための空白行を追加します。

  4. 次のユーザーを追加します。

    1. 「ユーザー名」にJCHENと入力します。

    2. 「権限」で、「管理者」を選択します。

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

  5. 「開発者」ツールバーで「アプリケーション」をクリックします。

    「アプリケーション」ホームページが表示されます。

認証ファンクションの作成

次に、ACL_EMPLOYEES表内の従業員をアプリケーションのユーザーにする必要があります。これを実行するには、現行の認証スキーム内に簡単な認証ファンクションを作成します。このファンクションは、ユーザーIDとパスワード(ユーザーIDに関連付けられた姓)を確認します。

認証ファンクションを作成するには、次のステップを実行します。

  1. 「アプリケーション・ビルダー」ホームページで、「ホーム」ブレッドクラム・リンクをクリックします。

    「ワークスペース」ホームページが表示されます。

  2. SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。

  3. 「SQLエディタ」ペインで、次のステップを実行します。

    1. 次のコードを入力します。

      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;
      /
      
    2. 実行」をクリックします。

  4. ホーム」ブレッドクラム・リンクをクリックします。

    「ワークスペース」ホームページが表示されます。

現行の認証スキームの更新

次に、新しいファンクションを使用できるように現行の認証スキームを更新する必要があります。

現行の認証スキームを更新するには、次のステップを実行します。

  1. アプリケーション・ビルダー」をクリックし、「ACL Employees」をクリックします。

    「アプリケーション」ホームページが表示されます。

  2. 共有コンポーネント」をクリックします。

  3. 「セキュリティ」で、「認証スキーム」をクリックします。

    「認証スキーム」ページが表示されます。

  4. Application Express - カレント」アイコンをクリックします。

  5. 「ログイン・プロセス」までスクロールします。

  6. 「認証ファンクション」で、-BUILTIN-を次と置き換えます。

    return acl_custom_auth
    
  7. ページ上部までスクロールして「変更の適用」をクリックします。

コンポーネントへの認可スキームの適用

次に、認可スキームを適切なアプリケーション・コンポーネントと関連付ける必要があります。ここまで、事前に次の3名のユーザーを「アクセス制御リスト」に追加しました。

この演習では、表示、編集および管理者権限を特定のアプリケーション・コンポーネントと関連付け、ユーザーが実行できるアクションを制御します。

この項の内容は次のとおりです。

認可スキームとアプリケーションの関連付け

まず、ユーザーに表示権限が付与されている場合のみ、アプリケーションにアクセスできるように指定する必要があります。これを実行するには、「アクセス制御 - 表示」認可スキームとアプリケーションを関連付けます。

認可スキームをアプリケーションと関連付けるには、次のステップを実行します。

  1. アプリケーションID」ブレッドクラム・リンクをクリックします。

    「アプリケーション」ホームページが表示されます。

  2. 共有コンポーネント」をクリックします。

  3. 「アプリケーション」で、「定義」をクリックします。

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

  5. 「認可」までスクロールします。

  6. 「認可スキーム」で、「アクセス制御 - 表示」を選択します。

  7. ページの上部の「変更の適用」をクリックします。

ID列と編集権限との関連付け

この演習では、データの編集または削除は、編集権限以上の権限を持つユーザーのみができるようにする必要があります。これを実行するには、「アクセス制御 - 編集」認可スキームとID列を関連付けます。この結果、ページ1上の「編集」アイコンは、表示権限を持つユーザーに対して非表示になりますが、編集権限または管理者権限を持つユーザーに対しては表示されます。

編集権限をID列と関連付けるには、次のステップを実行します。

  1. アプリケーションID」ブレッドクラム・リンクをクリックします。

    「アプリケーション」ホームページが表示されます。

  2. 1 - Report Page」をクリックします。

    ページ1のページ定義が表示されます。

  3. 「リージョン」で、「レポート」リンクをクリックします。

    「レポート属性」ページが表示されます。

  4. IDの「編集」アイコンをクリックします。「編集」アイコンは、鉛筆が付いた小さいページに似ています。

    「列属性」ページが表示されます。

  5. 「認可」までスクロールします。

  6. 「認可スキーム」で、「アクセス制御 - 編集」を選択します。

  7. ページの上部の「変更の適用」をクリックします。

「作成」ボタンと編集権限との関連付け

次に、「アクセス制御 - 編集」認可スキームと「作成」ボタンを関連付けます。この結果、権限のないユーザーに対しては「編集」アイコンが非表示になります。

編集権限を「作成」ボタンと関連付けるには、次のステップを実行します。

  1. ページ1のページ定義に移動します。「1ページ」ブレッドクラム・リンクをクリックします。

    ページ1のページ定義が表示されます。

  2. 「ボタン」で、「作成」リンク(アイコンでない)をクリックします。

  3. 「認可」までスクロールします。

  4. 「認可スキーム」で、「アクセス制御 - 編集」を選択します。

  5. ページの上部の「変更の適用」をクリックします。

    ページ1のページ定義が表示されます。

ページ2と編集権限との関連付け

次に、「アクセス制御 - 編集」認可スキームとページ2を関連付けます。

ページ2に認可スキームを指定するには、次のステップを実行します。

  1. ページ2に移動します。「ページ」フィールドに2と入力して、「実行」をクリックします。

    ページ2のページ定義が表示されます。

  2. 「ページ」で、「ページ属性の編集」アイコンをクリックします。

  3. 「セキュリティ」までスクロールします。

  4. 「認可スキーム」で、「アクセス制御 - 編集」を選択します。

  5. ページの上部の「変更の適用」をクリックします。

ページ8へのアクセスの制限

最後に、ページ8(アクセス制御管理)へのアクセスを制限する必要があります。これを実行するには、ページ8のすべてと「管理」タブに、「アクセス制御 - 管理者」認可スキームを指定します。

ページ8への認可スキームの指定

ページ8に認可スキームを指定するには、次のステップを実行します。

  1. ページ8に移動します。「ページ」フィールドに8と入力して、「実行」をクリックします。

    ページ8のページ定義が表示されます。

  2. 「ページ」で、「ページ属性の編集」アイコンをクリックします。

  3. 「セキュリティ」までスクロールします。

  4. 「認可スキーム」で、「アクセス制御 - 管理者」を選択します。

  5. ページの上部の「変更の適用」をクリックします。

    ページ8のページ定義が表示されます。

「管理」タブへの認可スキームの指定

ページ8に認可スキームを指定するには、次のステップを実行します。

  1. 「タブ」で、「管理」リンクをクリックします。

  2. 「認可」までスクロールします。

  3. 「認可スキーム」で、「アクセス制御 - 管理者」を選択します。

  4. ページの上部の「変更の適用」をクリックします。

    ページ8のページ定義が表示されます。

アプリケーションのテスト

このチュートリアルの初めの部分で、次の3名のユーザーを「アクセス制御リスト」に追加しました。

次に、これらのユーザーそれぞれがログインして、アプリケーションをテストします。

この項の内容は次のとおりです。

表示権限によるログイン

Luis Popp(LPOPP)は表示権限を所有します。

Luis Poppとしてログインする場合は、次のステップを実行します。

  1. 右上にある「ページの実行」アイコンをクリックします。

  2. 入力が要求されたら、次の各項目を指定します。

    1. 「ユーザー名」にLPOPPと入力します。

    2. パスワードにPoppと入力します。

    3. ログイン」をクリックします。

    図11-4に示すとおり、「Employees」レポート・ページが表示されます。

    図11-4 表示権限による「Employees」レポート

    図11-4の説明が続きます。
    「図11-4 表示権限による「Employees」レポート」の説明

    「編集」アイコンおよび「管理」タブは表示されません。

  3. 右上にある「ログアウト」をクリックします。

編集権限によるログイン

Adam Fripp(AFRIPP)は編集権限を所有します。

Adam Frippとしてログインするには、次のステップを実行します。

  1. 入力が要求されたら、次の各項目を指定します。

    1. 「ユーザー名」にAFRIPPと入力します。

    2. パスワードにFrippと入力します。

    3. ログイン」をクリックします。

    図11-5に示すとおり、「Employees」レポート・ページが表示されます。

    図11-5 編集権限による「Employees」レポート

    図11-5の説明が続きます。
    「図11-5 編集権限による「Employees」レポート」の説明

    今回は、「Employee Id」列の左側に「編集」アイコンが表示されましたが、「管理」タブは引き続き表示されません。

  2. 右上にある「ログアウト」をクリックします。

管理者権限によるログイン

John Chen(JCHEN)は管理者権限を所有します。

John Chenとしてログインするには、次のステップを実行します。

  1. 入力が要求されたら、次の各項目を指定します。

    1. 「ユーザー名」にJCHENと入力します。

    2. パスワードにChenと入力します。

    3. ログイン」をクリックします。

    図11-6に示すとおり、「Employees」レポート・ページが表示されます。

    図11-6 管理者権限による「Employees」レポート

    図11-6の説明が続きます。
    「図11-6 管理者権限による「Employees」レポート」の説明

  2. 管理者」タブをクリックします。