ユーザー管理
Keycloak を ID プロバイダーとして使用し、LDAP または Active Directory フェデレーションまたはローカル管理アカウントを通じて、IBM Bob オンプレミスのユーザーアクセスを管理します。
IBM Bob オンプレミスには、ユーザー認証とアクセス管理のための Keycloak ID プロバイダーが含まれています。ユーザーは既存の LDAP または Active Directory 環境からフェデレーションするか、Keycloak で直接作成することができます。プロビジョニング方法に関わらず、ユーザーはサービスにアクセスする前に適切な Bob ロールを割り当てられる必要があります。
概要
| コンセプト | 説明 |
|---|---|
| ID プロバイダー | Keycloak — Bob オペレーターによってデプロイおよび管理されます。 |
| ユーザーソース | ユーザーは Keycloak で直接作成するか、LDAP または Active Directory サービスからフェデレーションできます。 |
| 認証 | ユーザーは OpenID Connect (OIDC) を使用して Keycloak を通じて認証します。Keycloak は短命な認証コードを発行し、bob-authn がそれを Bob ベアラートークンと交換します。 |
| 認可 | Bob の機能へのアクセスは、Keycloak 内のユーザーに割り当てられたロールによって管理されます。 |
| 設定 | LDAP 統合は BobLDAP カスタムリソースと bobctl configure-idp コマンドで管理します。 |
サポートされている LDAP ディレクトリタイプ
Bob オンプレミスは LDAPv3 準拠のすべてのディレクトリサービスをサポートしています。LDAP 設定の vendor パラメーターは使用する Keycloak プロバイダーテンプレートを決定し、選択したディレクトリタイプのプロトコル固有の設定を定義します。
vendor 値 | ディレクトリタイプ |
|---|---|
other | OpenLDAP およびその他の汎用 LDAPv3 互換ディレクトリサービス |
ad | Microsoft Active Directory |
rhds | Red Hat Directory Server |
tivoli | IBM Security Directory Server (旧 Tivoli Directory Server) |
edirectory | NetIQ / Micro Focus eDirectory |
認証とフェデレーションアーキテクチャ
ユーザーがサインインすると、Bob はリクエストを Keycloak に渡し、Keycloak が認証を処理します。すべてのユーザーは Keycloak を通じて認証されます。LDAP フェデレーションはオプションであり、設定されている場合にのみ有効です。
- LDAP フェデレーション有効: Keycloak はユーザーを LDAP ディレクトリに対して直接認証します。ユーザーのパスワードは LDAP ディレクトリに留まり、Keycloak には保存されません。
- LDAP フェデレーション無効: Keycloak はローカル Keycloak ユーザーストアを使用してユーザーを認証します。
認証フロー
- ユーザーがクレデンシャルを入力します。
- Keycloak がユーザーを認証します。
- Keycloak が短命な認証コードを発行します。
bob-authnが認証コードを Bob ベアラートークンと交換します。- 以降のすべての API リクエストは Bob が発行したトークンを使用します。
ユーザー同期の動作
Bob オンプレミスは、LDAP 設定の userSync.enabled 設定で構成された 2 つの同期モードをサポートしています。
| モード | userSync.enabled | 動作 |
|---|---|---|
| オンデマンド | false (デフォルト) | ユーザーは初めてサインインに成功したときにのみ Keycloak にインポートされます。事前のディレクトリスキャンが不要です。このオプションは非常に大きなディレクトリ環境に推奨されます。 |
| 即時同期 (推奨) | true | LDAP プロバイダーが登録されると、1 回限りのフル同期によりディレクトリからすべてのユーザーがインポートされます。初期インポート後、Keycloak は 5 分ごとにユーザーの更新を自動的に同期します。このアプローチにより、すべてのユーザーがすぐに利用可能になり、adminEmails で指定された管理者アカウントはユーザーのサインインなしにプロビジョニングできます。 |
オンデマンド同期
非常に大きなディレクトリですべてのユーザーをすぐにインポートすることが現実的でない場合にこのモードを使用します。
初回認証試行時:
- ユーザーが Keycloak にインポートされます。
- SCIM を通じてユーザーが Bob にプロビジョニングされます。
- プロビジョニングの遅延により最初のログイン試行は失敗します。
- プロビジョニングが完了した後、ユーザーは正常にサインインできます。
即時同期
ほとんどのデプロイメントに推奨されます。同期が完了するとすぐにすべてのユーザーが利用可能になり、プロビジョニングのためにサインインする必要はありません。
同期間隔は現在 5 分に固定されています。
SCIM によるユーザーの同期
IBM Bob オンプレミスは、Keycloak に組み込まれたカスタマイズされた SCIM 2.0 プラグインを使用して、Keycloak と Bob 間のユーザーアカウントを同期します。Bob オペレーターはこの統合を自動的に設定するため、追加の設定は不要です。
ユーザー同期の仕組み
Keycloak でユーザーライフサイクルイベントが発生すると、SCIM プラグインは対応するイベントを bob-admin サービスに送信します。Bob はそのイベントに基づいてユーザーアクセスとプロフィール情報を更新します。
この同期は、LDAP フェデレーションユーザーや Keycloak 管理コンソールで直接作成されたユーザーを含む、Keycloak が管理するすべてのユーザーに適用されます。
| ユーザーイベント | Bob のアクション |
|---|---|
| ユーザーの作成または初回ログイン | ユーザーをプロビジョニングして Bob へのアクセスを許可します |
| ユーザーの更新 | プロフィールの変更を同期します |
| LDAP からのユーザー削除 | ユーザーデータを保持しながら Bob へのアクセスを取り消します |
LDAP からユーザーを削除すると Bob へのアクセスが取り消されますが、データは削除されません。ユーザーがディレクトリに再度追加されると、アクセスが復元され、以前に作成した作業が引き続き利用可能になります。
同期の確認
Bob は SCIM 同期がアクティブであることを確認するステータス条件またはヘルスチェックを現在提供していません。プロビジョニングが機能していることを確認するには、テストユーザーを作成またはインポートし、初回サインイン後または最初の userSync インポート後にそのユーザーが Bob に表示されることを確認してください。
ロールとグループメンバーシップの管理
IBM Bob は Keycloak グループを使用してユーザーロールを制御します。Bob オペレーターは必要なグループとロールマッピングを自動的に作成および維持します。
| Keycloak グループ | 付与される Keycloak ロール | 追加されるユーザー |
|---|---|---|
bob-users | bob-user | すべての認証済みユーザーは、レルムのデフォルトグループを通じて初回サインイン時に自動的に追加されます。 |
bob-admins | bob-admin | BobLDAP 設定の adminEmails フィールドに指定されたユーザーは、各調整サイクル中にオペレーターによって自動的に割り当てられます。 |
管理者アクセス
すべての認証済みユーザーは標準の Bob アクセスを受け取ります。
管理者権限を付与するには:
- IDP 設定ファイルの
adminEmailsにユーザーのメールアドレスを追加します。 - 変更を適用します:
./bobctl configure-idp --config my-idp.yaml
管理者権限を取り消すには:
adminEmailsからメールアドレスを削除します。- 設定を再適用します。
bobctl configure-idp は Bob 管理者アクセスを管理するためのサポートされている唯一の方法です。adminEmails にメールアドレスを追加してもユーザーアカウントは作成されません — ユーザーは LDAP フェデレーションまたは直接ユーザー作成によって Keycloak にすでに存在している必要があります。
Keycloak の管理
Bob オンプレミスには、ID とアクセス管理サービスを提供する Keycloak デプロイメントが含まれています。Keycloak の管理は Bob の管理とは別であり、各インターフェースは異なる目的を持っています。
管理インターフェース
| インターフェース | URL | 目的 |
|---|---|---|
| Keycloak 管理コンソール | https://bob-keycloak.<namespace>.<ingress-domain> | Keycloak インフラ、ユーザー、グループ、ID プロバイダー、フェデレーション設定を管理します。 |
| Bob 管理 UI | https://bob.<namespace>.<ingress-domain>/admin | Bob ユーザー、ロール、招待、テナント固有の設定を管理します。 |
Bob オペレーターはインストール中に両方のルートを自動的に作成します。
アクティビティログはこのリリースの Bob Admin UI では利用できません。サービスログにアクセスするには、OpenShift Container Platform コンソールまたは CLI から認証サービス、認可サービス、および管理サービスの pod ログを直接参照してください。詳細については、既知の制限事項を参照してください。
Keycloak 管理コンソールへのアクセス
クラスター内の Keycloak ルートを確認するには:
oc get route -n <instance-namespace> | grep keycloakクラスターシークレットから初期管理者クレデンシャルを取得します。
oc get secret bob-keycloak-initial-admin \
-n <instance-namespace> \
-o jsonpath='{.data.username}' | base64 -d && echooc get secret bob-keycloak-initial-admin \
-n <instance-namespace> \
-o jsonpath='{.data.password}' | base64 -d && echobob-keycloak-initial-admin シークレットを変更しないでください。Bob オペレーターは調整中にこれらのクレデンシャルを使用します。保存されたクレデンシャルを変更すると、オペレーターが管理する機能が中断される可能性があります。
個人の管理者アカウントが必要な場合は、初期管理者クレデンシャルでサインインし、日常的な管理タスク用に master レルムで別のユーザーを作成してください。
サインイン後、Keycloak コンソールの左上隅のレルムセレクターを使用して bob レルムに切り替えてください。すべての Bob ユーザー、グループ、ID プロバイダー、フェデレーションプロバイダーはこのレルムから管理されます。
Keycloak レルムについて
レルムは、独自のユーザー、クレデンシャル、ロール、グループ、ID プロバイダーを含む独立した管理ドメインです。
Bob オンプレミスは 2 つのレルムを使用します。
| レルム | 目的 |
|---|---|
| master | Keycloak 管理専用。このレルムのユーザーは Keycloak を管理できますが、Bob にはアクセスできません。 |
| bob | すべての Bob ユーザー、グループ、LDAP フェデレーションプロバイダー、アプリケーションクライアントが含まれます。Bob オペレーターがこのレルムを作成および管理します。 |
2 つのレルムは完全に独立しています。一方のレルムのメンバーシップや権限は、もう一方のレルムのリソースへのアクセスを許可しません。
bob レルムはオペレーターが管理します。Keycloak コンソールから直接変更を加えることはできますが、IBM サポートは Bob の認証とアクセスに影響する問題の解決に限定されます。
LDAP フェデレーションプロバイダーの管理
bobctl configure-idp または BobLDAP カスタムリソースを通じて設定された LDAP フェデレーションプロバイダーは、bob レルムの User Federation セクションに表示されます。
Bob オペレーターは LDAP プロバイダーが作成されたときに登録します。Keycloak コンソールで直接加えた変更は、対応する BobLDAP カスタムリソースに同期されません。
一貫した設定管理のために、できる限り BobLDAP カスタムリソースと bobctl configure-idp コマンドを使用してください。
セキュリティに関する考慮事項
Keycloak を管理する際は、以下の推奨事項に従ってください。
bob-keycloak-initial-adminシークレットへのアクセスをクラスター管理者に制限してください。- Bob の管理タスクは
bobレルムで実行してください。 masterレルムは Keycloak インフラ管理のみに使用してください。- 明示的に必要でサポートされている場合を除き、追加のレルムやクライアントを作成しないでください。
- Keycloak コンソールでプロバイダー設定を直接編集するのではなく、
BobLDAPリソースを通じて LDAP フェデレーションを管理してください。 - 初期管理者アカウントは緊急またはブートストラップアカウントとして扱い、日常的な管理には専用の個人管理者アカウントを使用してください。
直接 Keycloak ユーザーの管理
LDAP ディレクトリを統合せずに、Keycloak 内でユーザーを直接作成および管理できます。このアプローチは、概念実証環境、小規模デプロイメント、または LDAP サーバーが利用できないインストールに適しています。すでに企業ディレクトリサービスを使用している本番環境では、LDAP フェデレーションが推奨されるアプローチです。
ユーザーの追加
ローカルユーザーを作成するには、bob レルムの Users セクションを開いて新しいユーザーアカウントを作成します。ユーザーを保存した後、パスワードを設定して適切なグループメンバーシップを割り当てます。
- 標準アクセスを付与するには bob-users にユーザーを追加してください。
- 管理アクセスを付与するには bob-users と bob-admins の両方にユーザーを追加してください。
パスワードの管理
ローカル管理ユーザーのパスワードは Keycloak 管理コンソールで管理します。ユーザーレコードを開き、Credentials タブを使用してユーザーのパスワードを作成、更新、またはリセットします。
ユーザーの削除
ユーザーのアクセスを削除するには、Keycloak 管理コンソールでユーザーレコードを開き、アカウントを削除または無効化します。無効化されたユーザーは認証できなくなりますが、ユーザー情報はシステムに残ります。