プライマリ・コンテンツに移動
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース18.1
E98591-01
目次へ移動
目次
索引へ移動
索引

前
次

20.3.1 アクセス制御の理解

アクセス制御機能をアプリケーションに追加することにより、複数のページと、「アクセス制御」リージョン、アクセス・ロール、認可スキーム、ビルド・オプションおよびアプリケーションの設定のコンポーネントが作成されます。

20.3.1.1 アクセス制御の追加について

アクセス制御ウィザードを実行すると、複数のページおよび次のコンポーネントが作成されます。

  • 指定した管理ページに「アクセス制御」リージョンが追加されます。

  • 管理者コントリビュータおよびリーダーのアクセス・ロールが作成されます。

  • 管理権限コントリビューション権限およびリーダー権限の認可スキームが作成されます。

    注意:

    既存のアプリケーションに新しいアクセス制御を追加すると、これらの認可スキームは、名前が存在しない場合にのみ作成されます。たとえば、管理権限がすでに存在する場合(大/小文字を区別した比較)、ウィザードは再作成しません。かわりに、アクセス制御ページでは、既存の認可スキームが再利用されます。

  • 機能: アクセス制御のビルド・オプションが作成されます。

  • ACCESS_CONTROL_SCOPEのアプリケーション設定が作成されます。

開発者は、アクセス制御リストを使用して、表示編集管理の権限をアプリケーション・ユーザーに関連付けます。最終的なアクセス制御UI内では、各権限がアクセス・ロールに関連付けられています。
  • 表示リーダー・ロールに関連付けられています。

  • 編集コントリビュータ・ロールに関連付けられています。

  • 管理管理者ロールに関連付けられています。

20.3.1.2 アクセス制御認可スキームについて

アクセス制御機能をアプリケーションに追加すると、PL/SQL本体ウィザードにより次の認可スキームが作成されます。

  • 管理権限: この認可スキームは、アプリケーションのカレント・ユーザーにADMINISTRATORロールが割り当てられているかどうかを確認します。

    return APEX_ACL.HAS_USER_ROLE (
         p_application_id=>:APP_ID, 
         p_user_name => :APP_USER, 
         p_role_static_id => 'ADMINISTRATOR');
  • コントリビューション権限: この認可スキームは、アプリケーションのカレント・ユーザーにADMINISTRATORロールまたはCONTRIBUTORロールが割り当てられているかどうかを確認します。

    if apex_acl.has_user_role (
      p_application_id=>:APP_ID, 
      p_user_name => :APP_USER, 
      p_role_static_id => 'ADMINISTRATOR') or
      apex_acl.has_user_role (
        p_application_id=>:APP_ID,
        p_user_name=> :APP_USER,
        p_role_static_id=> 'CONTRIBUTOR') then
        return true;
    else
        return false;
    end if;
  • リーダー権限: この認可スキームは、認証されたユーザーによるアプリケーションへのアクセスを許可するようにアクセス制御が構成されている場合にTRUEを返します。この動作が許可されていない場合、アプリケーションのカレント・ユーザーが任意のアプリケーション・ロールに割り当てられているかどうかをチェックします。

    if nvl(apex_app_setting.get_value(
       p_name => 'ACCESS_CONTROL_SCOPE'),'x') = 'ALL_USERS' then
        -- allow user not in the ACL to access the application
        return true;
    else
        -- require user to have at least one role
        return apex_acl.has_user_any_roles (
            p_application_id => :APP_ID, 
            p_user_name      => :APP_USER);
    end if;

20.3.1.3 アクセス制御の構成について

アクセス制御機能を追加したら、アプリケーションを実行して、管理ページの「アクセス制御」リージョンにアクセスすることで、機能を構成します。

「アクセス制御」リージョンには、現在定義されているアクセス・ロールがリストされ、「ユーザー」および「アクセス制御」の2つのセクションが含まれます。

ユーザー

「ユーザー」をクリックし、新規ユーザーを追加したり、ユーザーのロールを変更したり、アカウントをロックすることでアクセス制御を無効にします。

ヒント:

共有コンポーネントのアプリケーション・アクセス制御ページで、さらにロールを追加し、ロールの割当てを構成します。ロールおよびユーザー割当ての管理を参照してください。

アクセス制御

「アクセス制御」をクリックし、認証されたユーザーがアプリケーションにアクセスする際の動作を指定します。

認証されたすべてのユーザーがこのアプリケーションアクセスできるかどうかについて、次のいずれかを選択します。

  • いいえ: すべてのユーザーがアクセス制御リストで定義されている必要がある場合は、「いいえ」を選択します。

  • はい: アクセス制御リストに存在しない認証されたユーザーがアプリケーションを使用できるようにするには、「はい」を選択します。

20.3.1.4 アクセス制御によるアプリケーションのエクスポートについて

アクセス制御機能を使用してアプリケーションをエクスポートする場合、管理者、コントリビュータ、リーダーのアプリケーション・ロールがエクスポートされます。ただし、これらのロールに割り当てられたユーザーはエクスポートされません。アクセス制御機能を使用してエクスポートされたアプリケーションをデプロイする場合、管理ページのナビゲーション・メニュー・エントリは表示されません。アクセス制御機能を使用してアプリケーションをデプロイする場合、共有コンポーネントの「アプリケーション・アクセス制御」に移動することで、必要に応じてユーザー・ロールを追加できます。アプリケーションがランタイム環境にデプロイされている場合は、APEX_ACL APIを使用してユーザー・ロールを追加できます。たとえば、次の例では、アプリケーション255の管理者としてユーザー名SCOTTを追加します。

begin
    APEX_ACL.ADD_USER_ROLE (
        p_application_id => 255,
        p_user_name      => 'SCOTT',
        p_role_static_id => 'ADMINISTRATOR' );
end;

また、コマンドラインからAPEX_ACL APIを実行するか、アプリケーションのサポートするオブジェクトでインストール・スクリプトを作成できます。