SlideShare ist ein Scribd-Unternehmen logo
1 von 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の実際・翻訳プロジェクト紹介

Weitere ähnliche Inhalte

Was ist angesagt?

シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
Shinichi Tomita
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
Tatsuo Kudo
 
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
Nov Matake
 

Was ist angesagt? (20)

FAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにFAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのために
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
 
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンス
 
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
 
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 発表資料)
 
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
 
Keycloak開発入門
Keycloak開発入門Keycloak開発入門
Keycloak開発入門
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 

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

OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overview
irix_jp
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop
Daisuke Sugai
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
Ryusuke Kajiyama
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

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