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を実行するか、アプリケーションのサポートするオブジェクトでインストール・スクリプトを作成できます。
関連項目:
親トピック: アクセス制御の理解