KeycloakをSSLクライアント認証で運用する~Keycloakへの不正アクセスやリスト攻撃をブロック

Keycloakのデフォルトの認証形式は、ID/パスワードの認証です。ワンタイムパスワード認証(OTP)で2要素認証を設定する方法もありますが、毎回異なるパスワードの入力が嫌われる場合もあります。

SSLクライアント証明書による認証の場合には、毎回異なるパスワードの入力は不要になり多要素認証 ( MFA )としての使い勝手が向上します。

Keycloakの認証強化

SSLクライアント認証により第三者による不正アクセス(なりすまし対策)や悪意のあるボットからのアクセスも防止できます(悪性Bot対策)。

 

リスト攻撃対策

Keycloakでのワンタイムパスワード認証やCAPTCHA認証と比較すると、SSLクライアント認証はSSLクライアント証明書の無い場合には、KeycloakへのアクセスをブロックできるのでID/パスワードのリスト攻撃も防ぐことが出来ます。

SSLクライアント認証 ワンタイムパスワード認証 CAPTCHA認証
Keycloakへのアクセス前に判定 Keycloakへのアクセス後に判定 Keycloakへのアクセス後に判定
リスト攻撃 ブロック  リスト攻撃 ブロック  リスト攻撃 ブロック 

 

 

SSLクライアント認証の組合せ

ユーザー端末側には、CAで発行のSSLクライアント証明書をインストールします。

SSLクライアント証明書 SSLサーバー証明書

 

Keycloakサーバー側には、SSLサーバー証明書をインストールすることで「SSLクライアント認証」を構成出来ます。

 

 

プライベートとパブリックの組合せ

プライベート パブリック
SSLクライアント証明書
SSLサーバー証明書

 

証明書としては、プライベートやパブリックのいずれの組みわせでもSSLクライアント認証で動作します。ただしプライベートなSSLサーバー証明書を使うとブラウザでワーニングが出る (*1) ので

  • SSLクライアント証明書(プライベート)
  • SSLサーバー証明書(パブリック)

の組合せで使うのが、費用を抑えることが出来る組み合わせです。

 

*1 プライベートなSSLサーバー証明書でブラウザのワーニングを抑制するには、サーバー証明書をブラウザの「信頼されたルート証明機関」に登録します

 

 

Keycloak

一般的なKeycloakにもSSLクライアント認証を対応できます

 

Keycloakアプライアンス

SSLクライアント認証に対応のKeycloakとしては、idPアプライアンス

 

 「Powered BLUE idP for Keycloak

での利用も可能です。

 

 

Keycloakアプライアンスの構成

  •  OS  RockyLinux 8.x  /  RedHat 8.x
  •  Keycloak(アプリ)
  •  GUIでのサーバーやアプリの設定

 

 

KeycloakアプライアンスのGUI設定

GUIからKeycloakやサーバー設定に対応しています

  • サーバーの設定(Network / Firewall )
  • ウィザードによるKeycloakの構成や設定(スタンドアロンやクラスター)
  • DB 設定( H2 / MariaDB )
  • DB 構成   ( 内蔵もしくは外部サーバーのどちらの構成にも対応 )
  • Keycloak のバックアップ、リストア、バージョンアップ
  • keycloak へのアクセスポート( 80 / 443 )
  • リバースプロキシとKeycloak 連携機能(1台での運用に対応)
  • SSLクライアント認証
  • SSLサーバー証明書の登録
  • アクティブモニタ(サービス監視・再起動・管理者への通知)

コマンドラインからのプログラムのインストールや設定は不要

 

リバースプロキシ経由やダイレクトアクセスモードに対応

 

 

 

 

 

 

 

①   リバースプロキシ構成(有無)

ダイレクトアクセス・モード Client ⇒   ( 443 / Keycloak )

 

 

 

 

 

 

 

リバースプロキシ・モード  Client ⇒   ( 443 / リバースプロキシ  ⇒ 8080 / Keycloak )  1台で運用

 

 

 

 

 

 

②  パス設定
https:// idp.keycloak.com / auth /

③  ポート設定
443 / 8080 / 80  /etc

 

 

SSLサーバー証明書の登録

  • 自己証明書やパブリックなSSLサーバー証明書の登録

 

 

 

 

 

 

 

 

DBセットアップやスタンドアローンやクラスター構成

 

 

 

 

 

 

 

クラスター構成

 

 

 

keycloak バージョン管理

例 ver 18.0.1 から19.0.1 へアップグレード

 

 

 

keycloak バックアップ

 

keycloakサーバーの監視やパッチの自動適用

  1.  サーバーの自己監視やサービスの自動再起動機能
  2.  パッチのスケジュールアップデート機能
  3.  管理者への通知機能

 

 

Private-CA

SSLクライアント証明書の発行及びSSLクライアント認証局として

Powered BLUE プライベートCA

を利用します。

* パブリックなCAで発行のSSLクライアント証明書での認証も出来ます

 

Private-CAとKeycloakの構成

  • 利用者側には、Private-CAからSSLクライアント証明書を配布します

 

 

 

 

 

失効リストの入手&自動同期

Private-CAの失効リストをKeycloak側で入手&自動同期する設定をします

 

 

SSLクライアント認証のアクセス手順

Web (SP) へアクセス時のSSO

 

 

 

 

 

 

 

 

 

SSLクライアント証明書が有効の場合

  1. ターゲットWeb(SP)にアクセス
  2. idP / Keycloakの認証
    (初回のみ・シングルサインオン・SSLクライアント認証)
  3. 認証の成功後 ターゲットWeb(SP)を表示

 

有効なSSLクライアント証明書の無い場合

 

 

アクセスコントロール

有効なSSLクライアント証明書の場合でも、時間や曜日などでのKeycloakへのアクセスコントロールが可能です。

  • 組織や部門でのアクセス制限
  • 曜日や時間帯でのアクセス制限
  • 特定ユーザーでのアクセス制限
  • 端末を紛失したAさんのアクセス禁止

 

アプライアンスの提供形態や運用先

運用環境に対応のアプライアンスでの提供

  • VMware / Hyper-V
  • AWS / Azure / FUJITSU Hybrid IT Service FJcloud-O(富士通) / IndigoPro(NTTPC) / VPSなど

 

お問合せ

 

 

 

製品についての、ご質問やご相談など