Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Keycloakの実際・翻訳プロジェクト紹介

11,824 views

Published on

OSSセキュリティ技術の会 第二回勉強会
https://secureoss-sig.connpass.com/event/69314/

Published in: Technology

Keycloakの実際・翻訳プロジェクト紹介

  1. 1. OSSセキュリティ技術の会 Keycloakの実際, 翻訳プロジェクトの紹介 2017年11月29日 株式会社野村総合研究所 生産革新本部 生産革新ソリューション開発三部 和田 広之 本資料に掲載されている会社名、製品名、サービス名は各社の登録 商標、又は商標です。
  2. 2. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 1  和田 広之 @wadahiro  野村総合研究所  主にOSS系 (OpenStandia) 担当  コミュニティ活動 ▪Keycloak 日本語化対応やパッチのContributor ▪Keycloak 脆弱性報告 (CVE-2016-8609) ▪その他、各種ライブラリ(React.js/Jenkins, Bitbucketプラグイン etc.)の Contributeなど ▪Qiitaでもたまに記事を書いています (近年はフロントエンド成分多め) ▪今年はKeycloakのAdvent Calendarを やります! https://qiita.com/advent-calendar/2017/keycloak-by-openstandia 自己紹介
  3. 3. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 2 今日の内容  Keycloakの実際  弊社での適用事例を紹介  翻訳プロジェクトの紹介  ドキュメントの日本語化プロジェクトはじめました!
  4. 4. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 3 Keycloakの実際
  5. 5. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 4 プロジェクト概要  SSOを含むWebシステムの老朽化対応  OSや各種ミドルウェアがEOLを迎えるため入れ替えたい  インフラもクラウド(AWS)に変えて運用効率化したい
  6. 6. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 5 現行システム概要  SSO  OpenAM 9系 コミュニティ版  SSO保護対象アプリケーション  エージェント型のSSO構成  JavaEE アプリ ×2 ▪ 独自エージェント実装 ▪ アプリの認証処理でOpenAMのAPIを呼び出し認証連携  IIS アプリ ▪ OpenAMのIISエージェントを利用し、アプリはHTTPヘッダで認証連携  インフラ・運用周り  VMwareで仮想化はされているものの、各サーバのOS・ミドル・アプリを手動で構築・メン テナンス  運用監視はZabbixを自前で構築して運用  手動ビルド&リリース
  7. 7. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 6 移行後  SSO  Keycloak 2.5系 (RH SSO 7.1)  SSO保護対象アプリケーション  Apache HTTPD Server + mod_auth_openidc によるリバプロ型のSSO構成  JavaEE アプリ ×2 ▪ HTTPヘッダで認証を行うように修正して対応  IIS アプリ ▪ こちらは修正不要  インフラ・運用監視周り  クラウド (AWS) 上に構築 & マネージドサービスをフル活用  運用もクラウドサービスを利用 & Prometheusによる監視  CI/CDパイプラインによるリリース自動化
  8. 8. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 7 システム構成 (SSO関連部分のみ) OpenLDAP MySQL JavaEE App IIS App IIS Agent OpenAM Keycloak (RH SSO) Apache HTTPD mod_auth_openidc (出所) https://github.com/keycloak https://github.com/ForgeRock https://www.docker.com/brand-guidelines JavaEE App /ID管理 独自Agent JavaEE App 独自Agent Amazon ECS Amazon RDS IIS App JavaEE App /ID管理
  9. 9. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 8 Keycloak 採用の理由  高度認証・認可系の要件はなし  リスクベース認証、細かい認可制御 etc. の要件はない (OpenAMが得意とするところ)  LDAP不要の構成が容易  運用コストをその分下げることが可能  Immutable Infrastructure を実現しやすい  インフラ周りの設定ファイル内で環境変数の値を参照可能  レルム設定は外部RDBMSに保存されるため本体はステートレスに  Admin REST APIによるレルム設定更新の自動化が容易
  10. 10. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 9 Keycloak vs. OpenAM カテゴリ Keycloak (RH SSO) OpenAM 認証 多要素認証 ○ ○ OTP ○ ○ リスクベース認証 ☓ ○ デスクトップSSO ○ ○ 外部IdP認証 ○ ○ 代理認証 ☓ ○※1 認可 ユーザ属性アクセス制御 △※2 ○ ロールベースアクセス制御 △※2 ○ その他アクセス制御 △※2 ○ セルフサービス アカウント登録 ○ ○ パスワードリセット ○ ○ ユーザ属性管理 ○ ○ エージェント/ Client Adapter 対応プラットフォーム 少ない 多い その他 コードベース 小さくて比較的シンプル※3 巨大でツライ※3 拡張のしやすさ 易※3 難※3 オープン/クローズド オープン 最新版はクローズド 最新仕様への追随 そこそこ 早い ドキュメント そこそこ 充実 ※1 周辺プロダクトのOpenIG との組み合わせで実現 ※2 RH SSOではまだ Technology Preview 扱い ※3 あくまで個人の感想です
  11. 11. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 10 Keycloak vs. OpenAM カテゴリ Keycloak (RH SSO) OpenAM 認証 多要素認証 ○ ○ OTP ○ ○ リスクベース認証 ☓ ○ デスクトップSSO ○ ○ 外部IdP認証 ○ ○ 代理認証 ☓ ○※1 認可 ユーザ属性アクセス制御 △※2 ○ ロールベースアクセス制御 △※2 ○ その他アクセス制御 △※2 ○ セルフサービス アカウント登録 ○ ○ パスワードリセット ○ ○ ユーザ属性管理 ○ ○ エージェント/ Client Adapter 対応プラットフォーム 少ない 多い その他 コードベース 小さくて比較的シンプル※3 巨大でツライ※3 拡張のしやすさ 易※3 難※3 オープン/クローズド オープン 最新版はクローズド 最新仕様への追随 そこそこ 早い ドキュメント そこそこ 充実 ※1 周辺プロダクトのOpenIG との組み合わせで実現 ※2 RH SSOではまだ Technology Preview 扱い ※3 あくまで個人の感想です ・機能面ではOpenAMにまだまだ劣る ・でも、過去のしがらみが少ないので中身はシンプル ・SPIによる拡張が開発者フレンドリー ・オープンソース!
  12. 12. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 11 Client Adapterどうする問題  Client Adapterは各種 Javaアプリケーションサー バやSpring、NodeJS用のみ  加えてRH SSOでは、 JBossEAP / JBossFuse / NodeJS 用のみが 商用サポートの範囲 ▪Red Hat Single Sign-On Supported Configurations https://access.redhat.com/articles/2342861  今回のシステム構成では... ▪IISにはそもそも使えない ▪JBossのバージョンが古いため対応するClient Adapterがない
  13. 13. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 12 Client Adapter以外の選択肢  KeycloakではClient Adapterのようなエージェント型だけではなく、 リバースプロキシ型も実現可能  プロキシが OIDC/SAML2.0 に対応していれば基本的には連携可能  バックエンドのアプリはHTTPヘッダで認証するだけでよく、SSOプロダクトと 疎結合にもなる リバプロ エージェント型 リバースプロキシ型 UID: foo UID: foo UID: foo
  14. 14. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 13 リバプロ型方式のOSS候補  Keycloak Security Proxy  Keycloakオフィシャルのプロキシ実装(Undertowを利用)  ただし、RH SSOに含まれていない  アクセスログがない、任意項目をHTTPヘッダにマッピングできない、バックエンドは1つしか設定できないなど機能的に不十 分  コミットログを見るとやる気のなさを感じる  mod_auth_mellon  SAML SP用のApacheモジュール  RHEL6/7に付属 (ただしバージョンは0.8.0/0.11.0とちょっと古い)  RH SSOのSupported Configurationsに含まれている  mod_auth_openidc  OIDC RP/OAuth2 RS用のApacheモジュール  RHEL7に付属 (ただしバージョンは1.8.8とちょっと古い)  lua-resty-openidc  OIDC RP/OAuth2 RS用のNginx向け実装  mod_auth_openidcと同じ作者による開発  Keycloak Proxy  Go言語によるKeycloakに特化したOIDC RP用のプロキシ実装  1年半前くらいに軽く評価したときは他と比べると性能がいまいちだった  oauth2_proxy  Go言語によるOAuth2/OIDC RP用のプロキシ実装  GitHubのStar数は一番多い(3015)  バックエンドは1つしか設定できない
  15. 15. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 14 リバプロ型方式のOSS候補  Keycloak Security Proxy  Keycloakオフィシャルのプロキシ実装(Undertowを利用)  ただし、RH SSOに含まれていない  アクセスログがない、任意項目をHTTPヘッダにマッピングできない、バックエンドは1つしか設定できないなど機能的に不十 分  コミットログを見るとやる気のなさを感じる  mod_auth_mellon  SAML SP用のApacheモジュール  RHEL6/7に付属 (ただしバージョンは0.8.0/0.11.0とちょっと古い)  RH SSOのSupported Configurationsに含まれている  mod_auth_openidc  OIDC RP/OAuth2 RS用のApacheモジュール  RHEL7に付属 (ただしバージョンは1.8.8とちょっと古い)  lua-resty-openidc  OIDC RP/OAuth2 RS用のNginx向け実装  mod_auth_openidcと同じ作者による開発  Keycloak Proxy  Go言語によるKeycloakに特化したOIDC RP用のプロキシ実装  1年半前くらいに軽く評価したときは他と比べると性能がいまいちだった  oauth2_proxy  Go言語によるOAuth2/OIDC RP用のプロキシ実装  GitHubのStar数は一番多い(3015)  バックエンドは1つしか設定できない 下記理由により、今回はこちらを利用 ・OIDCはSAMLと比べて軽量なプロトコル ・OpenAMとの組み合わせで使用実績あり ・Apache有識者が多い(Committer在籍) ・性能も要件に対して十分
  16. 16. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 15 OpenAMとの性能比較  Keycloakの標準構成では認証処理が遅い?  SSOサーバ側でパスワードのハッシュ化が行われCPU負荷が高い  使用アルゴリズムは PBKDF2WithHmacSHA1/ソルト付き/20000回 (Keycloak 2.5系の場合)  OpenAM/OpenLDAP 構成 (SHA512/ソルト付き/5000回) と比較すると3割くらいのスループット  UserStorageを使いKeycloak/OpenLDAPの同構成にすると、 OpenAMの1.4倍のスループットに ▪ Keycloakの方が実装がシンプルな分、同条件だと性能は良さそう  セキュリティとのトレードオフ  今回は後述の UserStorage SPI を利用してLDAPなし構成としたが、移行 前と同等性能を確保できた
  17. 17. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 16 その他工夫したポイント  既存アカウント(PW含む)をそのまま新基盤に移行  ユーザ影響を考えるとPWリセットせずに移行したい  そこで、 UserStorage SPI を利用して認証処理をカスタマイズ  既存のID管理アプリが利用するユーザ情報DBをKeycloakから直接参照して認 証するようにした ▪ KeycloakのRDBMSに徐々にアカウント情報を移し緩やかにマイグレーション する方法もある - Migrate to Keycloak with Zero Downtime https://tech.smartling.com/migrate-to-keycloak-with-zero-downtime- 8dcab9e7cb2c  管理コンソールへのログイン時に接続元IPをチェックする Authenticatorを実装  社内セキュリティルール対応のためにIPチェックが必須だった  Authentication SPIを利用すれば認証時に任意のロジックを差し込める  ただし、現状のRH SSOでは本SPIはprivate扱いでありサポートは受けられない ので注意 (早く対応して欲しい...
  18. 18. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 17 その他工夫したポイント  運用まわりの工夫  Dockerを活用したImmutable Infrastructureの実現  レルム設定はJSONで管理し、設定変更のリリース時にCDパイプラ インから自動適用 ▪Keycloak管理コンソールは手動で設定変更しない! ▪レルムインポート機能 / Admin REST API を活用して自動化 ▪OpenAMだと設定変更を自動化するのがかなり大変だが Keycloakは比較的容易
  19. 19. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 18 その他工夫したポイント  運用まわりの工夫  Amazon ECS利用によるスケーリング、障害復旧の自動化  Keycloakのログも含めてAmazon CloudWatch Logsで一元管理  PrometheusでKeycloakのメトリクスも取得、Grafanaで可視化 ▪JMX ExporterをKeycloakに組み込み ▪JDBCデータソース/HTTPリクエストの統計情報を収集
  20. 20. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 19 まとめ  Keycloakは発展途上中  機能面でいうとOpenAMと比べるとまだまだ  ThoughtWorks社の Technology Rader (MAR 2017) でも ASSESS (ウォッチせよ) の段階  毎月リリースされており成長著しい  実際に適用してみて...  認証・認可要件によっては既に十分戦える  安定性も問題なし  モダンなUI/アーキテクチャで開発者フレンドリー  クラウドネイティブな環境に適用しやすく、 新(ネオ)OSS認証基盤 としてのポテンシャルは高い!
  21. 21. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 20 翻訳プロジェクトの紹介
  22. 22. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 21 keycloak-documentation-i18n  有志メンバーで翻訳はじめました!  GitHubで OSS として翻訳作業しています  https://github.com/openstandia/keycloak-documentation- i18n
  23. 23. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 22 keycloak-documentation-i18n  HTMLは弊社OpenStandiaサイトにて公開中  http://openstandia.jp/oss_info/keycloak/document.html
  24. 24. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 23 Transifexで翻訳  Gitは不要で、Transifex上で訳文を書くだけでOK  対象ファイルの翻訳を完了すると、GitHubにプルリクエストを自動 発行 & CircleCIでHTMLドキュメントを自動ビルド  翻訳者のGitHubアカウントがある場合はContributionに加算され ます
  25. 25. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 24 現在の進捗  6割程度 (ただし、レビュー済みがまだ27%とレビュアーネック)
  26. 26. (出所) https://commons.wikimedia.org/wiki/File:Unclesamwantyou.jpg

×