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

注記

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

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

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 つ管理できるようになりました。