11.3. 詳細にわたる管理者権限


注記

Fine Grain Admin Permissions はテクノロジープレビュー機能ですが、完全にサポートされていません。この機能はデフォルトで無効になっています。

-Dkeycloak.profile=preview または -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled を使用してサーバーを起動します。詳細は、Profiles を参照してください。

manage-realmmanage-users などのロールは粒度が荒すぎて、より詳細なパーミッションを持つ制限された admin アカウントの作成が必要になることがあります。Red Hat Single Sign-On を使用すると、レルム管理に制限付きアクセスポリシーを定義して割り当てることができます。以下に例を示します。

  • 特定のクライアントの管理
  • 特定グループに所属するユーザーの管理
  • グループのメンバーシップの管理
  • 制限されたユーザー管理。
  • 粒度の細かい偽装制御
  • ユーザーの特定の制限付きロールセットを割り当てることができる。
  • 特定の制限付きロールセットを複合ロールに割り当てることができます。
  • 特定の制限付きロールのセットをクライアントのスコープに割り当てることができます。
  • ユーザー、グループ、ロール、およびクライアントを表示および管理するための新しい一般的なポリシー。

詳細にわたる管理者権限で注目すべき重要な点があります。

  • 粒度の細かい管理権限は、認可サービス に実装されました。細分のパーミッションに分割する前に、この機能に対して読むことを強く推奨します。
  • きめ細かな権限は、専用の管理コンソール と、それらのレルム内で定義された管理者内でのみ使用できます。レルム間の細かいグラザブルパーミッションを定義することはできません。
  • 追加のパーミッションを付与するのに細かいパーミッションを使用します。ビルトインの admin ロールのデフォルト動作を上書きすることはできません。

11.3.1. 特定のクライアントの管理

最初に、管理者がクライアントを 1 つ、クライアントを 1 つだけ管理できるようにします。この例では、test という名前のレルムと、sales-application というクライアントがあります。レルム test では、そのレルムのパーミッションで、そのアプリケーションを管理する権限をユーザーに付与します。

重要

レルムの細かいアクセス権限をまたがって実行できません。master レルムの管理者は、以前の章で定義された事前定義済みの admin ロールに制限されます。

11.3.1.1. パーミッションのセットアップ

最初に管理コンソールにログインし、そのクライアントのパーミッションを設定できます。きめ細かなパーミッションを定義するクライアントの管理セクションに移動します。

クライアント管理

fine grain client

Permissions というタブメニュー項目が表示されるはずです。そのタブをクリックします。

クライアントパーミッションタブ

fine grain client permissions tab off

デフォルトでは、各クライアントは細かいパーミッションを実行することはできません。したがって、Permissions Enabled をオンにしてパーミッションを初期化します。

重要

Permissions Enabled スイッチをオフに設定すると、このクライアントに定義したすべてのパーミッションが削除されます。

クライアントパーミッションタブ

fine grain client permissions tab on

Permissions Enabled を on に切り替えると、認可サービス を使用して、背後でさまざまなパーミッションオブジェクトを初期化します。この例では、クライアントの 管理 パーミッションが対象になります。クライアントの manage パーミッションを処理するパーミッションにリダイレクトするものをクリックします。すべての認可オブジェクトは、realm-management クライアントの Authorization タブに含まれます。

クライアントパーミッションの管理

fine grain client manage permissions

最初に初期化された場合、manage パーミッションには関連付けられたポリシーがありません。policy タブに移動して作成する必要があります。高速に進むには、上記のイメージに表示される Authorization リンクをクリックします。次に、policies タブをクリックします。

このページに、Create policy というプルダウンメニューがあります。設定可能なさまざまなポリシーがあります。ロールまたはグループに関連付けられたポリシーを定義したり、JavaScript でルールを定義したりできます。この簡単な例では、User Policy を作成します。

ユーザーポリシー

fine grain client user policy

このポリシーは、ユーザーデータベースのハードコーディングされたユーザーと一致します。この場合、これは sales-admin ユーザーです。次に、sales-application クライアントの manage パーミッションページに戻り、ポリシーをパーミッションオブジェクトに割り当てる必要があります。

ユーザーグループの割り当て

fine grain client assign user policy

sales-admin ユーザーには、sales-application クライアントを管理するパーミッションが使用できるようになりました。

さらに 1 つのことが必要です。Role Mappings タブに移動し、query-clients ロールを sales-admin に割り当てます。

query-clients の割り当て

fine grain assign query clients

これを行う必要があるのはなぜですか ?このロールは、sales-admin が管理コンソールにアクセスする際にレンダリングするメニュー項目を管理コンソールに指示します。query-clients ロールは、sales-admin ユーザーのクライアントメニューをレンダリングするよう管理コンソールに指示します。

IMPORTANT query-clients ロールを設定しない場合、sales-admin などの制限された管理者が管理コンソールにログインするときにメニューオプションは表示されません。

11.3.1.2. テスト

次に、master レルムからログアウトし、ユーザー名として sales-admin を使用して、test レルム 専用の管理コンソール に再ログインします。これは /auth/admin/test/console にあります。

営業管理者ログイン

fine grain sales admin login

これで、この admin がこのクライアントを 1 つ管理できるようになりました。

11.3.2. ユーザーロールのマッピングの制限

もう 1 つは、管理者がユーザーに割り当て可能なロールセットを制限することです。最後のサンプルを続行して、'sales-admin' ユーザーのパーミッションセットを拡張して、このアプリケーションにアクセスできるユーザーも制御できるようにします。きめ細かいパーミッションを使用することで、sales-adminsales-application への特定のアクセス権限を付与するロールのみを割り当てることができます。また、管理者はロールのみをマッピングでき、他のタイプのユーザー管理を実行しないように制限することもできます。

sales-application が 3 つの異なるクライアントロールを定義しました。

セールスアプリケーションロール

fine grain sales application roles

sales-admin ユーザーがこれらのロールをシステムの任意のユーザーにマッピングできるようにします。これを実行する最初のステップでは、ロールが admin でマップされるようにします。viewLeads ロールをクリックすると、このロールの Permissions タブがあることを確認できます。

Leads ロールのパーミッションタブの表示

fine grain view leads role tab

そのタブをクリックし、Permissions Enabled を on にすると、ポリシーを適用することのできる多数のアクションが表示されます。

Leads パーミッションの表示

fine grain view leads permissions

関心のあるのは map-role です。このパーミッションをクリックし、上記の例で作成されたのと同じ User Policy を追加します。

map-roles パーミッション

fine grain map roles permission

行った内容は、sales-adminviewLeads ロールをマッピングできることを示しています。何も指定していないユーザーは、管理者がこのロールをマップできるユーザーで指定します。このレルムの管理コンソールの Users セクションに移動する必要があります。左側のメニュー項目 Users をクリックすると、レルムのユーザーインターフェイスが表示されます。Permissions タブが表示されるはずです。それをクリックして有効にします。

ユーザーパーミッション

fine grain users permissions

対象のパーミッションは map-roles です。これは、管理者のみがロールをユーザーにマッピングできるようにする制限ポリシーです。map-roles パーミッションをクリックし、作成したユーザーポリシーを再度追加すると、sales-admin はロールをどのユーザーにもマッピングできます。

最後に、view-users ロールを sales-admin に追加します。これにより、管理者は、sales-application ロールを追加するレルム内のユーザーを表示できます。

view-users の追加

fine grain add view users

11.3.2.1. テスト

次に、master レルムからログアウトし、ユーザー名として sales-admin を使用して、test レルム 専用の管理コンソール に再ログインします。これは /auth/admin/test/console にあります。

これで、sess-admin がシステムにユーザーを表示できるようになります。ユーザーの 1 つを選択すると、各ユーザー詳細ページが読み取り専用であることが表示されます (Role Mappings タブを除く)。これらのタブに移動すると、sales-application ロールを参照する場合を除き、管理者がユーザーにマップするのに Available となっているロールがないことが確認できます。

viewLeads の追加

fine grain add view leads

sales-adminviewLeads ロールをマッピングすることのみを指定しました。

11.3.2.2. クライアントごとの map-roles ショートカット

sales-application を公開するすべてのクライアントロールに対してこれを行う必要がある場合や、より容易になってしまうと、管理者がクライアントで定義されているすべてのロールをマップできるように指定する方法があります。マスターレルム admin に管理コンソールにログインし、sales-application パーミッションページに戻ると、map-roles パーミッションが表示されます。

クライアント map-roles パーミッション

fine grain client permissions tab on

この特別なパーミッションへのアクセスを管理者に付与すると、この管理者はクライアントで定義されるロールをマップできます。

11.3.3. パーミッションの完全リスト

特定のクライアントやクライアントの特定のロールの管理以外に、より詳細なパーミッションを設定することが可能です。本章では、レルムに設定できるパーミッションタイプ全体を定義します。

11.3.3.1. ロール

特定のロールの Permissions タブに移動すると、これらのパーミッションタイプが表示されます。

map-role
管理者がこのロールをユーザーにマッピングできるかどうかを決定するポリシー。これらのポリシーは、管理者がユーザーロールマッピングタスクを実行することが許可されているわけではなく、ロールをユーザーにマッピングできることのみを指定します。また、管理者は管理またはロールのマッピングパーミッションを持っている必要があります。詳細については、ユーザー権限 を参照してください。
map-role-composite
管理者がこのロールを複合としてマッピングできるかどうかを決定するポリシー。管理者は、そのクライアントのパーミッションを管理する必要があるにも拘らず、ロールの map-role-composite 権限がない場合は、クライアントのロールを定義できます。
map-role-client-scope
管理者がこのロールをクライアントの範囲に適用するかどうかを決定するポリシー。管理者がクライアントを管理できる場合でも、この特権が付与されない限り、このロールを含むクライアントのトークンを作成するパーミッションがありません。

11.3.3.2. クライアント

特定のクライアントの パーミッション タブに移動すると、これらのパーミッションタイプが表示されます。

view
管理者がクライアントの設定を表示できるかどうかを決定するポリシー。
manage
管理者がクライアントの設定を表示および管理するかどうかを判断するポリシー。この場合、意図せずに、特権がリークする可能性があるという問題があります。たとえば、管理者がロールをクライアントのスコープにマップする権限を持たない場合でも、管理者はロールをハードコーディングするプロトコルマッパーを定義できます。これは、現状に個別のパーミッションを割り当てる方法がないため、プロトコルマッパーの制限になります。
configure
クライアント管理の特権が減ります。管理者によるプロトコルマッパーの定義、クライアントテンプレートの変更、クライアントのスコープ変更が許可されていないことを除けば、管理 スコープに似ています。
map-roles
管理者がクライアントで定義したロールをユーザーにマップできるかどうかを決定するポリシー。これはショートカットであり、使いやすく、クライアントが定義した各ロールのポリシーを定義する必要はありません。
map-roles-composite
管理者がクライアントで定義したロールを別のロールに複合としてマッピングできるかどうかを決定するポリシー。これはショートカットであり、使いやすく、クライアントが定義した各ロールのポリシーを定義する必要はありません。
map-roles-client-scope
管理者がクライアントで定義した任意のロールを別のクライアントのスコープにマッピングできるかどうかを決定するポリシー。これはショートカットであり、使いやすく、クライアントが定義した各ロールのポリシーを定義する必要はありません。

11.3.3.3. ユーザー

全ユーザーの Permissions タブに移動すると、全ユーザーのパーミッションタイプがリスト表示されます。

view
管理者がレルム内のすべてのユーザーを表示できるかどうかを決定するポリシー。
manage
管理者がレルム内のすべてのユーザーが管理できるかどうかを決定するポリシー。この権限は、管理者にユーザーロールマッピングを実行する権限を付与しますが、管理者がマッピングできるロールを指定するものではありません。admin がマッピングできるように、各ロールに特権を定義する必要があります。
map-roles
これは、manage スコープによって付与される権限のサブセットです。この場合、管理者はロールのみをマップできます。admin は、他のユーザー管理操作を実行できません。また、admin の適用が許可されるロールは、クライアントロールに対応する場合はロールごとまたはロールのセットごとに指定する必要があります。
manage-group-membership
map-roles と同様に、グループメンバーシップに関連するものを除き、ユーザーが追加または削除できるグループです。これらのポリシーは、管理者がメンバーシップを管理できるグループではなく、グループメンバーシップを管理する admin パーミッションを付与します。各グループの manage-members パーミッションにポリシーを指定する必要があります。
切り替え
他のユーザーの権限を借用できるかを決定するポリシー。これらのポリシーは、管理者の属性およびロールマッピングに適用されます。
user-impersonated
権限を借用できるユーザーを決定するポリシー。これらのポリシーは、権限を借用するユーザーに適用されます。たとえば、管理者権限のあるユーザーを偽装するポリシーを定義する場合などです。

11.3.3.4. グループ

特定のグループの Permissions タブに移動すると、これらのパーミッションタイプが表示されます。

view
管理者がグループの情報を表示するかどうかを決定するポリシー。
manage
管理者がグループの設定を管理するかどうかを決定するポリシー。
view-members
管理者がグループのメンバーのユーザーの詳細を表示できるかどうかを決定するポリシー。
manage-members
管理者がこのグループに所属するユーザーを管理するかどうかを決定するポリシー。
manage-membership
管理者がグループのメンバーシップを変更できるかどうかを決定するポリシー。グループからメンバーを追加または削除します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.