© Hitachi, Ltd. 2021. All rights reserved.
最近のKeycloakのご紹介
~クライアントポリシーとFAPI~
OSSセキュリティ技術の会
株式会社 日立製作所
Software CoE
OSSソリューションセンタ
田畑 義之
1
© Hitachi, Ltd. 2021. All rights reserved.
自己紹介
田畑 義之 (たばた よしゆき)
 株式会社 日立製作所 Software CoE OSSソリューションセンタ
 ソフトウェアエンジニア
 GitHub: @y-tabata, Qiita: @yo-tabata
• 認証認可スペシャリストとしてのAPI/SSO関連案件の支援
 銀行用などの高セキュリティAPIシステムのコンサル/サポート
• 認証認可・API管理関連のOSSへのコントリビュート
 Keycloak(アイデンティティ管理のOSS)における、OAuth/OIDC/FAPI関連機能の開発
 3scale(API管理のOSS)における、セキュリティ/アクセス制御関連機能の開発
• OSSの活用事例や検証結果の情報発信
 Qiita/ThinkITでのWeb記事投稿
 Apidays/API Specifications Conference/CloudNative Daysなど、国内外のイベントでの情報発信
© Hitachi, Ltd. 2021. All rights reserved.
Contents
2
1. 最近のKeycloakリリース状況
2. 注目機能1: クライアントポリシーのご紹介
3. 注目機能2: FAPIのご紹介
4. クライアントポリシー&FAPIのデモ
© Hitachi, Ltd. 2021. All rights reserved.
Contents
3
1. 最近のKeycloakリリース状況
2. 注目機能1: クライアントポリシーのご紹介
3. 注目機能2: FAPIのご紹介
4. クライアントポリシー&FAPIのデモ
4
© Hitachi, Ltd. 2021. All rights reserved.
v15 FAPI、CIBAに完全対応
v14 FAPIに正式対応
v13 Device Flow対応
CIBA対応開始
v12 FAPIがpreview
v11 署名・クライアント認証強化
最近のKeycloakリリース状況(前回の勉強会以降): 標準対応強化
https://www.keycloak.org/docs/latest/release_notes/index.html より抜粋
乗松さん大活躍!
5
© Hitachi, Ltd. 2021. All rights reserved.
最近のKeycloakリリース状況(前回の勉強会以降): 他トピック
• オフラインセッションの扱い改善
• オフラインセッション(DBに永続化されるセッション)は、Keycloak起動時にDBから全部ロードされるた
め、大量にオフラインセッションがあるとKeycloakの起動が遅くなる問題があった。
→ v14より、インデックスのチューニングなどで読み込みが早くなった。
v14より、previewとして、オンデマンドでオフラインセッションを読み込む機能がサポートされた。
• Keycloak Gatekeeper (Louketo Proxy)のEOL
• v12で、Keycloak Gatekeeperとその後継のLouketo ProxyがEOLになると突然発表。
使っている人は注意!
• Keycloak.X
• v12から、previewとして、Quarkus版のKeycloak.Xの配布が開始。
それなりに動く模様。
• [参考] Keycloak.Xをクラスタ構成で動かしてみる
https://qiita.com/yo-tabata/items/6d29795fc3afa72d1b08
© Hitachi, Ltd. 2021. All rights reserved.
Contents
6
1. 最近のKeycloakリリース状況
2. 注目機能1: クライアントポリシーのご紹介
3. 注目機能2: FAPIのご紹介
4. クライアントポリシー&FAPIのデモ
7
© Hitachi, Ltd. 2021. All rights reserved.
クライアントポリシーとは (1/6) ~セキュリティプロファイル~
クライアントポリシーとは、Keycloakにおいて、セキュリティプロファイルをクライアントに適用する際の課題を解決するためのコンセプト。
セキュリティプロファイルとは、OAuth 2.0の具体的な使い方の規定(プロファイル)のうち、特にセキュリティを重視したもの。
たとえば、
- FAPI Security Profile …OpenID Foundationによるセキュリティプロファイル。高いセキュリティを要求される金融セクタで
の利用などを想定。
https://openid.net/specs/openid-financial-api-part-2-1_0-final.html
- Open Banking Security Profile …英国のOpen Bankingによるセキュリティプロファイル。
https://standards.openbanking.org.uk/security-profiles/
- Consumer Data Security Profile …オーストラリアのConsumer Data Rightによるセキュリティプロファイル。
https://consumerdatastandardsaustralia.github.io/standards/#security-profile
- Open Banking Brasil Financial-grade API Security Profile …ブラジルの中央銀行によるセキュリティプロファイル。
https://openbanking-brasil.github.io/specs-seguranca/open-banking-brasil-financial-api-1_ID2.html
以下なども、広義ではセキュリティプロファイルとみなすことができる。
- RFC 8252 OAuth 2.0 for Native Apps …ネイティブアプリでOAuth 2.0を安全に使用するための標準仕様。
https://datatracker.ietf.org/doc/html/rfc8252
- OAuth 2.0 for Browser-Based Apps …SPAでOAuth 2.0を安全に使用するための標準仕様。
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps-08
8
© Hitachi, Ltd. 2021. All rights reserved.
クライアントポリシーとは (2/6) ~プロファイル適用時の課題~
セキュリティプロファイルをクライアントに適用する際の課題とは、
1. 新規のセキュリティプロファイルのサポートや改変コストが高い。
- 不足機能があればKeycloak本体の改造が必要となり、タイムリーに追従できない。
- 本番環境適用の際にVUPが必要となり、ユーザビリティが損なわれる。
2. セキュリティプロファイルの多数のクライアントへの適用が煩雑。
- セキュリティプロファイルに関する設定項目が40以上あるので、それを多数のクライアントに適用するのは大変、かつerror
proneである。
3. 複数のセキュリティプロファイルを適用することができない。
- 基本的に1つのクライアントの1つの設定項目に対して、適用できる設定は1つなので、複数のセキュリティプロファイルを1つのク
ライアントに適用するユースケースを実現できない。
- 無理やり実現するには、同一クライアントを複数のレルム(名前空間)に別クライアントとして定義する必要があるが、管理が煩
雑になる。
この3つの課題を解決するコンセプトが、クライアントポリシーである。
9
© Hitachi, Ltd. 2021. All rights reserved.
クライアントポリシーとは (3/6) ~クライアントポリシーによる課題解決~
セキュリティプロファイルをクライアントに適用する際の課題とは、
1. 新規のセキュリティプロファイルのサポートや改変コストが高い。
[原因] セキュリティプロファイルを構成する設定の処理をKeycloak本体のコードで実装しているから。
→ これらの処理を動的にロード・アンロードするための機構(Framework)を設ける。
その上にComponentsという形でセキュリティプロファイルに関する処理を実装する。
2. セキュリティプロファイルの多数のクライアントへの適用が煩雑。
3. 複数のセキュリティプロファイルを適用することができない。
[原因] クライアントとその設定が一体化しているから。
→ Framework上のComponentsで、これらを分離する。
これが、クライアントポリシーの基本方針である。
10
© Hitachi, Ltd. 2021. All rights reserved.
クライアントポリシーとは (4/6) ~コンポーネント構成~
クライアントポリシーは、大きく以下の2つから成り立つ。
1.Framework …Componentsのロード・アンロード
を管理し、Componentsを実装するためのインタフェー
スであるフレームワークを提供する。
2.Components …セキュリティプロファイルに関する処
理。Componentsにて、セキュリティプロファイルをクライ
アントに適用する。
Componentsは、以下の2つから構成される。
1.Condition/Policy …セキュリティプロファイルの適
用対象クライアントを決めるコンポーネント。クライアント
のメタデータ(静的な特性)とクライアントからのリクエスト
(動的な特性)をもとに、セキュリティプロファイルを適用
するかどうかを決める。
2.Executor/Profile …セキュリティプロファイルの適
用内容を規定し、クライアントに対してセキュリティプロ
ファイルを実現するための処理を行うコンポーネント。
11
© Hitachi, Ltd. 2021. All rights reserved.
クライアントポリシーとは (5/6) ~クライアントポリシーの実行ポイント~
クライアントポリシーは、各種エンドポイントにクラ
イアントの要求が来たときに実行される。
具体的には、各Endpointにて、クライアントか
らのRequestをもとに、Conditionを評価し、
セキュリティプロファイルを適用する場合は、
Executorを実行する。
12
© Hitachi, Ltd. 2021. All rights reserved.
クライアントポリシーとは (6/6) ~クライアントポリシーのクラス構成~
Condition、Executorは、ともに
Frameworkのインタフェースを実装したプロバ
イダである。
これによるメリットは2点。
- Frameworkのコードと、Conditionや
Executorのコードが分離されるため、セキュ
リティプロファイルのVUP時や新しいセキュリ
ティプロファイルのサポート時にKeycloak本
体のコードを修正する必要がない。
- ConditionやExecutorのコードがプロバイダ
として実装されているため、Keycloak稼働
中にロード・アンロードすることができる。
© Hitachi, Ltd. 2021. All rights reserved.
Contents
13
1. 最近のKeycloakリリース状況
2. 注目機能1: クライアントポリシーのご紹介
3. 注目機能2: FAPIのご紹介
4. クライアントポリシー&FAPIのデモ
14
© Hitachi, Ltd. 2021. All rights reserved.
FAPIとは (1/3) ~FAPIの概要~
FAPI (Financial-grade API Security Profile)とは、OpenID Foundationによるセキュリティプロファイルで、高
いセキュリティを要求される金融セクタでの利用などを想定している。
OAuth 2.0
OpenID
Connect
(OIDC)
FAPI
APIセキュリティのデファクトスタンダード。
さまざまな標準仕様のベースとして参照されている。
OAuth 2.0の使い方を限定し、ハードニングしたもの。
SSOのプロトコルとしてもよく使用される。
FAPI (Financial-grade API)は、OAuth 2.0と
OIDCの使い方をさらに限定し、ハードニングしたもの。
金融分野での使用を想定している。
15
© Hitachi, Ltd. 2021. All rights reserved.
FAPIとは (2/3) ~FAPIの歴史~
2021/3 2021/3 まだ まだ
16
© Hitachi, Ltd. 2021. All rights reserved.
FAPIとは (3/3) ~FAPIの注目度~
FAPIの注目度は国内外で年々上昇中。
EUでPSD2が成立 (2015/11)
改正銀行法が施行 (2017/6)
Open Banking Implementation Entityが
FAPI WGとのコラボレーションを発表 (2017/5)
全国銀行協会がFAPIへの準拠を推奨 (2017/7)
グローバルでのオープンAPIの
急速な普及につながった
各銀行にオープンAPI導入の
努力義務が課せられた
イギリスがOpen BankingStandardを公表 (2016/2)
国内
グローバル
2015
2016
2017
そんな中、Keycloakがv15でFAPIに完全対応した!
© Hitachi, Ltd. 2021. All rights reserved.
Contents
17
1. 最近のKeycloakリリース状況
2. 注目機能1: クライアントポリシーのご紹介
3. 注目機能2: FAPIのご紹介
4. クライアントポリシー&FAPIのデモ
18
© Hitachi, Ltd. 2021. All rights reserved.
(デモ)
19
© Hitachi, Ltd. 2021. All rights reserved.
まとめ
- FAPIとクライアントポリシーについて、デモなどを通じてご紹介しました。
- クライアントポリシーは、セキュリティプロファイル適用時の課題を解決するためのコンセプトとして登
場しましたが、カスタマイズの自由度は計り知れません(もしかしたらSPI以上かも)。
興味のある方は是非触ってみてください。
20
© Hitachi, Ltd. 2021. All rights reserved.
Trademarks
• OpenID is a trademark or registered trademark of OpenID Foundation in the United States and other
countries.
• GitHub is a trademark or registered trademark of GitHub, Inc. in the United States and other
countries.
• Other brand names and product names used in this material are trademarks, registered trademarks,
or trade names of their respective holders.
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~

最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~

  • 1.
    © Hitachi, Ltd.2021. All rights reserved. 最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~ OSSセキュリティ技術の会 株式会社 日立製作所 Software CoE OSSソリューションセンタ 田畑 義之
  • 2.
    1 © Hitachi, Ltd.2021. All rights reserved. 自己紹介 田畑 義之 (たばた よしゆき)  株式会社 日立製作所 Software CoE OSSソリューションセンタ  ソフトウェアエンジニア  GitHub: @y-tabata, Qiita: @yo-tabata • 認証認可スペシャリストとしてのAPI/SSO関連案件の支援  銀行用などの高セキュリティAPIシステムのコンサル/サポート • 認証認可・API管理関連のOSSへのコントリビュート  Keycloak(アイデンティティ管理のOSS)における、OAuth/OIDC/FAPI関連機能の開発  3scale(API管理のOSS)における、セキュリティ/アクセス制御関連機能の開発 • OSSの活用事例や検証結果の情報発信  Qiita/ThinkITでのWeb記事投稿  Apidays/API Specifications Conference/CloudNative Daysなど、国内外のイベントでの情報発信
  • 3.
    © Hitachi, Ltd.2021. All rights reserved. Contents 2 1. 最近のKeycloakリリース状況 2. 注目機能1: クライアントポリシーのご紹介 3. 注目機能2: FAPIのご紹介 4. クライアントポリシー&FAPIのデモ
  • 4.
    © Hitachi, Ltd.2021. All rights reserved. Contents 3 1. 最近のKeycloakリリース状況 2. 注目機能1: クライアントポリシーのご紹介 3. 注目機能2: FAPIのご紹介 4. クライアントポリシー&FAPIのデモ
  • 5.
    4 © Hitachi, Ltd.2021. All rights reserved. v15 FAPI、CIBAに完全対応 v14 FAPIに正式対応 v13 Device Flow対応 CIBA対応開始 v12 FAPIがpreview v11 署名・クライアント認証強化 最近のKeycloakリリース状況(前回の勉強会以降): 標準対応強化 https://www.keycloak.org/docs/latest/release_notes/index.html より抜粋 乗松さん大活躍!
  • 6.
    5 © Hitachi, Ltd.2021. All rights reserved. 最近のKeycloakリリース状況(前回の勉強会以降): 他トピック • オフラインセッションの扱い改善 • オフラインセッション(DBに永続化されるセッション)は、Keycloak起動時にDBから全部ロードされるた め、大量にオフラインセッションがあるとKeycloakの起動が遅くなる問題があった。 → v14より、インデックスのチューニングなどで読み込みが早くなった。 v14より、previewとして、オンデマンドでオフラインセッションを読み込む機能がサポートされた。 • Keycloak Gatekeeper (Louketo Proxy)のEOL • v12で、Keycloak Gatekeeperとその後継のLouketo ProxyがEOLになると突然発表。 使っている人は注意! • Keycloak.X • v12から、previewとして、Quarkus版のKeycloak.Xの配布が開始。 それなりに動く模様。 • [参考] Keycloak.Xをクラスタ構成で動かしてみる https://qiita.com/yo-tabata/items/6d29795fc3afa72d1b08
  • 7.
    © Hitachi, Ltd.2021. All rights reserved. Contents 6 1. 最近のKeycloakリリース状況 2. 注目機能1: クライアントポリシーのご紹介 3. 注目機能2: FAPIのご紹介 4. クライアントポリシー&FAPIのデモ
  • 8.
    7 © Hitachi, Ltd.2021. All rights reserved. クライアントポリシーとは (1/6) ~セキュリティプロファイル~ クライアントポリシーとは、Keycloakにおいて、セキュリティプロファイルをクライアントに適用する際の課題を解決するためのコンセプト。 セキュリティプロファイルとは、OAuth 2.0の具体的な使い方の規定(プロファイル)のうち、特にセキュリティを重視したもの。 たとえば、 - FAPI Security Profile …OpenID Foundationによるセキュリティプロファイル。高いセキュリティを要求される金融セクタで の利用などを想定。 https://openid.net/specs/openid-financial-api-part-2-1_0-final.html - Open Banking Security Profile …英国のOpen Bankingによるセキュリティプロファイル。 https://standards.openbanking.org.uk/security-profiles/ - Consumer Data Security Profile …オーストラリアのConsumer Data Rightによるセキュリティプロファイル。 https://consumerdatastandardsaustralia.github.io/standards/#security-profile - Open Banking Brasil Financial-grade API Security Profile …ブラジルの中央銀行によるセキュリティプロファイル。 https://openbanking-brasil.github.io/specs-seguranca/open-banking-brasil-financial-api-1_ID2.html 以下なども、広義ではセキュリティプロファイルとみなすことができる。 - RFC 8252 OAuth 2.0 for Native Apps …ネイティブアプリでOAuth 2.0を安全に使用するための標準仕様。 https://datatracker.ietf.org/doc/html/rfc8252 - OAuth 2.0 for Browser-Based Apps …SPAでOAuth 2.0を安全に使用するための標準仕様。 https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps-08
  • 9.
    8 © Hitachi, Ltd.2021. All rights reserved. クライアントポリシーとは (2/6) ~プロファイル適用時の課題~ セキュリティプロファイルをクライアントに適用する際の課題とは、 1. 新規のセキュリティプロファイルのサポートや改変コストが高い。 - 不足機能があればKeycloak本体の改造が必要となり、タイムリーに追従できない。 - 本番環境適用の際にVUPが必要となり、ユーザビリティが損なわれる。 2. セキュリティプロファイルの多数のクライアントへの適用が煩雑。 - セキュリティプロファイルに関する設定項目が40以上あるので、それを多数のクライアントに適用するのは大変、かつerror proneである。 3. 複数のセキュリティプロファイルを適用することができない。 - 基本的に1つのクライアントの1つの設定項目に対して、適用できる設定は1つなので、複数のセキュリティプロファイルを1つのク ライアントに適用するユースケースを実現できない。 - 無理やり実現するには、同一クライアントを複数のレルム(名前空間)に別クライアントとして定義する必要があるが、管理が煩 雑になる。 この3つの課題を解決するコンセプトが、クライアントポリシーである。
  • 10.
    9 © Hitachi, Ltd.2021. All rights reserved. クライアントポリシーとは (3/6) ~クライアントポリシーによる課題解決~ セキュリティプロファイルをクライアントに適用する際の課題とは、 1. 新規のセキュリティプロファイルのサポートや改変コストが高い。 [原因] セキュリティプロファイルを構成する設定の処理をKeycloak本体のコードで実装しているから。 → これらの処理を動的にロード・アンロードするための機構(Framework)を設ける。 その上にComponentsという形でセキュリティプロファイルに関する処理を実装する。 2. セキュリティプロファイルの多数のクライアントへの適用が煩雑。 3. 複数のセキュリティプロファイルを適用することができない。 [原因] クライアントとその設定が一体化しているから。 → Framework上のComponentsで、これらを分離する。 これが、クライアントポリシーの基本方針である。
  • 11.
    10 © Hitachi, Ltd.2021. All rights reserved. クライアントポリシーとは (4/6) ~コンポーネント構成~ クライアントポリシーは、大きく以下の2つから成り立つ。 1.Framework …Componentsのロード・アンロード を管理し、Componentsを実装するためのインタフェー スであるフレームワークを提供する。 2.Components …セキュリティプロファイルに関する処 理。Componentsにて、セキュリティプロファイルをクライ アントに適用する。 Componentsは、以下の2つから構成される。 1.Condition/Policy …セキュリティプロファイルの適 用対象クライアントを決めるコンポーネント。クライアント のメタデータ(静的な特性)とクライアントからのリクエスト (動的な特性)をもとに、セキュリティプロファイルを適用 するかどうかを決める。 2.Executor/Profile …セキュリティプロファイルの適 用内容を規定し、クライアントに対してセキュリティプロ ファイルを実現するための処理を行うコンポーネント。
  • 12.
    11 © Hitachi, Ltd.2021. All rights reserved. クライアントポリシーとは (5/6) ~クライアントポリシーの実行ポイント~ クライアントポリシーは、各種エンドポイントにクラ イアントの要求が来たときに実行される。 具体的には、各Endpointにて、クライアントか らのRequestをもとに、Conditionを評価し、 セキュリティプロファイルを適用する場合は、 Executorを実行する。
  • 13.
    12 © Hitachi, Ltd.2021. All rights reserved. クライアントポリシーとは (6/6) ~クライアントポリシーのクラス構成~ Condition、Executorは、ともに Frameworkのインタフェースを実装したプロバ イダである。 これによるメリットは2点。 - Frameworkのコードと、Conditionや Executorのコードが分離されるため、セキュ リティプロファイルのVUP時や新しいセキュリ ティプロファイルのサポート時にKeycloak本 体のコードを修正する必要がない。 - ConditionやExecutorのコードがプロバイダ として実装されているため、Keycloak稼働 中にロード・アンロードすることができる。
  • 14.
    © Hitachi, Ltd.2021. All rights reserved. Contents 13 1. 最近のKeycloakリリース状況 2. 注目機能1: クライアントポリシーのご紹介 3. 注目機能2: FAPIのご紹介 4. クライアントポリシー&FAPIのデモ
  • 15.
    14 © Hitachi, Ltd.2021. All rights reserved. FAPIとは (1/3) ~FAPIの概要~ FAPI (Financial-grade API Security Profile)とは、OpenID Foundationによるセキュリティプロファイルで、高 いセキュリティを要求される金融セクタでの利用などを想定している。 OAuth 2.0 OpenID Connect (OIDC) FAPI APIセキュリティのデファクトスタンダード。 さまざまな標準仕様のベースとして参照されている。 OAuth 2.0の使い方を限定し、ハードニングしたもの。 SSOのプロトコルとしてもよく使用される。 FAPI (Financial-grade API)は、OAuth 2.0と OIDCの使い方をさらに限定し、ハードニングしたもの。 金融分野での使用を想定している。
  • 16.
    15 © Hitachi, Ltd.2021. All rights reserved. FAPIとは (2/3) ~FAPIの歴史~ 2021/3 2021/3 まだ まだ
  • 17.
    16 © Hitachi, Ltd.2021. All rights reserved. FAPIとは (3/3) ~FAPIの注目度~ FAPIの注目度は国内外で年々上昇中。 EUでPSD2が成立 (2015/11) 改正銀行法が施行 (2017/6) Open Banking Implementation Entityが FAPI WGとのコラボレーションを発表 (2017/5) 全国銀行協会がFAPIへの準拠を推奨 (2017/7) グローバルでのオープンAPIの 急速な普及につながった 各銀行にオープンAPI導入の 努力義務が課せられた イギリスがOpen BankingStandardを公表 (2016/2) 国内 グローバル 2015 2016 2017 そんな中、Keycloakがv15でFAPIに完全対応した!
  • 18.
    © Hitachi, Ltd.2021. All rights reserved. Contents 17 1. 最近のKeycloakリリース状況 2. 注目機能1: クライアントポリシーのご紹介 3. 注目機能2: FAPIのご紹介 4. クライアントポリシー&FAPIのデモ
  • 19.
    18 © Hitachi, Ltd.2021. All rights reserved. (デモ)
  • 20.
    19 © Hitachi, Ltd.2021. All rights reserved. まとめ - FAPIとクライアントポリシーについて、デモなどを通じてご紹介しました。 - クライアントポリシーは、セキュリティプロファイル適用時の課題を解決するためのコンセプトとして登 場しましたが、カスタマイズの自由度は計り知れません(もしかしたらSPI以上かも)。 興味のある方は是非触ってみてください。
  • 21.
    20 © Hitachi, Ltd.2021. All rights reserved. Trademarks • OpenID is a trademark or registered trademark of OpenID Foundation in the United States and other countries. • GitHub is a trademark or registered trademark of GitHub, Inc. in the United States and other countries. • Other brand names and product names used in this material are trademarks, registered trademarks, or trade names of their respective holders.