SlideShare a Scribd company logo
1 of 27
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

実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門Naohiro Fujie
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~Hitachi, Ltd. OSS Solution Center.
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティKazushi Kamegawa
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景Tatsuo Kudo
 
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteTatsuo Kudo
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用Masaru Kurahayashi
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理Naohiro Fujie
 

What's hot (20)

Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティ
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
 
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Keycloakの動向
Keycloakの動向Keycloakの動向
Keycloakの動向
 
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 

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

OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overviewirix_jp
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight KeycloakHiroyuki Wada
 
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
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu 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 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 Divemasahito12
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Yuki 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 OSSCDaisuke 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

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

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%とレビュアーネック)