Contents
MFAのセキュリティ効果
MFAは単一の認証手段に頼るリスクを解消し,攻撃者による不正アクセスの確率を極めて低く抑えます。たとえば、パスワードが盗まれても2つ目の要素(OTPやWebAuthn)があれば無効化可能です。この双要素構造は米国NISTでも推奨される基準です。
- リスク軽減の実例: パスワード漏洩時の不正アクセス確率を50%以上削減(※2)
- 技術的背景: 複数の認証要素が一致しなければログイン不可に設定される構造
- コスト効果: セキュリティイベント防止によるリスク管理コスト削減
重要: パスワードだけでは不十分という認識は、サイバー攻撃の増加によります。MFA導入は防衛ラインとして必須です。
導入前の前提条件と環境確認
KeycloakでのMFA導入には以下の前提条件が必要です。
- Keycloakサーバーの正常動作
- バージョンが最新であるかを確認(例: Keycloak 20.0以上)
- 既存認証フローの設定状況
- 「browser」フローなど、MFAに対応する認証フローが構築されていること
- 外部認証インフラの準備
- SMTPサーバー(メール認証)またはAuthenticatorアプリ(OTP)を利用可能な環境
※1: データソースは不明確なため、具体的数値は省略。一般的な効果として解説します。
※2: 米国NISTのサイバーセキュリティガイドラインに基づく推奨値
OTP認証プロバイダーの登録手順
KeycloakでMFAを機能させるには、最初にOTPプロバイダーを登録する必要があります。以下に管理者コンソールでの設定フローとよくあるエラーを解説します。
Authenticatorアプリの設定手順
Authenticatorアプリは、スマートフォンなどにインストールされたツールでワンタイムパスコード(OTP)を発行します。登録手順は以下の通りです。
- 管理者コンソールの「Realm」セクションを開く
- 「Authentication」タブを選択し、「Authenticator」セクションへ移動
- 「User Setup」を選んで、OTPプロバイダーを有効化
- QRコードまたはシークレットキーをユーザーに提供(例:
SecretKey: JBSWY3DPEHPK3P7H68E9)
注意: シークレットキーの共有は暗号化された通信経路で行う必要があります。
メール認証の有効化手順
メール認証を使用する場合は、SMTPサーバー設定が必要です。以下が基本手順です。
- 「Realm」→「Authentication」→「Email」セクションへ移動
- SMTPホスト・ポート・ユーザー名・パスワードを入力(例: Host: smtp.example.com, Port: 587)
- テストメール送信機能で設定内容を確認
| エラー事象 | 原因 | 解決策 |
|---|---|---|
| 「メール送信に失敗しました」 | SMTP認証エラー | パスワードの再入力またはポート変更 |
| 「セッション切れています」 | 認証フローが正しく設定されていない | 「Authenticator Flow」を確認 |
実装上の注意点: 実環境でのSMTPパスワードやホスト名は、本記事で記載されている例とは異なるため、代替値として利用しないこと。
ユーザー向け認証フローのカスタマイズ
ユーザーがログイン時に利用する認証フローは、Keycloakの「Flow」設定でカスタマイズ可能です。デフォルトでは単一認証ですが、MFAを有効にするにはポリシー分岐が必要です。
デフォルトフローの確認とMFA対応フローの作成手順
現状の認証フローは、「Authentication Flows」セクションで確認できます。
- デフォルトフロー:
browser(ブラウザログイン用) - MFA対応フロー:
mfa(2要素認証用)を新規作成または複製
重要な点: デフォルトのフローにMFAを追加すると、すべてのユーザーが強制的に2要素認証を通過するようになります。
ポリシーごとの条件分岐設定
ポリシーに基づいて認証フローを選択的に適用するには、「Execution」セクションで以下のように設定します。
- 「User Attributes」を使用: たとえば、
mfa_required=trueという属性を持つユーザーにのみMFAを強制 - 「Role-based flow selection」: 管理者ロールのユーザー専用フローを作成
UI/UXへの最適化ポイント:
- 認証方法選択画面で「Authenticatorアプリ」「メール認証」などの選択肢を明確に表示
- ユーザーが認証方式を選べるようにする(※3)
※3: 対象ユーザーのセキュリティ意識に応じて、強制またはオプションとする設定が必要です。
WebAuthn Policyとの併用設定
WebauthnはFIDO2標準に基づくハードウェアトークン認証で、生体認証やUSBキーなども利用可能です。MFAと併用することでセキュリティをさらに強化できますが、いくつかのポイントに注意が必要です。
ハードウェアトークンのサポート手順
Webauthn Policyを有効にするには、以下を行います。
- 「Realm」→「Authentication」→「WebAuthn」セクションへ移動
- 「WebAuthn Policy」を作成し、以下のパラメータを設定します:
- Relying Party ID:
https://your-domain.com(例) - User Verification Requirement:
Required
実装上の注意点: Chrome/Edge/Safari/Firefoxなど最新ブラウザが必須です。一部の旧バージョンではWebauthnがサポートされていない場合があります。
複数認証方式の優先順位設定
MFAとWebAuthnを併用する際には、認証方式の優先順位設定が必要です。
- 優先度の高い認証方法: Webauthn(物理トークン)→ Authenticatorアプリ → メール認証
- 複数方式を並列で使用可能にする場合は、「Parallel Executions」セクションで設定
競合リスク対策: 1つのユーザーが複数の認証方法を持つ場合、不正アクセス時の追跡が難しくなるため、定期的なポリシー見直しを推奨します。
暗号アルゴリズムの強化設定
セキュリティ基準の変更に伴い、SHA-1からSHA256/SHA512への移行が必須です。以下が具体的な手順です。
SHA-1からSHA-256への移行手順
Keycloakで使用するアルゴリズムを変更するには、以下のステップを実施します:
- 「Realm」→「Authentication」→「OTP Policy」を選択
- 「OTP hash algorithm」の設定
- 現在の値:
SHA-1(非推奨) - 新しい値:
SHA-256またはSHA-512(※4)
※4: SHA-256は現行のセキュリティ基準を満たすが、CPU負荷が軽い点で推奨されます。
ハッシュ計算にかかるパフォーマンス影響
アルゴリズム変更に伴う性能への影響について、以下が参考になります:
| アルゴリズム | 1回のハッシュ処理時間(平均) | 対応CPU負荷 |
|---|---|---|
| SHA-1 | 0.08ms | 低 |
| SHA-256 | 0.32ms | 中程度 |
| SHA-512 | 0.45ms | 高め |
クラスター環境でのロールアウト戦略: ロードバランサーを使用して、一部のノードから変更を開始し、負荷を均等に分散させることで、サービス停止を防ぎます。
テスト環境での検証プロセス
導入後の運用を確実にするためには、テスト環境でのシナリオテストが不可欠です。以下の手順で検証を行います。
擬似ユーザー作成手順
テスト環境では、本番データと混在しないよう擬似ユーザーを作成します。
- 「Users」セクションに移動し、「Add User」をクリック
- テスト用のメールアドレス・パスワードを入力(例:
[テストメール] / password123) - ユーザー属性に「mfa_required=true」と記録
注意: テストユーザーは「Admin」ロールを持つと、管理コンソールの権限が不正に利用される可能性があるため、テスト専用のロールを作成します。
認証失敗時のエラーロギング手順
認証に失敗した際のエラー情報は、ログファイルや「Events」セクションで確認できます。
- イベント設定: 「Realm」→「Events」セクションで、認証イベントの記録を有効化
- 認証失敗時のロギング:
- ユーザーID
- タイムスタンプ(例: 2026-07-10T15:34:22Z)
- エラーメッセージ(例:
Invalid OTP)
Keycloak MFA導入のベストプラクティス
MFAを実装した後は、運用面でのメンテナンスとポリシー見直しが重要です。以下の点に注意してください。
ポリシーの見直しタイミング
セキュリティ環境や企業規模の変化に応じて、以下のようなタイミングでポリシーを見直します:
- 新しいMFA方式の登場(例: FIDO2対応が進む場合)
- ユーザー数の増加により、認証フローの負荷が上昇した場合
- セキュリティインシデント後のポリシー見直し
チェックリスト: 6ヶ月ごとに設定を点検し、最新アルゴリズムや認証方式を使用しているか確認します。
ユーザー教育の重要性
MFA導入後は、ユーザーへの教育とガイドライン提供が不可欠です。以下のポイントを伝えましょう:
- Authenticatorアプリの設定方法(QRコードの読み取り手順など)
- メール認証時の注意点(「From」フィールドの確認)
- Webauthnトークンの保管方法(USBキーは紛失しないようにする)
教育ツール: 内部向けマニュアルや動画を用意し、新規ユーザーにも理解が促進されます。