11.3. 詳細にわたる管理者権限
Fine Grain Admin Permissions はテクノロジープレビュー機能ですが、完全にサポートされていません。この機能はデフォルトで無効になっています。
-Dkeycloak.profile=preview
または -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled
を使用してサーバーを起動します。詳細は、プロファイル を参照してください。
manage-realm
、manage-users
などのロールは粒度が荒すぎて、より詳細なパーミッションを持つ制限された admin アカウントの作成が必要になることがあります。Red Hat Single Sign-On を使用すると、レルム管理に制限付きアクセスポリシーを定義して割り当てることができます。以下に例を示します。
- 特定のクライアントの管理
- 特定グループに所属するユーザーの管理
- グループのメンバーシップの管理
- 制限されたユーザー管理。
- 粒度の細かい偽装制御
- ユーザーの特定の制限付きロールセットを割り当てることができる。
- 特定の制限付きロールセットを複合ロールに割り当てることができます。
- 特定の制限付きロールのセットをクライアントのスコープに割り当てることができます。
- ユーザー、グループ、ロール、およびクライアントを表示および管理するための新しい一般的なポリシー。
詳細にわたる管理者権限で注目すべき重要な点があります。
- 粒度の細かい管理権限は、承認サービス に実装されました。細分のパーミッションに分割する前に、この機能に対して読むことを強く推奨します。
- 細かいアクセス権限は、専用の管理コンソール およびそれらのレルム内でのみ利用できます。レルム間の細かいグラザブルパーミッションを定義することはできません。
- 追加のパーミッションを付与するのに細かいパーミッションを使用します。ビルトインの admin ロールのデフォルト動作を上書きすることはできません。
11.3.1. 特定のクライアントの管理
最初に、管理者がクライアントを 1 つ、クライアントを 1 つだけ管理できるようにします。この例では、test
という名前のレルムと、sales-application
というクライアントがあります。レルム test
では、そのレルムのパーミッションで、そのアプリケーションを管理する権限をユーザーに付与します。
レルムの細かいアクセス権限をまたがって実行できません。master
レルムの管理者は、以前の章で定義された事前定義済みの admin ロールに制限されます。
11.3.1.1. パーミッションのセットアップ
最初に管理コンソールにログインし、そのクライアントのパーミッションを設定できます。きめ細かなパーミッションを定義するクライアントの管理セクションに移動します。
クライアント管理
Permissions
というタブメニュー項目が表示されるはずです。そのタブをクリックします。
クライアントパーミッションタブ
デフォルトでは、各クライアントは細かいパーミッションを実行することはできません。したがって、Permissions Enabled
をオンにしてパーミッションを初期化します。
Permissions Enabled
スイッチをオフに設定すると、このクライアントに定義したすべてのパーミッションが削除されます。
クライアントパーミッションタブ
Permissions Enabled
を on に切り替えると、承認サービス を使用して、背後でさまざまなパーミッションオブジェクトを初期化します。この例では、クライアントの 管理
パーミッションが対象になります。クライアントの manage
パーミッションを処理するパーミッションにリダイレクトするものをクリックします。すべての承認オブジェクトは、realm-management
クライアントの Authorization
タブに含まれます。
クライアントパーミッションの管理
最初に初期化された場合、manage
パーミッションには関連付けられたポリシーがありません。policy タブに移動して作成する必要があります。高速に進むには、上記のイメージに表示される Authorization
リンクをクリックします。次に、policies タブをクリックします。
このページに、Create policy
というプルダウンメニューがあります。設定可能なさまざまなポリシーがあります。ロールまたはグループに関連付けられたポリシーを定義したり、JavaScript でルールを定義したりできます。この簡単な例では、User Policy
を作成します。
ユーザーポリシー
このポリシーは、ユーザーデータベースのハードコーディングされたユーザーと一致します。この場合、これは sales-admin
ユーザーです。次に、sales-application
クライアントの manage
パーミッションページに戻り、ポリシーをパーミッションオブジェクトに割り当てる必要があります。
ユーザーグループの割り当て
sales-admin
ユーザーには、sales-application
クライアントを管理するパーミッションが使用できるようになりました。
さらに 1 つのことが必要です。Role Mappings
タブに移動し、query-clients
ロールを sales-admin
に割り当てます。
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
にあります。
営業管理者ログイン
これで、この admin がこのクライアントを 1 つ管理できるようになりました。