Keycloak きーくろーく
簡単に言うとこんな感じ!
Keycloakは「社内のいろんなアプリに、1回のログインでまとめてアクセスできるようにする」仕組みを無料で作れるソフトだよ。自分でサーバーに立ててID管理を一元化できる、いわば”自前の入館証受付窓口”なんだ!
Keycloakとは
Keycloak(キークローク)は、Red Hatが開発しオープンソースで公開しているアイデンティティ・アクセス管理(IAM: Identity and Access Management)のソフトウェアです。企業や組織が複数のアプリケーションに対して、シングルサインオン(SSO)やユーザー管理、認証・認可の仕組みを自前で構築するために使われます。
「GoogleアカウントでログインしたらYouTubeもGmailも使える」というのがSSO(シングルサインオン)の典型例ですが、Keycloakはその仕組みを社内システム向けに自分たちで用意できるツールです。クラウドサービスに頼らず、自社サーバーや自社のクラウド環境に設置して運用できるのが大きな特徴です。
OpenID Connect・OAuth 2.0・SAML 2.0といった業界標準のプロトコルに対応しており、既存のさまざまなアプリやサービスと連携しやすいのも選ばれる理由のひとつです。ユーザーの登録・削除、パスワードポリシーの設定、多要素認証(MFA)の有効化なども、管理画面から操作できます。
Keycloakの主な機能と構造
Keycloakが提供する機能を一覧で確認しましょう。
| 機能カテゴリ | 具体的な内容 |
|---|---|
| シングルサインオン(SSO) | 1度のログインで複数アプリにアクセス可能 |
| ユーザー管理 | ユーザーの登録・削除・グループ管理 |
| 認証プロトコル対応 | OpenID Connect / OAuth 2.0 / SAML 2.0 |
| ソーシャルログイン | Google・GitHub・Microsoft等のIDを使えるよう連携 |
| 多要素認証(MFA) | ワンタイムパスワード(TOTP)などを追加可能 |
| 外部LD連携 | Active Directory / LDAPと接続してユーザー同期 |
| 管理コンソール | ブラウザからすべて設定できるGUI管理画面 |
| クライアントアダプター | Java・JavaScript・Node.js等向けのSDKを提供 |
Keycloakの「レルム」という概念
Keycloakではレルム(Realm)という単位で設定を管理します。レルムとは「テナント(入居者)」のようなもので、ユーザーグループやアプリケーションをまとめて管理する独立したスペースです。
Keycloakサーバー
├── レルム: 社内人事システム用
│ ├── ユーザー: 田中・鈴木・佐藤
│ ├── クライアント: 給与システム・勤怠システム
│ └── ポリシー: パスワード90日更新
└── レルム: パートナー企業向けポータル用
├── ユーザー: 外部パートナー各社
├── クライアント: 受発注ポータル
└── ポリシー: MFA必須
たとえば「社員向けシステム」と「取引先向けポータル」を別のレルムで管理すれば、それぞれ独立した設定ができるので、混在するリスクがありません。
覚え方
「Keycloak=鍵(Key)と外套(Cloak)」と覚えましょう。鍵で入室を管理し、外套でIDを包んで守る、というイメージです。「1本の鍵でどの部屋も開けられるようにする受付係」と思うと実務イメージが湧きやすいですよ。
歴史と背景
- 2013年 — JBoss(後のRed Hat傘下)のコミュニティプロジェクトとしてKeycloakが誕生。エンタープライズ向けSSOの需要に応えるため開発開始
- 2014年 — バージョン1.0リリース。OpenID ConnectとOAuth 2.0に対応
- 2016年 — Red HatのエンタープライズSSO製品「RH-SSO(Red Hat Single Sign-On)」のベースとして採用。商用サポートが付いたRH-SSOとオープンソースのKeycloakの二本立てになる
- 2019年 — Wildfly(JBoss Application Server)ベースで安定版を継続リリース
- 2022年 — 軽量・高速なQuarkusベースへの移行を開始。クラウドネイティブ環境向けに刷新
- 2023年 — Keycloak 21以降はQuarkusベースが正式メインストリームに。コンテナ(Docker・Kubernetes)での動作が容易になる
- 2023年 — Red HatがRH-SSOのサポート終了を発表し、後継製品「Red Hat Build of Keycloak」へ移行。Keycloakとの一本化が進む
Keycloakとクラウドマネージドサービスとの比較
KeycloakのようにSSOやIAMを実現する手段はいくつかあります。大きな分類は「自前で構築(オンプレミス or セルフホスト)」か「クラウドのマネージドサービスを使う」かです。
| 比較項目 | Keycloak(セルフホスト) | Auth0 / Okta(クラウドSaaS) | Azure AD / Entra ID |
|---|---|---|---|
| コスト | ソフト自体は無料(運用コストあり) | ユーザー数課金(高額になりやすい) | Microsoft 365と連携で実質込み |
| カスタマイズ性 | 高い(テーマ・プラグイン自由) | 中程度 | 低〜中 |
| 運用負担 | 高い(自前でサーバー管理) | 低い(ベンダー任せ) | 中(AzureAD側は運用不要) |
| データ所在 | 自社管理(国内サーバー可) | クラウド側に保存 | Microsoftデータセンター |
| 導入難易度 | やや高い | 低い | Microsoft環境ならば低い |
| 向いている組織 | エンジニアリソースがある中〜大企業 | スタートアップ・少人数IT体制 | Microsoft製品中心の企業 |
Keycloakの認証フロー(SVG図解)
OpenID Connectを使ったKeycloakの認証フローを図にします。
このフローが一度完了した後は、同じKeycloakで認証する別のアプリにアクセスしても再ログイン不要(SSO)になります。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 6749 | OAuth 2.0 認可フレームワークの仕様 |
| RFC 6750 | OAuth 2.0 ベアラートークンの使用法 |
| RFC 7519 | JWT(JSON Web Token)の仕様。Keycloakはトークンにこれを使用 |
| RFC 7517 | JWK(JSON Web Key)仕様。公開鍵の配布に使用 |
| RFC 8414 | OAuth 2.0 認可サーバーメタデータ(エンドポイント自動検出) |
関連用語
- シングルサインオン(SSO) — 1度のログインで複数サービスを使えるようにする仕組み
- OpenID Connect — Keycloakが使う認証用の業界標準プロトコル
- OAuth 2.0 — アクセス権限の委譲を行う認可フレームワーク
- SAML — エンタープライズSSOでよく使われるXMLベースの認証連携規格
- JWT(JSON Web Token) — Keycloakが発行するアクセストークンの形式
- IAM(アイデンティティ・アクセス管理) — ユーザーのID管理と権限制御を統合的に行う概念
- Active Directory — Keycloakと連携できるMicrosoft製のディレクトリサービス
- 多要素認証(MFA) — パスワード以外の認証要素を追加してセキュリティを高める仕組み