SlideShare a Scribd company logo
OSSセキュリティ技術の会 第三回勉強会
~ “Keycloak” で、 “認証王“ に!!! おれはなるっ !!!! ~
Keycloak入門
2018年07月13日
株式会社野村総合研究所
生産革新本部
生産革新ソリューション開発一部
和田 広之
本資料に掲載されている会社名、製品名、サービス名は各社の登録 商標、又は商標です。
1Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
自己紹介
 和田 広之 @wadahiro
 野村総合研究所 (OpenStandiaチーム) 所属
 主にOSS系の技術調査・支援などを担当
 OSSコミュニティ活動
▪Keycloak 日本語化対応などのパッチ開発
▪Keycloak ドキュメントの日本語翻訳
▪GitHubでOSSとして翻訳作業
▪https://github.com/openstandia/keycloak-documentation-i18n
▪現在4系の翻訳中 (残10%ほど...)
▪是非ご活用ください!
2Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
今日の内容
 Keycloakとは
 昨今のIAMの役割ついておさらい
 Keycloakのカバー範囲・ユースケース・特徴的な機能について
Source: https://www.keycloak.org/
4Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
OOTB (Out of the Box)
 インストールが簡単 !
 Java 8 JDKのインストール & 配布されているzip/tar.gzを解凍するだけ
 TomcatやWildFlyなど、Webアプリケーションサーバの用意は不要
 お試し利用であれば、用意されている起動スクリプトを実行するだけで即起動/利用
可能
 DockerイメージもDocker Hubにあるよ
 Kubernetes用のHelm Chartもオフィシャルリポジトリで公開されているよ
▪RDBMSの切り替え、HA化も設定で可能
 セットアップが簡単 !!
 モダンで使いやすいGUIで設定可能 (←初心者にとって超重要)
 玄人向けにはCLIツールもあるよ
5Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
 ユーザー認証
 システムごとに個別に認証してサービスを利用
アイデンティティ&アクセス管理 (IAM) の役割
App
利用者
ユーザー認証
App
ユーザー認証
6Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ&アクセス管理 (IAM) の役割
 アイデンティティ連携 / Web SSO
 エンタープライズでは2000年代くらいには多くの企業で導入済み
 同一ドメインのためCookieベースのシンプルなSSO方式
Apps
認証依頼 認証結果
・・・
認証サーバ
利用者
ユーザー認証
サービス利用
7Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ&アクセス管理 (IAM) の役割
 アイデンティティ連携 / Web SSO
 ASP / SaaS などのクラウドサービスも含めたSSO
 Cookieに頼らないフェデレーション方式が必要
ASP / SaaS
サービス
Apps
認証依頼 認証結果
・・・
認証サーバ
利用者
ユーザー認証
認証依頼
認証結果
サービス利用
8Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ&アクセス管理 (IAM) の役割
 アイデンティティ連携 / Web SSO
 IDaaSなどの外部IdPを組み合わせた多段認証連携によるシステム全体のSSO
IDaaSなど
Apps
認証依頼 認証結果
・・・
認証サーバ
利用者
ユーザー認証
認証依頼
認証結果
社外利用者
ユーザー認証
サービス利用
サービス利用
9Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ&アクセス管理 (IAM) の役割
 アイデンティティ連携 / Web SSO
 コンシューマ向けではソーシャルログインは今や当たり前
自社サービス
認証依頼 認証結果
Source: https://ja.facebookbrand.com/assets
https://www.google.co.jp
https://www.yahoo.co.jp/
https://line.me/en/logo
利用者
ユーザー認証
サービス利用
10Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ&アクセス管理 (IAM) の役割
 アイデンティティ・プロビジョニング
 個社要件が多くスクラッチで作られる事も
 CSVで渡す方式も根強い
Apps
・・・
ID管理サーバ
利用者
ユーザー情報同期
ユーザー登録・
変更・削除
管理者
11Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ&アクセス管理 (IAM) の役割
 APIアクセス認可
 2000年代後半くらいからコンシューマ向けサイトを中心に広く使われるように
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可サーバ
トークン検証
サービス利用
12Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
IAMを構成する技術仕様
 オープンスタンダードな技術を使うようになってきている
Source: Internet of Things Security & Privacy
https://www.slideshare.net/ChrisAdriaensen/internet-of-things-security-privacy-82981990
Enterprise
IAM
Consumer
IAM
いま
SSO 製品独自仕様
or SAML
内製独自仕様
or SAML or
OpenID
OpenID
Connect
API認可 WS-* 内製独自仕様 OAuth
IDプロビジョニング CSV渡し/DB
製品独自仕様
独自データ連
携
SCIM
ユーザー認証 製品独自仕様 内製独自仕様 FIDO
13Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
オープンスタンダード技術による構成
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
ユーザー情報同期
サービス利用
サービス利用
14Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Keycloak の代表的な機能
1. シングルサインオン (OpenID Connect, SAML 2.0)
2. API認可 (OAuth 2.0)
3. アプリケーション向けのライブラリ提供 (Client Adapter)
4. 外部IdP連携 (Identity Brokering / Social Login)
5. 外部ユーザーデータストアとの連携 (User Federation)
6. 豊富なカスタマイズポイント
15Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
1. シングルサインオン (OpenID Connect, SAML 2.0)
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
サービス利用
サービス利用
Cookieベースの認証連携は
持たず、標準技術のみに対応
16Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
ユースケース
企業内システムのシングルサインオン
Legacy Apps
App
ID管理システム
従業員
管理者
Reverse Proxy
認証サーバ
ユーザー情報同期
SAML / OIDC による認証結果連携
社内IDでKeycloakにログイン
すればSaaSも利用可能
Source: https://commons.wikimedia.org/wiki/File:Gsuite_logo.svg?uselang=ja
https://commons.wikimedia.org/wiki/File:Office_365_logo.png?uselang=ja
https://login.salesforce.com
SAML 2.0 / OIDCに対応で
きないアプリはリバプロ型
を利用
Keycloakクライアントアダプ
ターなどを導入して SAML 2.0/
OIDC に対応させる
17Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
2. API認可 (OAuth 2.0)
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
サービス利用
サービス利用
RFC7662 - Token Intr
ospectionにも対応
RFC7636 - Proof Key for Code
Exchangeにも対応
18Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
ユースケース
自社サービスのAPI公開
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
サービス利用
銀行オープンAPIのセキュリティ要件と
なりそうな FAPI にも対応中
19Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
ユースケース
MicroserviceのAPI保護
 ユーザーからエッジゲートウェイ、サービスメッシュ、既存システムに至るまで、エンド
ツーエンドのアイデンティティが必要になる
従来の3層アーキテクチャ マイクロサービスアーキテクチャ
Source: Microservices Solution Patterns https://medium.com/microservices-learning/microservices-solution-patterns-3a58526dbc9e
・モノリシックなアプリケーション構成
・認証情報はローカルでやりとり
・アプリケーションは複数のマイクロサービスから構
成されるサービスメッシュな構成に
・認証情報を各サービスに伝播させる必要あり
20Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Istioによる解決
 Istio
 各サービスの横に小さなAPIゲートウェイとなるサイドカーProxyを設置し、マイクロ
サービス間の通信を制御する
▪ルーティング制御
▪流量制御
▪タイムアウト制御
▪リトライ処理
▪フォールトインジェクション
▪セキュリティ
Source: https://istio.io/docs/concepts/what-is-istio/overview/
21Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Istioのセキュリティ
 Authentication Policy
 Peer – Mutual TLSによるサービス間の認証 (SPIFEEを利用)
 Origin – オリジナルのリクエスター(エンドユーザー) を JWT を使い認証
 Mutual TLS Authentication
 Istio Role-Based Access Control
Source: https://istio.io/docs/concepts/what-is-istio/overview/
22Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Istio – Keycloak によるMicroserviceの保護
 KeycloakはJWTを発行
 そのJWTはIstioのサイドカーProxyにより自動検証されAPI保護される
 アプリ側では意識する必要なし
アクセストークン
(JWT)
ユーザー認証
Source: https://istio.io/docs/concepts/what-is-istio/overview/
23Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
参考情報
 Istio – Keycloak デモアプリ
 https://blog.keycloak.org/2018/02/keycloak-and-istio.html
 https://github.com/kameshsampath/istio-keycloak-demo
 ただし、最近のIstio (0.8)でがらっと仕様が変わってしまい、最新
版では上記デモは多分動かないので注意
24Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
3. アプリケーション向けのライブラリ提供 (Client Adapter)
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
サービス利用
サービス利用
SSO対象App
の向け
リソースサーバの
API保護向け
OAuth2
クライアント向け
25Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Client Adapter 一覧
プラットフォーム 対応バージョン OpenID Connect 1.0 /
OAuth 2.0
SAML 2.0
WildFly 11, 10, 9 ○ ○
8 (DEPRECATED) ○ -
JBoss EAP 7, 6 ○ ○
JBoss AS 7.1 (DEPRECATED) ○ ○
JBoss Fuse 6.3, 6.2 ○ -
JavaScript - ○ -
Jetty 9.4, 9.3, 9.2,
8.1 (DEPRECATED)
○ ○
9.1 (DEPRECATED) ○ -
Tomcat 8, 7,
6 (DEPRECATED)
○ ○
26Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Reverse Proxy 方式
 Apache HTTPD
 mod_auth_openidc (OpenID Connect 1.0)
 mod_auth_mellon (SAML 2.0)
※上記はRHEL (CentOS) に付属
 他にもNginx向けやGolangベースで単独動作するものも
 lua-resty-openidc
 oauth2_proxy
27Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Keycloak オフィシャルの Reverse Proxy 方式
 より軽量なプロキシー実装を提供予定 (Golang)
 github.com/gambol99/keycloak-proxy
がオフィシャルリポジトリに 移管!!
 keycloak-generic-adapter
になる模様
28Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
4. 外部IdP (Identity Brokering / Social Login)
APIアクセス
ユーザー認証
利用者
公開 APIApps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
サービス利用
サービス利用
Source: https://ja.facebookbrand.com/assets
https://www.google.co.jp
認証依頼
認証結果 ・・・
29Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
5. 外部ユーザーデータストアとの連携 (User Federation)
APIアクセス
ユーザー認証
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
サービス利用
サービス利用
LDAPサーバ
認証
30Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
ユースケース
企業内システムのシングルサインオン
Legacy App
App
従業員
既にLDAPでID統合されてい
る場合は、UserFederation
機能により認証DBとして利用
Reverse Proxy
認証サーバ
LDAPサーバ
ユーザー認証
認証
31Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
ユースケース
企業内システムのシングルサインオン
認証サーバ
Legacy App
App
Active Directory
従業員
Windowsドメイン認証するこ
とでKeycloakに自動ログイン
Reverse Proxy
ドメイン認証
Kerberos認証
Source: https://docs.microsoft.com/ja-jp/windows-server/identity/ad-fs/deployment/upgrading-to-ad-fs-in-windows-server-sql
32Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
 SCIMには未対応 & ID管理機能は簡易的
 エンタープライズユースでは専用のID管理ソフトウェアの利用/スクラッチ
開発が現状は必要
 ワークフローによる承認・人事システムと連動したIDライフサイクル管理・棚卸し運用など、求められる
要件が複雑
アイデンティティ・プロビジョニング
認証・認可サーバ利用者
Apps
ユーザー情報同期
ユーザー登録・
変更・削除
管理者ID管理サーバ
・・・
サービス利用
ユーザー認証
33Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
アイデンティティ・プロビジョニング
 簡易的なID管理としての利用はOK
 LDAPでID統合されており、承認等のワークフロー制御が不要なケース
認証・認可サーバ利用者
Apps
ユーザー登録・
変更・削除
管理者
・・・
サービス利用
ユーザー認証
LDAPサーバ
認証・ユーザー登録・
変更・削除
34Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
KeycloakのID管理
 ID管理でよくあるデータモデルを提供しており、簡易的なID管理とし
て利用できる
 ユーザー/グループ/ロール の管理 (User FederationによりLDAPと同期もできる)
 グループ/ロールは階層構造として持てる
Realm A
Master Realm
Groups
Realm Roles
Roles
Client Roles
Users
Realm B
35Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
FIDO 2.0 対応は今年末くらいに来る!?
APIアクセス
利用者
公開 API
Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/
https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/
Apps
APIアクセス
許可要求
APIアクセス許可
認証・認可/
ID管理サーバ
トークン検証
・・・
認証依頼 認証結果
Apps
サービス利用
サービス利用
ユーザー認証
36Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
6. 豊富なカスタマイズポイント
 Theme
 Authentication SPI
 UserStorage SPI
 Required Action
 Protocol Mapper
 EventListener SPI
 ・・・
Red Hat SSOでサポートされておりAPI互
換が保たれている
その他の拡張ポイントは現状、private扱い
のため、バージョンアップにより予告なく互
換性が失われる場合があるのでカスタマ
イズする場合は注意
37Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Authentication SPI
 標準でOTP、Kerberos認証、X.509証明書認証など用意
 プラガブルにカスタム認証ロジックを組み込み可能
 Out of the Boxで用意されている各種認証フローをまるっと置き換
えることもできる
38Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
Required Action
 ユーザーのログイン処理後に必須で動作させたい処理を
Required Action と呼ぶ
 組み込みのAction
 OTPの設定
 利用規約への同意
 パスワード更新
 ユーザープロフィール更新
 Emailの確認
 独自Actionの追加も可能
39Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
まとめ
40Copyright(C) Nomura Research Institute, Ltd. All rights reserved.
まとめ
 Keycloakは昨今のIAMユースケースの多くをカバー
 OOTBですぐに試せる & すぐに使える機能を提供
 OTP、Kerberos認証、X509認証などの認証ロジック
 Required Actionによる認証後のアクション指定 (利用規約同意、メールアドレス確
認など)
 使いやすい管理コンソール
 豊富なカスタマイズポイントを提供
 新技術対応もすすめている
 FIDO 2.0
 FAPI
Keycloak入門

More Related Content

Keycloak入門

  • 1. OSSセキュリティ技術の会 第三回勉強会 ~ “Keycloak” で、 “認証王“ に!!! おれはなるっ !!!! ~ Keycloak入門 2018年07月13日 株式会社野村総合研究所 生産革新本部 生産革新ソリューション開発一部 和田 広之 本資料に掲載されている会社名、製品名、サービス名は各社の登録 商標、又は商標です。
  • 2. 1Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 自己紹介  和田 広之 @wadahiro  野村総合研究所 (OpenStandiaチーム) 所属  主にOSS系の技術調査・支援などを担当  OSSコミュニティ活動 ▪Keycloak 日本語化対応などのパッチ開発 ▪Keycloak ドキュメントの日本語翻訳 ▪GitHubでOSSとして翻訳作業 ▪https://github.com/openstandia/keycloak-documentation-i18n ▪現在4系の翻訳中 (残10%ほど...) ▪是非ご活用ください!
  • 3. 2Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 今日の内容  Keycloakとは  昨今のIAMの役割ついておさらい  Keycloakのカバー範囲・ユースケース・特徴的な機能について
  • 5. 4Copyright(C) Nomura Research Institute, Ltd. All rights reserved. OOTB (Out of the Box)  インストールが簡単 !  Java 8 JDKのインストール & 配布されているzip/tar.gzを解凍するだけ  TomcatやWildFlyなど、Webアプリケーションサーバの用意は不要  お試し利用であれば、用意されている起動スクリプトを実行するだけで即起動/利用 可能  DockerイメージもDocker Hubにあるよ  Kubernetes用のHelm Chartもオフィシャルリポジトリで公開されているよ ▪RDBMSの切り替え、HA化も設定で可能  セットアップが簡単 !!  モダンで使いやすいGUIで設定可能 (←初心者にとって超重要)  玄人向けにはCLIツールもあるよ
  • 6. 5Copyright(C) Nomura Research Institute, Ltd. All rights reserved.  ユーザー認証  システムごとに個別に認証してサービスを利用 アイデンティティ&アクセス管理 (IAM) の役割 App 利用者 ユーザー認証 App ユーザー認証
  • 7. 6Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  エンタープライズでは2000年代くらいには多くの企業で導入済み  同一ドメインのためCookieベースのシンプルなSSO方式 Apps 認証依頼 認証結果 ・・・ 認証サーバ 利用者 ユーザー認証 サービス利用
  • 8. 7Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  ASP / SaaS などのクラウドサービスも含めたSSO  Cookieに頼らないフェデレーション方式が必要 ASP / SaaS サービス Apps 認証依頼 認証結果 ・・・ 認証サーバ 利用者 ユーザー認証 認証依頼 認証結果 サービス利用
  • 9. 8Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  IDaaSなどの外部IdPを組み合わせた多段認証連携によるシステム全体のSSO IDaaSなど Apps 認証依頼 認証結果 ・・・ 認証サーバ 利用者 ユーザー認証 認証依頼 認証結果 社外利用者 ユーザー認証 サービス利用 サービス利用
  • 10. 9Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  コンシューマ向けではソーシャルログインは今や当たり前 自社サービス 認証依頼 認証結果 Source: https://ja.facebookbrand.com/assets https://www.google.co.jp https://www.yahoo.co.jp/ https://line.me/en/logo 利用者 ユーザー認証 サービス利用
  • 11. 10Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ・プロビジョニング  個社要件が多くスクラッチで作られる事も  CSVで渡す方式も根強い Apps ・・・ ID管理サーバ 利用者 ユーザー情報同期 ユーザー登録・ 変更・削除 管理者
  • 12. 11Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  APIアクセス認可  2000年代後半くらいからコンシューマ向けサイトを中心に広く使われるように APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可サーバ トークン検証 サービス利用
  • 13. 12Copyright(C) Nomura Research Institute, Ltd. All rights reserved. IAMを構成する技術仕様  オープンスタンダードな技術を使うようになってきている Source: Internet of Things Security & Privacy https://www.slideshare.net/ChrisAdriaensen/internet-of-things-security-privacy-82981990 Enterprise IAM Consumer IAM いま SSO 製品独自仕様 or SAML 内製独自仕様 or SAML or OpenID OpenID Connect API認可 WS-* 内製独自仕様 OAuth IDプロビジョニング CSV渡し/DB 製品独自仕様 独自データ連 携 SCIM ユーザー認証 製品独自仕様 内製独自仕様 FIDO
  • 14. 13Copyright(C) Nomura Research Institute, Ltd. All rights reserved. オープンスタンダード技術による構成 APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps ユーザー情報同期 サービス利用 サービス利用
  • 15. 14Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Keycloak の代表的な機能 1. シングルサインオン (OpenID Connect, SAML 2.0) 2. API認可 (OAuth 2.0) 3. アプリケーション向けのライブラリ提供 (Client Adapter) 4. 外部IdP連携 (Identity Brokering / Social Login) 5. 外部ユーザーデータストアとの連携 (User Federation) 6. 豊富なカスタマイズポイント
  • 16. 15Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 1. シングルサインオン (OpenID Connect, SAML 2.0) APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps サービス利用 サービス利用 Cookieベースの認証連携は 持たず、標準技術のみに対応
  • 17. 16Copyright(C) Nomura Research Institute, Ltd. All rights reserved. ユースケース 企業内システムのシングルサインオン Legacy Apps App ID管理システム 従業員 管理者 Reverse Proxy 認証サーバ ユーザー情報同期 SAML / OIDC による認証結果連携 社内IDでKeycloakにログイン すればSaaSも利用可能 Source: https://commons.wikimedia.org/wiki/File:Gsuite_logo.svg?uselang=ja https://commons.wikimedia.org/wiki/File:Office_365_logo.png?uselang=ja https://login.salesforce.com SAML 2.0 / OIDCに対応で きないアプリはリバプロ型 を利用 Keycloakクライアントアダプ ターなどを導入して SAML 2.0/ OIDC に対応させる
  • 18. 17Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 2. API認可 (OAuth 2.0) APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps サービス利用 サービス利用 RFC7662 - Token Intr ospectionにも対応 RFC7636 - Proof Key for Code Exchangeにも対応
  • 19. 18Copyright(C) Nomura Research Institute, Ltd. All rights reserved. ユースケース 自社サービスのAPI公開 APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 サービス利用 銀行オープンAPIのセキュリティ要件と なりそうな FAPI にも対応中
  • 20. 19Copyright(C) Nomura Research Institute, Ltd. All rights reserved. ユースケース MicroserviceのAPI保護  ユーザーからエッジゲートウェイ、サービスメッシュ、既存システムに至るまで、エンド ツーエンドのアイデンティティが必要になる 従来の3層アーキテクチャ マイクロサービスアーキテクチャ Source: Microservices Solution Patterns https://medium.com/microservices-learning/microservices-solution-patterns-3a58526dbc9e ・モノリシックなアプリケーション構成 ・認証情報はローカルでやりとり ・アプリケーションは複数のマイクロサービスから構 成されるサービスメッシュな構成に ・認証情報を各サービスに伝播させる必要あり
  • 21. 20Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Istioによる解決  Istio  各サービスの横に小さなAPIゲートウェイとなるサイドカーProxyを設置し、マイクロ サービス間の通信を制御する ▪ルーティング制御 ▪流量制御 ▪タイムアウト制御 ▪リトライ処理 ▪フォールトインジェクション ▪セキュリティ Source: https://istio.io/docs/concepts/what-is-istio/overview/
  • 22. 21Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Istioのセキュリティ  Authentication Policy  Peer – Mutual TLSによるサービス間の認証 (SPIFEEを利用)  Origin – オリジナルのリクエスター(エンドユーザー) を JWT を使い認証  Mutual TLS Authentication  Istio Role-Based Access Control Source: https://istio.io/docs/concepts/what-is-istio/overview/
  • 23. 22Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Istio – Keycloak によるMicroserviceの保護  KeycloakはJWTを発行  そのJWTはIstioのサイドカーProxyにより自動検証されAPI保護される  アプリ側では意識する必要なし アクセストークン (JWT) ユーザー認証 Source: https://istio.io/docs/concepts/what-is-istio/overview/
  • 24. 23Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 参考情報  Istio – Keycloak デモアプリ  https://blog.keycloak.org/2018/02/keycloak-and-istio.html  https://github.com/kameshsampath/istio-keycloak-demo  ただし、最近のIstio (0.8)でがらっと仕様が変わってしまい、最新 版では上記デモは多分動かないので注意
  • 25. 24Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 3. アプリケーション向けのライブラリ提供 (Client Adapter) APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps サービス利用 サービス利用 SSO対象App の向け リソースサーバの API保護向け OAuth2 クライアント向け
  • 26. 25Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Client Adapter 一覧 プラットフォーム 対応バージョン OpenID Connect 1.0 / OAuth 2.0 SAML 2.0 WildFly 11, 10, 9 ○ ○ 8 (DEPRECATED) ○ - JBoss EAP 7, 6 ○ ○ JBoss AS 7.1 (DEPRECATED) ○ ○ JBoss Fuse 6.3, 6.2 ○ - JavaScript - ○ - Jetty 9.4, 9.3, 9.2, 8.1 (DEPRECATED) ○ ○ 9.1 (DEPRECATED) ○ - Tomcat 8, 7, 6 (DEPRECATED) ○ ○
  • 27. 26Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Reverse Proxy 方式  Apache HTTPD  mod_auth_openidc (OpenID Connect 1.0)  mod_auth_mellon (SAML 2.0) ※上記はRHEL (CentOS) に付属  他にもNginx向けやGolangベースで単独動作するものも  lua-resty-openidc  oauth2_proxy
  • 28. 27Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Keycloak オフィシャルの Reverse Proxy 方式  より軽量なプロキシー実装を提供予定 (Golang)  github.com/gambol99/keycloak-proxy がオフィシャルリポジトリに 移管!!  keycloak-generic-adapter になる模様
  • 29. 28Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 4. 外部IdP (Identity Brokering / Social Login) APIアクセス ユーザー認証 利用者 公開 APIApps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps サービス利用 サービス利用 Source: https://ja.facebookbrand.com/assets https://www.google.co.jp 認証依頼 認証結果 ・・・
  • 30. 29Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 5. 外部ユーザーデータストアとの連携 (User Federation) APIアクセス ユーザー認証 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps サービス利用 サービス利用 LDAPサーバ 認証
  • 31. 30Copyright(C) Nomura Research Institute, Ltd. All rights reserved. ユースケース 企業内システムのシングルサインオン Legacy App App 従業員 既にLDAPでID統合されてい る場合は、UserFederation 機能により認証DBとして利用 Reverse Proxy 認証サーバ LDAPサーバ ユーザー認証 認証
  • 32. 31Copyright(C) Nomura Research Institute, Ltd. All rights reserved. ユースケース 企業内システムのシングルサインオン 認証サーバ Legacy App App Active Directory 従業員 Windowsドメイン認証するこ とでKeycloakに自動ログイン Reverse Proxy ドメイン認証 Kerberos認証 Source: https://docs.microsoft.com/ja-jp/windows-server/identity/ad-fs/deployment/upgrading-to-ad-fs-in-windows-server-sql
  • 33. 32Copyright(C) Nomura Research Institute, Ltd. All rights reserved.  SCIMには未対応 & ID管理機能は簡易的  エンタープライズユースでは専用のID管理ソフトウェアの利用/スクラッチ 開発が現状は必要  ワークフローによる承認・人事システムと連動したIDライフサイクル管理・棚卸し運用など、求められる 要件が複雑 アイデンティティ・プロビジョニング 認証・認可サーバ利用者 Apps ユーザー情報同期 ユーザー登録・ 変更・削除 管理者ID管理サーバ ・・・ サービス利用 ユーザー認証
  • 34. 33Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ・プロビジョニング  簡易的なID管理としての利用はOK  LDAPでID統合されており、承認等のワークフロー制御が不要なケース 認証・認可サーバ利用者 Apps ユーザー登録・ 変更・削除 管理者 ・・・ サービス利用 ユーザー認証 LDAPサーバ 認証・ユーザー登録・ 変更・削除
  • 35. 34Copyright(C) Nomura Research Institute, Ltd. All rights reserved. KeycloakのID管理  ID管理でよくあるデータモデルを提供しており、簡易的なID管理とし て利用できる  ユーザー/グループ/ロール の管理 (User FederationによりLDAPと同期もできる)  グループ/ロールは階層構造として持てる Realm A Master Realm Groups Realm Roles Roles Client Roles Users Realm B
  • 36. 35Copyright(C) Nomura Research Institute, Ltd. All rights reserved. FIDO 2.0 対応は今年末くらいに来る!? APIアクセス 利用者 公開 API Source: https://ja.facebookbrand.com/assets , https://www.google.co.jp , https://www.yahoo.co.jp/ https://line.me/en/logo , https://developer.android.com/ , https://www.apple.com/iphone/ Apps APIアクセス 許可要求 APIアクセス許可 認証・認可/ ID管理サーバ トークン検証 ・・・ 認証依頼 認証結果 Apps サービス利用 サービス利用 ユーザー認証
  • 37. 36Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 6. 豊富なカスタマイズポイント  Theme  Authentication SPI  UserStorage SPI  Required Action  Protocol Mapper  EventListener SPI  ・・・ Red Hat SSOでサポートされておりAPI互 換が保たれている その他の拡張ポイントは現状、private扱い のため、バージョンアップにより予告なく互 換性が失われる場合があるのでカスタマ イズする場合は注意
  • 38. 37Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Authentication SPI  標準でOTP、Kerberos認証、X.509証明書認証など用意  プラガブルにカスタム認証ロジックを組み込み可能  Out of the Boxで用意されている各種認証フローをまるっと置き換 えることもできる
  • 39. 38Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Required Action  ユーザーのログイン処理後に必須で動作させたい処理を Required Action と呼ぶ  組み込みのAction  OTPの設定  利用規約への同意  パスワード更新  ユーザープロフィール更新  Emailの確認  独自Actionの追加も可能
  • 40. 39Copyright(C) Nomura Research Institute, Ltd. All rights reserved. まとめ
  • 41. 40Copyright(C) Nomura Research Institute, Ltd. All rights reserved. まとめ  Keycloakは昨今のIAMユースケースの多くをカバー  OOTBですぐに試せる & すぐに使える機能を提供  OTP、Kerberos認証、X509認証などの認証ロジック  Required Actionによる認証後のアクション指定 (利用規約同意、メールアドレス確 認など)  使いやすい管理コンソール  豊富なカスタマイズポイントを提供  新技術対応もすすめている  FIDO 2.0  FAPI