Chuyển đến nội dung chính

レッスン 1: Keycloak の紹介 - エンタープライズにおける IAM と SSO

Keycloak とは何か、IAM が必要な理由、中心的な概念 (レルム、クライアント、ユーザー、ロール、グループ、セッション)、Quarkus 上の Keycloak アーキテクチャ、Auth0/Okta/Azure AD との比較、企業での実際の使用例について学びます。 Keycloak 26.x バージョンの概要。

1. Keycloakとは何ですか?

キークロークは、オープンソースの ID およびアクセス管理 (IAM) ソリューションであり、当初は Red Hat によって開発され、現在はCNCFインキュベーション(クラウド ネイティブ コンピューティング財団)。 Keycloakは、WebシステムとRESTful Webサービスにシングル・サインオン(SSO)、アイデンティティ管理、アプリケーション・セキュリティを提供します。

Keycloak の目標は、セキュリティをシンプルにすることです。通常、開発者が自分で作成する必要があるセキュリティ機能は、すぐに利用でき、組織のニーズに合わせてカスタマイズできます。

開発の歴史

  • 2014: Keycloak は JBoss/Red Hat プロジェクトとして誕生しました

  • 2018: Keycloak 4.0 — 認可サービス、UMA 2.0をサポート

  • 2020: Keycloak.X (Quarkus ベース) プレビュー

  • 2022: Keycloak 20 — WildFly ディストリビューションが削除され、正式に Quarkus に切り替えられました

  • 2024: KeycloakがCNCFインキュベーションプロジェクトになる

  • 2026: Keycloak 26.5.x — ワークフロー、パスキー、MCP をサポートする現在のバージョン

2. ID とアクセス管理が必要なのはなぜですか?

最新のエンタープライズ システムでは、次の場合に ID とアクセスの管理が複雑になります。

  • 多くのアプリケーションは共通認証 (SSO) を必要とします。

  • 外部 ID プロバイダー (Google、Azure AD、LDAP) との統合が必要

  • 高度なセキュリティのために多要素認証 (MFA) が必要

  • 複雑な権限管理 (RBAC、ABAC、きめ細かい権限)

  • セキュリティ標準(OAuth 2.0、OIDC、SAML 2.0、FAPI 2.0)に準拠

  • SaaS アプリケーションのマルチテナンシー

Keycloak IAM/SSO Overview

Keycloak IAM/SSO の概要: アプリケーション → Keycloak → アイデンティティプロバイダー

3. Keycloakの主な機能

  • シングル サインオン (SSO) とシングル サインアウトブラウザアプリケーション用

  • OpenID コネクトそしてOAuth 2.0サポート

  • SAML 2.0サポート

  • ID ブローカーリング— 外部 OIDC または SAML ID プロバイダー経由で認証する

  • ソーシャルログイン— Google、GitHub、Facebook、Apple、Microsoft でサインインします

  • ユーザーフェデレーション— LDAP と Active Directory からユーザーを同期します

  • ケルベロスブリッジ— Kerberosサーバーにログインしたユーザーを自動的に認証します

  • 管理コンソール— ユーザー、ロール、クライアント、構成の一元管理

  • アカウントコンソール— ユーザーが自分のアカウントを管理できるようにします

  • テーマのサポート— ログイン、アカウント、管理者、電子メールインターフェイスをカスタマイズします

  • 二要素認証— TOTP/HOTP、WebAuthn、パスキー

  • 認可サービス— ポリシーと権限による詳細な承認

  • 組織— CIAM のマルチテナント (B2B、B2B2C)

  • ワークフロー— 管理自動化 (IGA)

  • トークンマッパー— トークン内のクレームをカスタマイズする

  • イベントと監査— 監査ログとイベント リスナー

4. 中心となる概念

レルム

レルムは、一連のユーザー、認証情報、ロール、およびグループを管理します。各ユーザーはレルムに属し、レルムにログインします。レルムは互いに分離されており、そのレルムに属するユーザーのみが管理および認証されます。

クライアント

クライアントは、Keycloakによるユーザーの認証を必要とするエンティティ(アプリケーション、サービス)です。クライアントは、Web アプリ、モバイル アプリ、REST API、または他のサービスを呼び出すためにトークンを必要とするサービスです。

ユーザー

ユーザーはシステムにログインできるエンティティです。ユーザーには属性 (電子メール、ユーザー名、電話番号など) があり、グループに属し、役割が割り当てられます。

役割

ロールによって、ユーザーのタイプまたはカテゴリ (管理者、ユーザー、マネージャー) が決まります。アプリケーションは、個々のユーザーではなくロールに基づいてアクセス権を割り当てます。

グループ

グループはユーザーのグループを管理します。グループには属性と役割のマッピングがあります。ユーザーはグループから属性とロールのマッピングを継承します。

セッション

ユーザーがログインすると、ログイン時間や SSO に参加したアプリケーションに関する情報など、ログイン セッションを管理するためのセッションが作成されます。

5. Quarkus の Keycloak アーキテクチャ

バージョン 20 以降では、Keycloak は完全に Quarkus フレームワーク上で実行され、以下を提供します。

  • 起動時間が非常に速い— コンテナおよびサーバーレスに適しています

  • メモリ使用量が小さい— クラウドネイティブの導入向けに最適化

  • ビルド時の最適化— プリコンパイル済み構成

  • ネイティブイメージのサポート— GraalVM をネイティブで実行する機能

Keycloak Architecture on Quarkus

Keycloak アーキテクチャ: Quarkus ランタイム、Infinispan キャッシュ、Hibernate ORM、管理者/アカウント コンソール

成分 説明する
Quarkus ランタイム アプリケーション サーバー (WildFly を置き換える)
インフィニスパン セッション、トークンの分散キャッシュ
休止状態 ORM データベース永続性のための ORM 層
データベース PostgreSQL (推奨)、MySQL、MariaDB、Oracle、MSSQL
管理コンソール React ベースの SPA (PatternFly 5)
アカウントコンソール ユーザーのセルフサービスのための React ベースの SPA

6. Keycloak、Auth0、Okta、Azure AD の比較

基準 キークローク 認証0 オクタ Azure AD
ライセンス Apache 2.0 (FOSS) コマーシャル コマーシャル コマーシャル
導入 自己ホスト型 クラウドSaaS クラウドSaaS クラウドSaaS
費用 無料(自己運営) 月額 35 ドルから ユーザーあたり月額 2 ドルから ユーザーあたり月額 6 ドルから
カスタマイズ 非常に高い (オープンソース) 中くらい 中くらい 短い
OIDC/OAuth2 満杯 満杯 満杯 満杯
SAML 満杯 持っている 満杯 満杯
LDAP/AD 満杯 企業 満杯 ネイティブ
MFA TOTP、WebAuthn、パスキー 満杯 満杯 満杯

7. 実際の使用例

  • エンタープライズ SSO: すべての内部アプリケーションに対するシングル サインオン

  • 顧客 IAM (CIAM): 組織で顧客 ID を管理

  • APIセキュリティ: OAuth 2.0 トークンを使用した安全な REST API

  • マイクロサービス認証: クライアント資格情報を使用したサービス間認証

  • ソーシャルログイン: ユーザーが Google、Facebook、GitHub でログインできるようにします

  • LDAP/ADフェデレーション: 既存のディレクトリ システムを統合する

  • コンプライアンスのためのMFA: PCI-DSS、HIPAA、SOC 2 要件に適合

8. コース概要

コースに含まれるもの25レッスンに分けられる7部、すべての Keycloak 26.x モジュールをカバーします。

  • パート 1: プラットフォーム (レルム、ユーザー、グループ、ロール、権限)

  • パート 2: SSO プロトコル (OIDC、SAML、クライアント スコープ、トークン、DPoP)

  • パート 3: 認証と MFA (フロー、OTP、WebAuthn、パスキー、ID ブローカリング)

  • パート 4: フェデレーションと認可 (LDAP/AD、組織、認可サービス、ワークフロー)

  • パート 5: セキュリティとカスタマイズ (テーマ、イベント、強化、ボールト)

  • パート6: 実践的な統合 (Spring Boot、React/Angular、Node.js、API Gateway)

  • パート 7: 本番運用 (デプロイメント、HA、Kubernetes、モニタリング)