SlideShare a Scribd company logo
OSSセキュリティ技術の会
Keycloakの実際,
翻訳プロジェクトの紹介
2017年11月29日
株式会社野村総合研究所
生産革新本部
生産革新ソリューション開発三部
和田 広之
本資料に掲載されている会社名、製品名、サービス名は各社の登録 商標、又は商標です。
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
自己紹介
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 2
今日の内容
 Keycloakの実際
 弊社での適用事例を紹介
 翻訳プロジェクトの紹介
 ドキュメントの日本語化プロジェクトはじめました!
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 3
Keycloakの実際
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 4
プロジェクト概要
 SSOを含むWebシステムの老朽化対応
 OSや各種ミドルウェアがEOLを迎えるため入れ替えたい
 インフラもクラウド(AWS)に変えて運用効率化したい
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を自前で構築して運用
 手動ビルド&リリース
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パイプラインによるリリース自動化
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管理
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 8
Keycloak 採用の理由
 高度認証・認可系の要件はなし
 リスクベース認証、細かい認可制御 etc. の要件はない
(OpenAMが得意とするところ)
 LDAP不要の構成が容易
 運用コストをその分下げることが可能
 Immutable Infrastructure を実現しやすい
 インフラ周りの設定ファイル内で環境変数の値を参照可能
 レルム設定は外部RDBMSに保存されるため本体はステートレスに
 Admin REST APIによるレルム設定更新の自動化が容易
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 あくまで個人の感想です
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による拡張が開発者フレンドリー
・オープンソース!
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がない
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
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つしか設定できない
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在籍)
・性能も要件に対して十分
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なし構成としたが、移行
前と同等性能を確保できた
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扱いでありサポートは受けられない
ので注意 (早く対応して欲しい...
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 17
その他工夫したポイント
 運用まわりの工夫
 Dockerを活用したImmutable Infrastructureの実現
 レルム設定はJSONで管理し、設定変更のリリース時にCDパイプラ
インから自動適用
▪Keycloak管理コンソールは手動で設定変更しない!
▪レルムインポート機能 / Admin REST API を活用して自動化
▪OpenAMだと設定変更を自動化するのがかなり大変だが
Keycloakは比較的容易
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 18
その他工夫したポイント
 運用まわりの工夫
 Amazon ECS利用によるスケーリング、障害復旧の自動化
 Keycloakのログも含めてAmazon CloudWatch Logsで一元管理
 PrometheusでKeycloakのメトリクスも取得、Grafanaで可視化
▪JMX ExporterをKeycloakに組み込み
▪JDBCデータソース/HTTPリクエストの統計情報を収集
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 19
まとめ
 Keycloakは発展途上中
 機能面でいうとOpenAMと比べるとまだまだ
 ThoughtWorks社の Technology Rader (MAR 2017) でも
ASSESS (ウォッチせよ) の段階
 毎月リリースされており成長著しい
 実際に適用してみて...
 認証・認可要件によっては既に十分戦える
 安定性も問題なし
 モダンなUI/アーキテクチャで開発者フレンドリー
 クラウドネイティブな環境に適用しやすく、
新(ネオ)OSS認証基盤 としてのポテンシャルは高い!
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 20
翻訳プロジェクトの紹介
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 21
keycloak-documentation-i18n
 有志メンバーで翻訳はじめました!
 GitHubで OSS として翻訳作業しています
 https://github.com/openstandia/keycloak-documentation-
i18n
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 22
keycloak-documentation-i18n
 HTMLは弊社OpenStandiaサイトにて公開中
 http://openstandia.jp/oss_info/keycloak/document.html
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 23
Transifexで翻訳
 Gitは不要で、Transifex上で訳文を書くだけでOK
 対象ファイルの翻訳を完了すると、GitHubにプルリクエストを自動
発行 & CircleCIでHTMLドキュメントを自動ビルド
 翻訳者のGitHubアカウントがある場合はContributionに加算され
ます
Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 24
現在の進捗
 6割程度 (ただし、レビュー済みがまだ27%とレビュアーネック)
(出所) https://commons.wikimedia.org/wiki/File:Unclesamwantyou.jpg
Keycloakの実際・翻訳プロジェクト紹介

More Related Content

What's hot

Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
Hiroyuki Wada
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
Makoto Haruyama
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
Hitachi, Ltd. OSS Solution Center.
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
土岐 孝平
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
 
OSS についてあれこれ
OSS についてあれこれOSS についてあれこれ
OSS についてあれこれ
Takuto Wada
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
ShuheiUda
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
 

What's hot (20)

Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
OSS についてあれこれ
OSS についてあれこれOSS についてあれこれ
OSS についてあれこれ
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 

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

OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overviewirix_jp
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
NTT Communications Technology Development
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight Keycloak
Hiroyuki Wada
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop Daisuke Sugai
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
オラクルエンジニア通信
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
 
Odl intro20141029
Odl intro20141029Odl intro20141029
Odl intro20141029
NEC Corporation
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
 
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
Takayoshi Tanaka
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
Etsuji Nakai
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
Shinichi Matsuda
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
Kazuko Itoda
 
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
OpenStack Congress Deep Dive
OpenStack Congress Deep DiveOpenStack Congress Deep Dive
OpenStack Congress Deep Dive
masahito12
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Yuki Suga
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSC
Daisuke Nishino
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20Ryusuke Kajiyama
 

Similar to Keycloakの実際・翻訳プロジェクト紹介 (20)

OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overview
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight Keycloak
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
Odl intro20141029
Odl intro20141029Odl intro20141029
Odl intro20141029
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
 
OpenStack Congress Deep Dive
OpenStack Congress Deep DiveOpenStack Congress Deep Dive
OpenStack Congress Deep Dive
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSC
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
 

Recently uploaded

遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 

Recently uploaded (8)

遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 

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

  • 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. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 2 今日の内容  Keycloakの実際  弊社での適用事例を紹介  翻訳プロジェクトの紹介  ドキュメントの日本語化プロジェクトはじめました!
  • 4. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 3 Keycloakの実際
  • 5. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 4 プロジェクト概要  SSOを含むWebシステムの老朽化対応  OSや各種ミドルウェアがEOLを迎えるため入れ替えたい  インフラもクラウド(AWS)に変えて運用効率化したい
  • 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. 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. 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. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 8 Keycloak 採用の理由  高度認証・認可系の要件はなし  リスクベース認証、細かい認可制御 etc. の要件はない (OpenAMが得意とするところ)  LDAP不要の構成が容易  運用コストをその分下げることが可能  Immutable Infrastructure を実現しやすい  インフラ周りの設定ファイル内で環境変数の値を参照可能  レルム設定は外部RDBMSに保存されるため本体はステートレスに  Admin REST APIによるレルム設定更新の自動化が容易
  • 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. 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. 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. 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. 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. 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. 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. 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. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 17 その他工夫したポイント  運用まわりの工夫  Dockerを活用したImmutable Infrastructureの実現  レルム設定はJSONで管理し、設定変更のリリース時にCDパイプラ インから自動適用 ▪Keycloak管理コンソールは手動で設定変更しない! ▪レルムインポート機能 / Admin REST API を活用して自動化 ▪OpenAMだと設定変更を自動化するのがかなり大変だが Keycloakは比較的容易
  • 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. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 19 まとめ  Keycloakは発展途上中  機能面でいうとOpenAMと比べるとまだまだ  ThoughtWorks社の Technology Rader (MAR 2017) でも ASSESS (ウォッチせよ) の段階  毎月リリースされており成長著しい  実際に適用してみて...  認証・認可要件によっては既に十分戦える  安定性も問題なし  モダンなUI/アーキテクチャで開発者フレンドリー  クラウドネイティブな環境に適用しやすく、 新(ネオ)OSS認証基盤 としてのポテンシャルは高い!
  • 21. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 20 翻訳プロジェクトの紹介
  • 22. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 21 keycloak-documentation-i18n  有志メンバーで翻訳はじめました!  GitHubで OSS として翻訳作業しています  https://github.com/openstandia/keycloak-documentation- i18n
  • 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. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 23 Transifexで翻訳  Gitは不要で、Transifex上で訳文を書くだけでOK  対象ファイルの翻訳を完了すると、GitHubにプルリクエストを自動 発行 & CircleCIでHTMLドキュメントを自動ビルド  翻訳者のGitHubアカウントがある場合はContributionに加算され ます
  • 25. Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 24 現在の進捗  6割程度 (ただし、レビュー済みがまだ27%とレビュアーネック)