11.3. 権限を使用したレルム管理の委任
fine-grained admin permissions 機能を使用して、レルム管理を他の管理者 (レルム管理者) に委任できます。この機能は、グローバルロールおよびレルム固有のロール を通じて提供されるロールベースアクセス制御 (RBAC) メカニズムとは異なり、明確に定義された一連の操作に基づいて、レルムリソースへのアクセス方法と管理方法をより細かく制御できます。
ポリシーベースのアクセス制御を利用することで、サーバー管理者はさまざまなポリシータイプまたはアクセス制御方法を使用して、ユーザー、グループ、クライアントなどのレルムリソースへの権限を定義できます。これにより、レルム管理者のアクセスはレルムリソースのサブセットとその操作に制限されます。
この機能は、前述の RBAC メカニズムの代替手段を提供しますが、それを置き換えるものではありません。レルム管理者にアクセス権を委任するために、view-users や manage-clients などの管理ロールを引き続き付与できますが、これを行うと、この機能によって提供されるメカニズムがスキップされます。
レルムリソースへのアクセスの強制は、管理コンソールまたは管理 API を通じてリソースを管理する場合にのみ適用されます。
11.3.1. レルムリソースタイプを理解する リンクのコピーリンクがクリップボードにコピーされました!
レルムでは、ユーザー、グループ、クライアント、クライアントスコープ、ロールなど、さまざまな種類のリソースを管理できます。レルム管理者は、常にこのようなリソースを管理して、アイデンティティーおよびそれらの認証方法とレルムおよびアプリケーションへのアクセスの承認方法も管理します。
この機能は、レルムリソースを管理するときにアクセス制御を適用するために必要なメカニズムを提供します。対象は、以下のみとなっています。
- ユーザー
- グループ
- クライアント
- ロール
特定のリソースタイプのすべてのリソース (レルム内のすべてのユーザーなど) の権限、または特定のレルムリソース (レルム内の特定のユーザーまたはユーザーセットなど) の権限を管理できます。
11.3.2. アクセスの範囲を理解する リンクのコピーリンクがクリップボードにコピーされました!
各レルムリソースは、view や manage のような管理操作やスコープ、さらにグループの場合で言えば view-members のようなリソース固有の操作など、明確に定義された管理操作またはスコープのセットをサポートしています。
権限を管理するときは、リソースタイプから 1 つ以上のスコープのセットを選択して、レルム管理者がリソースタイプに対して特定の操作を実行できるようにします。たとえば、view スコープを付与すると、レルム管理者にレルムリソースのリスト表示、検索、表示のアクセス権が付与されます。一方、manage スコープでは、管理者は更新や削除を実行できます。
スコープは互いに完全に独立しています。レルムリソースの manage アクセス権を付与しても、view スコープが自動的に付与されるわけではありません。スコープ間に推移的な依存関係は存在しません。個々のスコープを選択する必要があるため、権限を管理するときに全体的なユーザーエクスペリエンスに影響する可能性がありますが、特定のスコープへのアクセス制限を適用する権限をより簡単に識別できるという利点があります。
あるリソースタイプの特定のスコープには、別のリソースタイプのスコープとの (推移的な依存関係ではない) 関係があります。この関係は主に、レルムグループとそのメンバーなど、レルムリソースのグループを表すリソースタイプを管理する場合に当てはまります。
11.3.2.1. ユーザーリソースタイプ リンクのコピーリンクがクリップボードにコピーされました!
Users レルムリソースタイプは、レルム内のユーザーを表します。次のスコープセットに基づいてユーザーの権限を管理できます。
| スコープ | 説明 | 他の権限付与ロール |
|---|---|---|
| view | レルム管理者がユーザーを表示できるかどうかを定義します。このスコープはいつでも設定できます |
クエリーからユーザーを利用できるようにするには |
| manage | レルム管理者がユーザーを管理できるかどうかを定義します。 |
|
| manage-group-membership | レルム管理者がユーザーをグループに割り当てたり、グループから割り当て解除したりできるかどうかを定義します。 | なし |
| map-roles | レルム管理者がユーザーにロールを割り当てたり、ユーザーからロールを割り当て解除したりできるかどうかを定義します。 | なし |
| impersonate | レルム管理者が他のユーザーになりすますことができるかどうかを定義します。 |
|
ユーザーリソースタイプは、グループに設定できる一部の権限と密接な関係があります。ほとんどの場合、ユーザーはグループのメンバーであり、グループの view-members または manage-members アクセス権を付与すると、レルム管理者がそのグループのメンバーを表示および管理 (view および manage) することもできるようになります。
この機能はフェデレーションリソースへのアクセスの強制をサポートしていませんが、この制限は検討中で今後改善される可能性があります。
11.3.2.2. グループリソースタイプ リンクのコピーリンクがクリップボードにコピーされました!
Groups レルムリソースタイプは、レルム内のグループを表します。次の一連の管理操作に基づいてグループの権限を管理できます。
| オペレーション | 説明 |
|---|---|
| view | レルム管理者がグループを表示できるかどうかを定義します。クエリーからグループを利用できるようにする場合は常に、このスコープを設定する必要があります。 |
| manage | レルム管理者がグループを管理できるかどうかを定義します。 |
| view-members | レルム管理者がグループメンバーを表示できるかどうかを定義します。この操作は、グループ階層内のすべての子グループに適用されます。特定のサブグループに対する権限を明示的に拒否し、これを防ぐことができます。 |
| manage-members | レルム管理者がグループメンバーを管理できるかどうかを定義します。この操作は、グループ階層内のすべての子グループに適用されます。特定のサブグループに対する権限を明示的に拒否し、これを防ぐことができます。 |
| impersonate-members | レルム管理者がグループメンバーを偽装できるかどうかを定義します。この操作は、グループ階層内のすべての子グループに適用されます。特定のサブグループに対する権限を明示的に拒否し、これを防ぐことができます。 |
| manage-membership | レルム管理者がグループのメンバーを追加または削除できるかどうかを定義します。 |
11.3.2.3. クライアントリソースタイプ リンクのコピーリンクがクリップボードにコピーされました!
Clients レルムリソースタイプは、レルム内のクライアントを表します。次の一連の管理操作に基づいてクライアントの権限を管理できます。
| オペレーション | 説明 |
|---|---|
| view | レルム管理者がクライアントを表示できるかどうかを定義します。クエリーからクライアントを利用できるようにする場合は常に、このスコープを設定する必要があります。 |
| manage | レルム管理者がクライアントを管理できるかどうかを定義します。 |
| map-roles | レルム管理者がクライアントによって定義された任意のロールをユーザーに割り当てることができるかどうかを定義します。 |
| map-roles-composite | レルム管理者が、クライアントによって複合として定義された任意のロールを別のロールに割り当てることができるかどうかを定義します。 |
| map-roles-client-scope | レルム管理者がクライアントによって定義された任意のロールをクライアントスコープに割り当てることができるかどうかを定義します。 |
map-roles 操作では、ユーザーを管理したり、ロールを任意に割り当てたりする権限は付与されません。管理者は、ユーザーに対するユーザーロールマッピング権限も持っている必要があります。
11.3.2.4. ロールリソースタイプ リンクのコピーリンクがクリップボードにコピーされました!
Roles レルムリソースタイプは、レルム内のロールを表します。次の一連の管理操作に基づいて、ロールの権限を管理できます。
| オペレーション | 説明 |
|---|---|
| map-role | レルム管理者がユーザーにロール (または複数のロール) を割り当てることができるかどうかを定義します。 |
| map-role-composite | レルム管理者が 1 つのロール (または複数のロール) を複合として別のロールに割り当てることができるかどうかを定義します。 |
| map-role-client-scope | レルム管理者がクライアントスコープにロール (または複数のロール) を適用できるかどうかを定義します。 |
map-roles 操作では、ユーザーを管理したり、ロールを任意に割り当てたりする権限は付与されません。管理者は、ユーザーに対するユーザーロールマッピング権限も持っている必要があります。
map-roles、map-roles-composite、または map-roles-client-scope スコープにクライアントリソースタイプ権限がある場合、ロールがクライアントロールであれば、その権限がどのロールリソースタイプ権限よりも優先されます。
11.3.3. レルムへの管理者権限の有効化 リンクのコピーリンクがクリップボードにコピーされました!
レルムで fine-grained admin permissions を有効にするには、次の手順に従います。
- 管理コンソールへログインします。
- Realm settings をクリックします。
- Admin Permissions を有効にして、Save をクリックします。
有効にすると、管理コンソールの左側のメニューに Permissions セクションが表示されます。
このセクションから、レルムリソースの権限を管理できます。
11.3.4. パーミッションの管理 リンクのコピーリンクがクリップボードにコピーされました!
Permissions タブには、レルム内のすべてのアクティブな権限の概要が表示されます。ここから、管理者は権限を作成、更新、削除、または検索できます。作成した権限を事前に評価して、期待どおりにレルムリソースへのアクセスが適用されているかどうかを確認することもできます。詳細は、権限の評価 を参照してください。
権限を作成するには、Create permission ボタンをクリックし、保護するリソースの種類を選択します。
リソースタイプを選択したら、選択したタイプの 1 つ以上のリソースのセットに対してアクセスをどのように適用するかを定義できます。
権限を管理する場合、次の設定を定義できます。
- Name: 権限の一意の名前。名前はポリシー名とも競合しないようにしてください。
- Description: 権限の内容を詳しく説明するオプションの説明
- Authorization scopes: 選択したリソースタイプに対して保護する操作を表す 1 つ以上のスコープのセット。管理者は、対応するアクションを実行するために、各操作に対して明示的な権限が割り当てられている必要があります。たとえば、view 権限なしで manage 権限のみを割り当てると、ユーザーは表示されなくなります。
- Enforce access to: 対象の権限で、選択したタイプのすべてのリソースへのアクセス制限を適用するか、レルム内の特定のリソースへのアクセス制限を適用するかを定義します。
- Policies: 選択したリソースへのアクセスを許可または拒否するために評価する必要がある 1 つ以上のポリシーのセットを定義します。
権限を作成すると、選択した (すべての) リソースとスコープへのアクセス制限を適用するときに、権限が自動的に有効になります。実稼働環境で権限を作成および更新するときは、この点に留意してください。
11.3.4.1. レルムリソースを表示するための権限の定義 リンクのコピーリンクがクリップボードにコピーされました!
この機能は、部分評価メカニズムを利用して、レルムリソースをリスト表示および表示するときにレルム管理者が持つ権限を部分的に評価します。このメカニズムは、レルム管理者を直接または間接的に参照するビュー関連のスコープに設定されたすべての権限を事前に取得します。
特定のタイプのレルムリソースを表示 (view) するアクセスを許可する権限では、クエリーから使用できるように、次のいずれかのポリシーを使用する必要があります。
-
User -
Group -
Role
上記のいずれかのポリシーを使用すると、Red Hat build of Keycloak は、レルム管理者への直接的な参照 (ユーザーポリシーを使用している場合) または間接的な参照 (ロールポリシーまたはグループポリシーを使用している場合) を検索して、レルム管理者が表示できるリソースのセットを事前に計算できます。したがって、部分評価メカニズムには、データベースレベルで実行されるアクセス制御を使用してクエリーを装飾することが含まれます。この機能は主に、リソースのページネーションを適切に許可し、クエリーによって返される各レルムリソースの権限を評価するときにサーバー側で追加のオーバーヘッドを回避するために重要です。
部分的な評価とフィルタリングは、機能がレルムに対して有効になっており、ユーザーに view-users や view-clients などのビュー関連の管理ロールが付与されていない場合にのみ実行されます。たとえば、admin ロールが付与された通常のサーバー管理者の場合は、これは発生しません。
リソースをクエリーする場合、部分評価メカニズムは次のように機能します。
- レルム管理者を参照する特定のリソースタイプのすべての権限を解決する
- 各権限を事前に評価して、レルム管理者が権限に関連付けられたリソースにアクセスできるかどうかを確認する
- 許可または拒否されたリソースに基づいてデータベースクエリーを装飾する
その結果、クエリーの結果セットには、レルム管理者がビュー関連のスコープのいずれかにアクセスできるレルムリソースのみが保持されます。
11.3.4.2. 権限の検索 リンクのコピーリンクがクリップボードにコピーされました!
管理コンソールでは、権限を検索する方法がいくつか提供されており、次の機能がサポートされています。
- Name に特定の文字列を含む権限を検索する
- Users などの特定のリソースタイプの権限を検索する
-
特定のリソースに適用される特定のリソースタイプの権限を検索する (ユーザー
myadminの Users リソースタイプなど)。 - 特定のスコープを持つ特定のリソースタイプの権限を検索する (manage スコープを持つ Users リソースタイプの権限など)。
-
特定のリソースに適用され、特定のスコープを持つ特定のリソースタイプの権限を検索する (ユーザー
myadminの manage スコープを持つ Users リソースタイプの権限など)。
きめ細かな権限検索
これらの機能により、サーバー管理者は権限の範囲に対してクエリーを実行し、1 つ以上のレルムリソースとそのスコープのセットへのアクセス制限を適用する権限を特定できます。Evaluation タブの評価ツールと組み合わせることで、レルム内の権限管理向けのキー管理ツールが提供されます。詳細は、権限の評価 を参照してください。
11.3.5. ポリシーの管理 リンクのコピーリンクがクリップボードにコピーされました!
Policies タブでは、管理者はさまざまなアクセス制御方法を使用して条件を定義し、レルムリソースに対して操作を実行しようとする管理者に権限を付与するかどうかを決定できます。権限を管理するときは、レルムリソースへのアクセスを許可または拒否するために、少なくとも 1 つのポリシーを関連付ける必要があります。
ポリシーは基本的に、GRANT または DENY のいずれかに評価される条件です。その結果によって、付与するか拒否するかが決まります。
権限は、関連付けられているすべてのポリシーが GRANT と評価された場合にのみ付与されます。そうでない場合、権限は拒否され、レルム管理者は保護されたリソースにアクセスできなくなります。
Red Hat build of Keycloak には、選択可能な一連の組み込みポリシーが用意されています。
レルムに対して明確かつ安定した権限モデルが確立されると、ポリシーを作成する必要性は少なくなります。代わりに、既存のポリシーを再利用して、さらに多くの権限を作成することもできます。
各ポリシータイプの詳細は、ポリシーの管理 を参照してください。
11.3.6. 権限の評価 リンクのコピーリンクがクリップボードにコピーされました!
Evaluation タブには、権限が期待どおりにアクセス制限を適用していることを管理者が検証できるようにテスト環境が提供されます。管理者は、特定のリソースへのアクセス制限を適用するときにどのような権限が関係しているか、またその結果はどうなるかを確認できます。
評価を実行するには、一連のフィールドを指定する必要があります。
-
User、レルム管理者、またはリソースにアクセスしようとしているサブジェクト -
Resource Type、評価するリソースタイプ -
Resource Selector、選択したResource Typeに応じて、ユーザー、グループ、クライアントなどの特定のレルムリソースを選択するように求められます。 -
Authorization scope、評価するスコープまたは操作。指定しない場合は、選択したリソースタイプのすべてのスコープに対して評価が行われます。
きめ細かな権限評価タブ
Evaluate ボタンをクリックすると、選択した User が管理コンソールまたは管理 API を使用してリソースにアクセスしようとした場合と同様に、選択したリソースとスコープに関連付けられているすべての権限がサーバーによって評価されます。
たとえば、上記の例では、Allow managing all realm users 権限が PERMIT に投票され、manage スコープへのアクセスが許可されているため、ユーザー myadmin がユーザー user-1 を 管理 できることがわかります。しかし、他のスコープはすべて拒否されています。
Permissions タブの検索機能と組み合わせることで、トラブルシューティングを実行し、期待どおりに動作していない権限を特定できます。
権限を評価する際には、次のルールが適用されます。
- リソース固有の権限の結果は、特定のタイプのすべてのリソースへのアクセスを許可するより広範な権限よりも優先されます。
- 特定のリソースに対する権限が存在しない場合は、特定のタイプのすべてのリソースへのアクセスを許可する権限に基づいてアクセスが付与されます。
- 特定のリソースへのアクセス制限を適用する権限が各種ある場合、そのすべてがリソースへのアクセスを許可する場合にのみアクセスを付与します。
11.3.6.1. 競合する権限の解決 リンクのコピーリンクがクリップボードにコピーされました!
権限には複数のポリシーを関連付けることができます。認可モデルが進化するにつれて、権限内の一部のポリシーや、特定のリソースに関連する異なる権限が競合することがよくあります。
いずれかの権限が "DENY" と評価された場合、評価結果は "denied" になります。同じリソースに関連する権限が複数ある場合、対象の権限を "granted" とするには、それらすべてにアクセス権を付与する必要があります。
Fine-grained admin permissions により、個々のリソースまたはリソースタイプ自体 (すべてのユーザー、すべてのグループなど) に対して権限を設定できます。特定のリソースに関連する権限が存在する場合、評価中に "all-resource" 権限は 考慮されません。特定の権限が存在しない場合は、"all-resource" 権限にフォールバックします。このアプローチは realm-admins グループのメンバーがレルムグループのメンバーを管理できるようにする一方で、realm-admins グループのメンバー自身は管理できないようにするといったシナリオに対処するのに役立ちます。
11.3.7. レルム管理者としてレルム管理コンソールにアクセスする リンクのコピーリンクがクリップボードにコピーされました!
レルム管理者は、割り当てられたレルム内のリソースを管理できる専用のレルム固有の管理コンソールにアクセスできます。このコンソールは、通常サーバー管理者が使用する Red Hat build of Keycloak とは別です。
専用レルム管理コンソールと利用可能なロールの詳細は、専用管理コンソール を参照してください。
管理コンソールにアクセスするには、管理する必要があるリソースに応じて、レルム管理者に少なくとも次のロールの 1 つが割り当てられている必要があります。
- query-users - レルムユーザーを照会するために必要です。
- query-groups - レルムグループを照会するために必要です。
- query-clients - レルムクライアントを照会するために必要です。
これらのロールのいずれかをレルムユーザーに付与すると、そのユーザーは管理コンソールにアクセスできるようになりますが、アクセスできるのは付与されたロールに対応する領域のみです。たとえば、query-users ロールを割り当てると、レルム管理者は管理コンソールの Users セクションにのみアクセスできるようになります。管理者が複数のリソースタイプ (ユーザーとグループの両方など) を担当している場合は、対応するすべての "query-*" ロールを割り当てる必要があります。
これらのロールは、クエリーリソースへの基本的なアクセスを許可しますが、それらを表示または変更する権限は付与しません。レルムリソースへのアクセスを許可または拒否するには、各リソースタイプで使用可能な操作の権限を設定する必要があります。詳細は、権限の管理 を参照してください。
11.3.7.1. ロールと権限の関係 リンクのコピーリンクがクリップボードにコピーされました!
きめ細かな権限は、追加の権限を付与するために使用されます。ビルトインの admin ロールのデフォルト動作をオーバーライドすることはできません。レルム管理者に 1 つ以上の管理者ロールが割り当てられている場合、権限は評価されません。つまり、それぞれの管理者ロールがレルム管理者に割り当てられると、権限の評価はバイパスされ、アクセスが許可されます。
| 管理者ロール | 説明 |
|---|---|
| query-users | レルム管理者は、管理コンソールの Users セクションを表示し、レルム内のユーザーを検索できます。ユーザーを 表示する 権限は付与されません。 |
| query-groups | レルム管理者は管理コンソールの Groups セクションを表示し、レルム内のグループを検索できます。グループを 表示する 権限は付与されません。 |
| query-clients | レルム管理者は、管理コンソールの Clients セクションを表示し、レルム内のクライアントを検索できます。クライアントを 表示する 権限は付与されません。 |
| view-users | レルム管理者は、レルム内のすべてのユーザーとグループを 表示 できます。 |
| manage-users | レルム管理者は、レルム内のすべてのユーザーの 表示、ロールのマップ、グループメンバーシップの管理、および 管理 を実行できます。また、レルム内のグループの 表示、メンバーシップの管理、および 管理 を実行できます。 |
| impersonation | レルム管理者はレルム内のすべてのユーザーに なりすます ことができます。 |
| view-clients | レルム管理者はレルム内のすべてのクライアントを 表示 できます。 |
| manage-clients | レルム管理者は、レルム内のすべてのクライアントとクライアントスコープを 表示 および 管理 できます。 |
11.3.8. 一般的な使用例を理解する リンクのコピーリンクがクリップボードにコピーされました!
管理者が、管理者グループに属するユーザーを除くレルム内のすべてのユーザーを管理者グループにより管理できるようにする場合があります。この例には、test レルムと test-admins グループが含まれています。
11.3.8.1. 管理者グループによるユーザー管理の許可 リンクのコピーリンクがクリップボードにコピーされました!
ユーザー権限を作成し、test-admins グループのメンバーのレルム内のすべてのユーザーを表示および管理できるようにします。
- 管理コンソールの Permissions タブに移動します。
- Create permission をクリックし、リソースタイプとして Users を選択します。
-
Disallow managing test-adminsなどの名前を入力します。 - 認可スコープの view と manage を選択し、All Users をチェックしたままにします。
- Create new policy をクリックして、アクセスを取得するために満たす必要がある条件を作成します。
-
名前に
Allow test-adminsと入力し、Policy type として Group を選択します。 -
Add groups ボタンをクリックし、
test-adminsグループを選択して、Save をクリックします。 - Create permission ページで Save をクリックします。
11.3.8.2. 管理者グループによるユーザー管理を許可するが、グループメンバーによるユーザー管理は許可しない リンクのコピーリンクがクリップボードにコピーされました!
test-admins が他の管理者を管理できないように、グループ自体のメンバーを除外します。
- Create permission をクリックして新しい権限を作成します。
- 今回は Groups リソースタイプを選択します。
-
Disallow managing test-adminsなどの名前を入力します。 - manage-members 認可スコープを選択します。
-
Specific Groups を選択し、
test-adminsグループを選択します。 - Group タイプの 新しいポリシーを作成 します。
-
名前に
Disallow test-adminsと入力し、test-adminsグループを選択します。 - ポリシーを Negative Logic に切り替え、ポリシーを 保 します。
- 権限を 保存 します。
11.3.8.3. 特定のロールが割り当てられたグループのメンバーのユーザーになりすますことを許可する リンクのコピーリンクがクリップボードにコピーされました!
- 偽装を許可する特定のユーザー (またはすべてのユーザー) に対して "ユーザー権限" を作成します。
-
test-adminsのメンバーにアクセスを許可する "Group Policy" を作成します。 -
impersonation-adminロールが割り当てられたユーザーにアクセスを許可する "Role Policy" を作成します。 - 両方のポリシーを権限に割り当てます。
11.3.8.4. 特定のユーザーをブラックリストに登録してなりすましを防ぐ リンクのコピーリンクがクリップボードにコピーされました!
- なりすましを防止する特定のユーザーに対して ユーザー権限 を作成します。
- 拒否と評価されるポリシー (ユーザーが選択されていないユーザーポリシーなど) を作成します。
- 選択したユーザーのなりすましを効果的にブロックするには、権限にポリシーを割り当てます。
11.3.8.5. 定義されたロールが割り当てられた管理者に対して、ユーザーの表示は許可するが管理は許可しない リンクのコピーリンクがクリップボードにコピーされました!
- すべてのユーザーに対する view スコープを持つ "ユーザー権限" を作成します。
- 特定のロールが割り当てられたユーザーにアクセスを許可する "ロールポリシー" を作成します。
-
ユーザーの詳細が変更されないように、
manageスコープを 割り当てない でください。
11.3.8.6. グループのメンバーのユーザーとロールの割り当てを管理できるようにする リンクのコピーリンクがクリップボードにコピーされました!
- すべてのユーザーに対して、manage、map-roles スコープを持つ "ユーザー権限" を作成します。
-
test-adminsのメンバーにアクセスを許可する "Group Policy" を作成します。
11.3.8.7. グループのメンバーの表示と管理は許可するが、サブグループのメンバーは許可しない リンクのコピーリンクがクリップボードにコピーされました!
-
特定のグループ
mygroupに対して view-members および manage-members スコープを持つ "グループ権限" を作成します。 -
test-adminsを対象とした "グループポリシー" を割り当てます。 -
特定のグループに対して view-members および manage-members スコープを持つ別の "グループ権限" を作成し、
mygroupのすべてのサブグループを選択します。 -
test-adminsに対してアクセスを拒否する "グループポリシー" を作成し、それを "サブグループ" 権限に割り当てます。
11.3.8.8. 特定のグループのメンバーになりすますことを許可する リンクのコピーリンクがクリップボードにコピーされました!
-
特定のグループ
mygroupに対して、impersonate-members を持つ "グループ権限" を作成します。 -
mygroup-helpdeskをターゲットとする "グループポリシー" を割り当てます。
11.3.9. パフォーマンスに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
レルムに対してこの機能を有効にすると、レルム管理者がサポートされているリソースタイプのいずれかを管理するときに追加のオーバーヘッドが発生します。これは主に次の操作を実行する場合に当てはまります。
- リストと検索
- 更新または削除
この機能では、定義した権限をもとにアクセス制御を適用するためにレルムリソースを表示または管理する場合に必ず、追加のチェックが行われます。主にレルムリソースをクエリーする場合にこの追加のチェックが行われます。理由として、レルム管理者の権限を部分的に評価して結果をフィルタリングおよびページネーションするため、余計なオーバーヘッドが発生するためです。
レルム管理者ユーザーを参照する権限を減らし、アクセスできるリソースの大半を制限するほうが適切です。たとえば、ユーザーを管理するためにレルム管理者にアクセス権を委任する場合は、それらのユーザーをグループのメンバーにすることが適切です。そうすることで、権限を評価する際のパフォーマンスが向上するだけでなく、管理のしやすい権限モデルを形成できます。
レルムリソースを照会するときに、アクセス制限の影響を主に受けます。たとえば、レルム管理者が、ユーザー、ロールまたはグループポリシーなどにおいて何千もの権限で参照されている場合に、レルムリソースのクエリーをするときに、部分的評価のメカニズムが使用されると、データベースからそのような権限がすべてクエリーされてしまいます。より簡潔で最適化されたモデルを使用すると、取得する権限を少なくしながらも、領域リソースへのアクセスを許可または拒否するのに十分な権限を取得できます。
たとえば、レルム内のユーザーの表示および管理の権限をレルム管理者に付与する場合は、レルム内の個々のユーザーごとに個別の権限を作成するよりも、グループ権限を使用する方が適切です。また、ポリシーに、直接参照 (ユーザーポリシー) または間接 (ロールまたはグループポリシー) 参照のいずれかでレルム管理者を参照する権限が含まれている場合に、リソースタイプに関係なく、複数 (何千) の権限にまたがらないようにしてください。
たとえば、レルム内にユーザーが 3 つあり、レルム管理者の bob にそれらのユーザーの view および manage 権限を付与するとします。権限モデルが最適でない場合、ユーザーポリシーで bob へのアクセスを許可し、ユーザーごとに 3 つの異なる権限を作成します。そうではなく、同じユーザーポリシーを使用して bob にアクセスを許可しながら、これら 3 つのユーザーをまとめて単一のグループ権限、または単一のユーザー権限を指定できます。
これら 3 つのユーザーにさらに多くのレルム管理者のアクセス権を付与する場合も同様です。個別のポリシーを作成する代わりに、グループポリシーまたはロールポリシーの使用を検討することもできます。権限モデルはユースケースに固有ですが、これらの推奨事項は、管理性を向上させるだけでなく、レルムリソースの管理にあたり、サーバーの全体的なパフォーマンスを向上させるためにも重要です。
サーバー設定に関しては、レルムのサイズと、所有する権限およびポリシーの数に応じて、キャッシュ設定を変更して次のキャッシュのサイズを増やすことを検討してください。
-
realms -
users -
authorization
デプロイメントのサイズを決定する場合、最適な値を見つけられるように、これらのキャッシュのサーバーメトリクスを確認することを検討してください。
リソースをフィルタリングする場合、部分評価メカニズムは最終的に SQL ステートメントの IN 句をもとに結果をフィルタリングします。データベースによっては、IN 句のパラメーターの数に制限がある場合があります。これは、1000 個までというパラメーターの厳しい制限がある、過去バージョンの Oracle データベースなどの場合に当てはまります。このような問題を回避するには、単一のレルム管理者にアクセスを許可または拒否する権限の数に関する、上記の考慮事項に留意してください。