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

Keycloak入門

4,476 views

Published on

OSSセキュリティ技術の会 第三回勉強会
Keycloak入門
https://secureoss-sig.connpass.com/event/90917/

Published in: Software
  • Is there an english version of this slide deck?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Keycloak入門

  1. 1. OSSセキュリティ技術の会 第三回勉強会 ~ “Keycloak” で、 “認証王“ に!!! おれはなるっ !!!! ~ Keycloak入門 2018年07月13日 株式会社野村総合研究所 生産革新本部 生産革新ソリューション開発一部 和田 広之 本資料に掲載されている会社名、製品名、サービス名は各社の登録 商標、又は商標です。
  2. 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. 3. 2Copyright(C) Nomura Research Institute, Ltd. All rights reserved. 今日の内容  Keycloakとは  昨今のIAMの役割ついておさらい  Keycloakのカバー範囲・ユースケース・特徴的な機能について
  4. 4. Source: https://www.keycloak.org/
  5. 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. 6. 5Copyright(C) Nomura Research Institute, Ltd. All rights reserved.  ユーザー認証  システムごとに個別に認証してサービスを利用 アイデンティティ&アクセス管理 (IAM) の役割 App 利用者 ユーザー認証 App ユーザー認証
  7. 7. 6Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  エンタープライズでは2000年代くらいには多くの企業で導入済み  同一ドメインのためCookieベースのシンプルなSSO方式 Apps 認証依頼 認証結果 ・・・ 認証サーバ 利用者 ユーザー認証 サービス利用
  8. 8. 7Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  ASP / SaaS などのクラウドサービスも含めたSSO  Cookieに頼らないフェデレーション方式が必要 ASP / SaaS サービス Apps 認証依頼 認証結果 ・・・ 認証サーバ 利用者 ユーザー認証 認証依頼 認証結果 サービス利用
  9. 9. 8Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ連携 / Web SSO  IDaaSなどの外部IdPを組み合わせた多段認証連携によるシステム全体のSSO IDaaSなど Apps 認証依頼 認証結果 ・・・ 認証サーバ 利用者 ユーザー認証 認証依頼 認証結果 社外利用者 ユーザー認証 サービス利用 サービス利用
  10. 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. 11. 10Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ&アクセス管理 (IAM) の役割  アイデンティティ・プロビジョニング  個社要件が多くスクラッチで作られる事も  CSVで渡す方式も根強い Apps ・・・ ID管理サーバ 利用者 ユーザー情報同期 ユーザー登録・ 変更・削除 管理者
  12. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 28. 27Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Keycloak オフィシャルの Reverse Proxy 方式  より軽量なプロキシー実装を提供予定 (Golang)  github.com/gambol99/keycloak-proxy がオフィシャルリポジトリに 移管!!  keycloak-generic-adapter になる模様
  29. 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. 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. 31. 30Copyright(C) Nomura Research Institute, Ltd. All rights reserved. ユースケース 企業内システムのシングルサインオン Legacy App App 従業員 既にLDAPでID統合されてい る場合は、UserFederation 機能により認証DBとして利用 Reverse Proxy 認証サーバ LDAPサーバ ユーザー認証 認証
  32. 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. 33. 32Copyright(C) Nomura Research Institute, Ltd. All rights reserved.  SCIMには未対応 & ID管理機能は簡易的  エンタープライズユースでは専用のID管理ソフトウェアの利用/スクラッチ 開発が現状は必要  ワークフローによる承認・人事システムと連動したIDライフサイクル管理・棚卸し運用など、求められる 要件が複雑 アイデンティティ・プロビジョニング 認証・認可サーバ利用者 Apps ユーザー情報同期 ユーザー登録・ 変更・削除 管理者ID管理サーバ ・・・ サービス利用 ユーザー認証
  34. 34. 33Copyright(C) Nomura Research Institute, Ltd. All rights reserved. アイデンティティ・プロビジョニング  簡易的なID管理としての利用はOK  LDAPでID統合されており、承認等のワークフロー制御が不要なケース 認証・認可サーバ利用者 Apps ユーザー登録・ 変更・削除 管理者 ・・・ サービス利用 ユーザー認証 LDAPサーバ 認証・ユーザー登録・ 変更・削除
  35. 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. 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. 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. 38. 37Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Authentication SPI  標準でOTP、Kerberos認証、X.509証明書認証など用意  プラガブルにカスタム認証ロジックを組み込み可能  Out of the Boxで用意されている各種認証フローをまるっと置き換 えることもできる
  39. 39. 38Copyright(C) Nomura Research Institute, Ltd. All rights reserved. Required Action  ユーザーのログイン処理後に必須で動作させたい処理を Required Action と呼ぶ  組み込みのAction  OTPの設定  利用規約への同意  パスワード更新  ユーザープロフィール更新  Emailの確認  独自Actionの追加も可能
  40. 40. 39Copyright(C) Nomura Research Institute, Ltd. All rights reserved. まとめ
  41. 41. 40Copyright(C) Nomura Research Institute, Ltd. All rights reserved. まとめ  Keycloakは昨今のIAMユースケースの多くをカバー  OOTBですぐに試せる & すぐに使える機能を提供  OTP、Kerberos認証、X509認証などの認証ロジック  Required Actionによる認証後のアクション指定 (利用規約同意、メールアドレス確 認など)  使いやすい管理コンソール  豊富なカスタマイズポイントを提供  新技術対応もすすめている  FIDO 2.0  FAPI

×