3 ポイント 投稿者 GN⁺ 2024-02-12 | 1件のコメント | WhatsAppで共有

Keycloak SSO設定: Docker ComposeとNginxを使用

  • Keycloakはオープンソースであり、主要なSSOプロトコルと互換性のある信頼できるアイデンティティおよびアクセス管理ソリューションである。
  • Docker Composeを使った設定は複雑ではないものの直感的ではないため、設定手順を要約して提供する。

概念

  • Nginxを中央リバースプロキシとして使用し、localhost経由で個別のサービスへトラフィックを転送する標準的な構成を採用する。
  • 単一ホストのリソースを共有しつつ、環境をできるだけ分離する経済的な構成と見なされる。

準備事項

  • 基本的なツール(SSH、LinuxがインストールされたVM、ドメインまたはサブドメイン)が必要である。
  • Docker rootless設定のために、パスワード不要の新しいnon-rootユーザーkeycloakを作成し、/etc/subuidおよび/etc/subgidの範囲を更新し、Docker rootlessをインストールして自動サービス起動を構成する。

Keycloak設定

  • 新しく作成したkeycloakユーザーでログインし、永続データとDockerファイルのためのディレクトリを作成する。
  • 公式ドキュメントを参照してdocker-compose.ymlを作成し、.envファイルに機密情報や変更されやすい情報を入力する。

ローカルでテスト

  • Docker Composeスタックをテストし、VMへのリバースSSHトンネルを作成したうえで、ブラウザでKeycloakのウェルカム画面を確認する。

Nginx設定

  • システムのリバースプロキシとしてNginxを設定し、Keycloakサービス用の新しいNginx .confファイルを作成する。
  • ドメインレジストラで、VMのIPにDNSクエリを転送するようAレコードを追加する。

デバッグ

  • .tld.comを開いてadminユーザーでKeycloakにログインし、Docker ComposeのログとNginxのアクセスログおよびエラーログを確認する。
  • 必要に応じてKeycloakデータベースを確認する。

Dockerfileを使ったカスタムビルド

  • quay.ioの事前ビルド済みイメージを使う代わりに、Dockerfileを使用して独自のイメージをビルドする。
  • Docker Composeを再起動してイメージをビルドし、サービスを開始する。

結論

  • Rootless Dockerの背後で、システムNginxリバースプロキシを用いてKeycloakサービスを実行している。
  • Dockerコンテナの自動更新、Keycloakサービスへのログインとメールの追加、レルムの追加、テーマの追加などが次のステップである。

GN⁺の意見:

  • セキュリティの重要性: 現在のWebはセキュリティ関連の脆弱性に追いつくのが難しいため、Keycloakのような信頼できるソリューションを使うことが重要である。
  • 効率的なアーキテクチャ: 単一ホストでリソースを共有しながら環境を分離する方式は、コスト効率が高く管理しやすい。
  • カスタマイズ性: Dockerfileを使ったカスタムビルドは、Keycloakを自分の要件に合わせて調整できる柔軟性を提供する。

1件のコメント

 
GN⁺ 2024-02-12
Hacker Newsの意見
  • Autheliaを選んだユーザーの意見:

    • Keycloakは機能が多いが、設定が複雑で追加のサービスが必要。
    • Autheliaにはユーザーインターフェースがなく、LDAPサーバーとの双方向同期もできないが、静的ファイルと環境変数で設定できるため、多くの場合に適している。
    • 単純な認証とSSOが必要なら、Autheliaから始めることを勧める。
  • JetBrains HubとKeycloakの使用経験があり、Dexを選んだユーザーの意見:

    • JetBrains Hubは設定が非常に簡単だが、Dockerイメージにlatestタグがないのが不便。
    • Keycloakは開発モードでは簡単だが、実運用環境での設定は難しい。
    • 結局、ドキュメントは不足しているものの、設定が簡単なDexを選んだ。
    • OAuth2 ProxyとNginxテンプレートを組み合わせて、SSO構成を簡素化した。
    • セキュリティのためにCloudflare AccessとWAFを追加した。
  • OpenID Connectサーバーの比較表を作成したユーザーの意見:

    • Keycloakのコードベースの大きさに驚いた。
  • Keycloakのセキュリティ問題に関するユーザーの意見:

    • KeycloakのCVE(公開脆弱性)を見ると、セキュリティ上の懸念がある。
  • AWS ECSでKeycloakを実装した経験を共有したユーザーの意見:

    • Keycloakは長年にわたって多くの変化を経験してきた。
    • クラスタリングに難しさがあり、特にDNS検出とUDPによるクラスタ検出に問題があった。
    • ステートフルなログインがサーバー間で一致せず、ロードバランシングが難しかった。
  • Keycloakifyについて好意的に言及したユーザーの意見:

    • KeycloakifyはKeycloakに対する優れた代替手段に見える。
  • AutheliaとKeycloakを比較したユーザーの意見:

    • Autheliaは魅力的に見えるが、KeycloakはAngularコネクタを提供しているため、始めやすい。
  • Keycloakを使った経験を共有したユーザーの意見:

    • Keycloakは設定が複雑でドキュメントも不足しているが、Terraformを使えば簡単にデプロイして管理できる。
  • Zitadelを使ってみたユーザーの意見:

    • Keycloakは初心者には混乱しやすく、Zitadelのほうが使いやすい。
  • Keycloak利用の難しさを訴えたユーザーの意見:

    • Keycloakはパスワード再設定リンクを直接提供せず、API経由で処理しなければならない。
    • クラスタ構成は簡単ではなく、レルムにも制限がある。
    • セキュアなログインシステムを自前で構築するのは危険、あるいは難しい。