メインコンテンツへスキップ
Keycloak レルムを接続して、Oliver(セキュリティプロフェッショナル)がレルムの検査、クライアントの監査、ユーザーとロールの確認、アイデンティティとアクセス設定の分析を行えるようにします。 Keycloak は、対象レルムで realm-management ロールを持つコンフィデンシャルなサービスアカウントクライアントを使って認証します。

対応プラットフォーム

プラットフォームサポート
セルフホスト Keycloak全バージョン
Phase Twoマネージド Keycloak サービス

前提条件

  • CloudThinker で検査する Keycloak レルム
  • コンフィデンシャルクライアントの作成とサービスアカウントロールの割り当てに必要な管理者アクセスkcadm.sh(セルフホスト)またはレルムコンソール(Phase Two)。
  • レルムのベース URLレルム名
接続のスコープは cloudthinker-svc サービスアカウントに付与したロールに制限されます。CloudThinker が必要とする範囲をカバーする最小権限の realm-management ロールを割り当ててください。

セットアップ

どちらの方法でも同じ成果物を作成します:対象レルムのサービスアカウントに realm-management ロールが付与された cloudthinker-svc コンフィデンシャルクライアントです。セルフホストは kcadm.sh を使い、Phase Two はレルムコンソールを使います。
Keycloak の管理 CLI である kcadm.sh でクライアントをプロビジョニングします。利用可能な任意のシェルから実行してください。
1

認証する

kcadm.sh config credentials \
  --server http://localhost:8080 --realm master \
  --user admin --password '<admin-password>'
2

クライアントを作成する

kcadm.sh create clients -r <your-realm> \
  -s clientId=cloudthinker-svc \
  -s publicClient=false \
  -s serviceAccountsEnabled=true \
  -s standardFlowEnabled=false \
  -s directAccessGrantsEnabled=false \
  -s 'redirectUris=[]'
3

realm-management ロールを割り当てる

kcadm.sh add-roles -r <your-realm> \
  --uusername service-account-cloudthinker-svc \
  --cclientid realm-management \
  --rolename realm-admin
最小権限が必要な場合は、より限定的なロール(例:view-realmview-users)を使用してください。
4

クライアントシークレットを取得する

CID=$(kcadm.sh get clients -r <your-realm> \
  -q clientId=cloudthinker-svc --fields id --format csv --noquotes | tail -n1)

kcadm.sh get clients/$CID/client-secret -r <your-realm> \
  --fields value --format csv --noquotes | tail -n1
5

CloudThinker に接続を追加する

Connections → Keycloak に移動し、以下を入力します:
  • KEYCLOAK_URLhttp://<host-ip>:8080
  • KEYCLOAK_REALM:レルム名
  • KEYCLOAK_CLIENT_IDcloudthinker-svc
  • KEYCLOAK_CLIENT_SECRET:前のステップで取得したシークレット
Connect をクリックします。成功すると CloudThinker は Connected ステータスを表示します。

接続詳細

フィールド説明
KEYCLOAK_URLKeycloak のベース URLhttp://<host-ip>:8080
KEYCLOAK_REALM対象レルム名my-realm
KEYCLOAK_CLIENT_IDサービスアカウントのクライアント IDcloudthinker-svc
KEYCLOAK_CLIENT_SECRETCredentials ステップで取得したクライアントシークレット

必要な権限

cloudthinker-svc サービスアカウントには対象レルムの realm-management ロールが必要です。主なロール:
ロール用途
view-realmレルム設定の読み取り
view-usersユーザーの一覧表示と検査
view-clientsクライアントの一覧表示と検査
query-usersquery-clientsquery-groupsルックアップクエリの実行
manage-usersmanage-clientsmanage-realm変更操作(必要な場合のみ割り当て)
読み取り専用分析には view-*query-* ロールのみを割り当ててください。Oliver に変更操作を行わせる場合にのみ manage-* ロールを追加してください。

エージェントの機能

接続後、Oliver は以下を実行できます:
機能説明
レルム検査レルム設定と構成の確認
クライアント監査クライアントの一覧表示、フローと認可設定のレビュー
ユーザー管理ユーザー・セッション・クレデンシャル状態の表示
ロールとグループのレビューロール・コンポジット・グループ階層の検査
アクセス分析過剰権限のサービスアカウントや古いクライアントの特定

接続を確認する

@oliver #report list all clients in the realm to verify the Keycloak connection

プロンプト例

@oliver #report list all clients in the realm and flag any with direct access grants enabled
@oliver #report show service accounts with realm-admin and review whether each is needed
@oliver #recommend audit users without 2FA enabled

トラブルシューティング

  • クライアントシークレットが正しくコピーされているか確認してください
  • クライアントで Client authentication が有効になっているか確認してください
  • サービスアカウントに realm-management ロールが割り当てられているか確認してください
  • サービスアカウントがその操作に必要な realm-management ロールを持っていません
  • セルフホスト:不足しているロールで add-roles を再実行してください
  • Phase Two:ロール割り当てリストの両ページを再確認してください
  • セルフホスト:ベース URL が Keycloak のホスト名と一致しているか確認してください
  • Phase Two:レルムの Details → Host フィールドから URL を正確にコピーしてください
  • クライアントはコンフィデンシャルである必要があります — publicClient=false(セルフホスト)または Client authentication が有効(Phase Two)
  • パブリッククライアントにはシークレットがありません

セキュリティ

  • 最小権限 — エージェントがユースケースに必要な権限のみを付与します。まず読み取り専用から始め、後から拡張してください。
  • デフォルトで読み取り専用 — エージェントにこの接続で変更を行わせる場合を除き、読み取り専用の認証情報を使用してください。
  • 認証情報のローテーション — 通常のスケジュールに従ってキーとトークンをローテーションしてください。接続を更新すると、CloudThinker が新しい値を自動的に取得します。
  • オフボーディング時に失効 — 接続を削除するか、チームメンバーが退職する際には、プロバイダー側で認証情報を無効化してください。
  • 専用クライアントcloudthinker-svc を共有の管理クライアントではなく、専用のサービスアカウントクライアントとして使用してください。
  • シークレットのローテーションCredentials タブからクライアントシークレットを定期的にローテーションしてください。

関連

Oliver Agent

セキュリティとコンプライアンスエージェント

接続の概要

利用可能な全接続