SlideShare a Scribd company logo
1 of 21
Download to read offline
© Hitachi, Ltd. 2023. All rights reserved.
Challenge to Implementing “Scalable”
Authorization with Keycloak
日立製作所 中村 雄一
yuichi.nakamura.fe@hitachi.com
KubeCon NA 2023 Recap
1
© Hitachi, Ltd. 2023. All rights reserved.
自己紹介
• 2000年代: SELinuxに関するOSS活動
- 組込み向けSELinuxの開発、パフォーマンスチューニングなどをOSSコミュニティ貢献
- SELinux設定ツールのOSS公開 (SELinux Policy Editor)
- イベント登壇 (Ottawa Linux Symposium, CE Linux Forum, USENIX LISA 等)
- 学術論文執筆、SELinux書籍執筆
• 最近の活動
• The Linux Foundationのボード対応、CNCF、OpenSSFの対応
• 「OSSセキュリティ技術の会」での技術者・学術関係者の交流
• Keycloak関連ビジネスやコントリビューション活動の立上げ
• API管理・認証関連サービス立上げ
• Keycloakメンテナを育成
• Keycloak書籍執筆: 認証と認可Keycloak入門(リックテレコム)
中村 雄一 @ 日立製作所 個人のtwitter: @yhimainu
• CNCF Japan Chapter “Cloud Native Community Japan”のオーガナイザ
2
© Hitachi, Ltd. 2023. All rights reserved.
ご紹介するセッションについて
• 同僚の田畑さん(CNCF Ambassador)が担当したKeycloakに関連するセッション。
• CNCF Incubating Project 「Keycloak」のクラウドネイティブにおける主な役割:
OIDC(OpenID Connect)のOP(OpenID Provider)。
kubernetesのドキュメントではOPのことを「Identity Provider(IdP)」と呼んでいる。
・ ユースケース例1: Kubernetes APIの認可の場合
IdPはユーザーを認証し、IDトークンを発行。KubectlコマンドにIDトークンを設定。
Kubectlコマンドが、IDトークンと共にKubernetes APIを呼び出し。
Kubernetes APIはIDトークンを見てアクセス制御(認可)。
https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens
・ ユースケース例2: k8s上のマイクロサービスやAPIの認可の場合 → 本講演の対象
IdPはユーザーを認証し、アクセストークンをクライアントに発行。
クライアントは、アクセストークンをセットし、マイクロサービスやAPIを呼び出し。
マイクロサービスやAPIは、アクセストークンを見て(*)アクセス制御(認可)。
(*)アクセストークンに属性情報が入ってない場合は、IdPなどに属性情報を問い合わせる
3
© Hitachi, Ltd. 2023. All rights reserved.
当日の様子
Keynoteのエリアを分割した部屋で発表。
かなり広い部屋(1000人以上入りそうだった)
KeynoteでFall 2023のアンバサダーが発表。
田畑さんが新たに就任。
応募の際は、これまでの認証・API関連の海外カンファレンスの
登壇実績、執筆実績、Keycloakコントリビューション実績と
認証認可分野でのやる気をアピール。
田畑さん
アンバサダー
ジャケットをゲット
*アンバサダーの皆様の写真はこちらで公開されています
https://www.cncf.io/people/ambassadors/
4
© Hitachi, Ltd. 2023. All rights reserved.
セッションrecap
以下、田畑さんのスライドからの抜粋と補足です
5
© Hitachi, Ltd. 2023. All rights reserved.
認証(Authentication)と認可(Authorization)の違いについて
(認証された)エンティティが、リソースにアクセス、その際に認可が行われる。
6
© Hitachi, Ltd. 2023. All rights reserved.
OWASPでも認可のセキュリティリスクが話題になっている
7
© Hitachi, Ltd. 2023. All rights reserved.
シンプルな認可の実装
アプリのロジックに認可の埋め込み
サービスが増えてくると似たようなロジックを色んな場所に埋め込む必要
→スケールしない
8
© Hitachi, Ltd. 2023. All rights reserved.
ロールでの管理
ロール階層を定義して、ユーザをロールに所属させることで、
ロジックはシンプルになる
9
© Hitachi, Ltd. 2023. All rights reserved.
サービスが拡大すると…
ロール爆発が起こる
10
© Hitachi, Ltd. 2023. All rights reserved.
アプリでの認可+ロール管理の限界
複雑なロールのデータを各サービスで管理し、スケールしなくなる
11
© Hitachi, Ltd. 2023. All rights reserved.
スケールする認可のアーキテクチャ
認可に必要なロジックと情報をアプリのロジックから切り離す
12
© Hitachi, Ltd. 2023. All rights reserved.
Authorization Serviceの導入
認可のためのロジックと情報を司る「Authorization Service」を導入。
一から作るのは大変だが、KeycloakのAuthorization Serviceを使うことができる
13
© Hitachi, Ltd. 2023. All rights reserved.
KeycloakのAuthorization Service
Keycloakは、IdPとしてふるまうだけではなく、
「Authorization Service」の機能も保有
PDP: Policy Decision Point
ポリシーを元にアクセス可否を判断
PEP: Policy Enforcement Point
認可を差し込む場所
Keycloak(IdP)によって認証済
14
© Hitachi, Ltd. 2023. All rights reserved.
スケーラブルな認可が可能に
認可のためのデータ(ポリシ)はKeylcloakで集中管理
アプリからは認可のためのAPIを一回呼ぶだけでアクセスOK/NGが返ってくる
(以前は複数回のAPI呼び出しが必要だったが田畑さんがPR出して改善)
15
© Hitachi, Ltd. 2023. All rights reserved.
中央集権型の認可の課題
アプリへのアクセスのたびに毎度Keycloakへのアクセスが必要→パフォーマンスの懸念
Keycloakが落ちるとアプリが止まる→可用性の懸念
同じクラスタ上にKeycloakをデプロイし、複数podでクラスタ組むことでも対処できるが、他の解決策もある
16
© Hitachi, Ltd. 2023. All rights reserved.
OPAとの組み合わせでの解決案
案1: OPAを認可判断のキャッシュにする
案2: OPAで認可判断を行い、Keycloakでは認可のためのポリシーを管理する
17
© Hitachi, Ltd. 2023. All rights reserved.
Keycloakだけで頑張る案
KeycloakのDBとしてCockroachDBを使い、クラスタを組む
18
© Hitachi, Ltd. 2023. All rights reserved.
おわりに
・ Keycloakは活発なOSSプロジェクトであり、使いにくい場合はPR出して修正にトライできるのが醍醐味です!
今回も認可のために複数のAPI呼び出しが必要な問題を直すパッチを提出・マージされてます。
不具合・課題があったら、コントリビューションのチャンス!
コントリビューションすると、技術面でも気付きが得られ、成長のチャンス!
・ 最後に宣伝
クラウドネイティブ分野の日本におけるアップストリーム活動盛り上げのために、CNCF Japan Chapterとして、
「Cloud Native Community Japan」をコミュニティの方々と立上げました。
12/1にキックオフミートアップを開催済み、
今後も他のコミュニティとも協力しながら継続的にミートアップ開催予定です。
最新の情報は、以下のホームページから。「join」よりメンバになって頂けるとミートアップ開催通知が届きます。
https://community.cncf.io/cloud-native-community-japan/
19
© Hitachi, Ltd. 2023. All rights reserved.
他社商品名、商標等の引用に関する表示
• OpenID is a trademark or registered trademark of OpenID Foundation 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.
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization with Keycloak

More Related Content

Similar to KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization with Keycloak

OpenStack Summit Vancouver Summary
OpenStack Summit Vancouver SummaryOpenStack Summit Vancouver Summary
OpenStack Summit Vancouver SummaryIkuo Kumagai
 
Open Source と Azure CLI と、便利な仲間たち
Open Source と Azure CLI と、便利な仲間たちOpen Source と Azure CLI と、便利な仲間たち
Open Source と Azure CLI と、便利な仲間たちKazumi IWANAGA
 
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)Hiroshi Ohnuki
 
今さら聞けない人のための K8s超入門 Big Sur対応版 20210305
今さら聞けない人のための K8s超入門 Big Sur対応版 20210305今さら聞けない人のための K8s超入門 Big Sur対応版 20210305
今さら聞けない人のための K8s超入門 Big Sur対応版 20210305VirtualTech Japan Inc./Begi.net Inc.
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
 
OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月
OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月
OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月VirtualTech Japan Inc.
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性Hirofumi Ichihara
 
OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCDaisuke Nishino
 
今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版VirtualTech Japan Inc./Begi.net Inc.
 
Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)shintaro mizuno
 
OpenStack, Hadoop -- OSSクラウドの最新動向
OpenStack, Hadoop -- OSSクラウドの最新動向OpenStack, Hadoop -- OSSクラウドの最新動向
OpenStack, Hadoop -- OSSクラウドの最新動向 Masanori Itoh
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編VirtualTech Japan Inc.
 
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例JUNICHI YOSHISE
 
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...VirtualTech Japan Inc.
 

Similar to KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization with Keycloak (20)

今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門
 
OpenStack Summit Vancouver Summary
OpenStack Summit Vancouver SummaryOpenStack Summit Vancouver Summary
OpenStack Summit Vancouver Summary
 
Open Source と Azure CLI と、便利な仲間たち
Open Source と Azure CLI と、便利な仲間たちOpen Source と Azure CLI と、便利な仲間たち
Open Source と Azure CLI と、便利な仲間たち
 
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
 
今さら聞けない人のための K8s超入門 Big Sur対応版 20210305
今さら聞けない人のための K8s超入門 Big Sur対応版 20210305今さら聞けない人のための K8s超入門 Big Sur対応版 20210305
今さら聞けない人のための K8s超入門 Big Sur対応版 20210305
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
 
OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月
OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月
OpenStack Summit Sydney Feedback (VTJ玉置) - OpenStack最新情報セミナー 2017年11月
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性
 
2018 07-19dist
2018 07-19dist2018 07-19dist
2018 07-19dist
 
OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSC
 
今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門
 
今さら聞けない人のためのKubernetes超入門
今さら聞けない人のためのKubernetes超入門今さら聞けない人のためのKubernetes超入門
今さら聞けない人のためのKubernetes超入門
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 
今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版
 
Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)
 
Lf intro 2020-r5
Lf intro 2020-r5Lf intro 2020-r5
Lf intro 2020-r5
 
OpenStack, Hadoop -- OSSクラウドの最新動向
OpenStack, Hadoop -- OSSクラウドの最新動向OpenStack, Hadoop -- OSSクラウドの最新動向
OpenStack, Hadoop -- OSSクラウドの最新動向
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
 
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
 
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
 

More from Hitachi, Ltd. OSS Solution Center.

Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...Hitachi, Ltd. OSS Solution Center.
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
 
Challenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with KeycloakChallenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with KeycloakHitachi, Ltd. OSS Solution Center.
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するHitachi, Ltd. OSS Solution Center.
 
Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Hitachi, Ltd. OSS Solution Center.
 
What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...Hitachi, Ltd. OSS Solution Center.
 
Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...Hitachi, Ltd. OSS Solution Center.
 
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...Hitachi, Ltd. OSS Solution Center.
 
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...Hitachi, Ltd. OSS Solution Center.
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~Hitachi, Ltd. OSS Solution Center.
 

More from Hitachi, Ltd. OSS Solution Center. (20)

Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
Challenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with KeycloakChallenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with Keycloak
 
KubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdfKubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdf
 
NGINXでの認可について考える
NGINXでの認可について考えるNGINXでの認可について考える
NGINXでの認可について考える
 
Security Considerations for API Gateway Aggregation
Security Considerations for API Gateway AggregationSecurity Considerations for API Gateway Aggregation
Security Considerations for API Gateway Aggregation
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
 
IDガバナンス&管理の基礎
IDガバナンス&管理の基礎IDガバナンス&管理の基礎
IDガバナンス&管理の基礎
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...
 
Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...
 
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
 
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
 
Apache con@home 2021_sha
Apache con@home 2021_shaApache con@home 2021_sha
Apache con@home 2021_sha
 
Node-RED Installer, Standalone Installer using Electron
Node-RED Installer, Standalone Installer using ElectronNode-RED Installer, Standalone Installer using Electron
Node-RED Installer, Standalone Installer using Electron
 
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
 

KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization with Keycloak

  • 1. © Hitachi, Ltd. 2023. All rights reserved. Challenge to Implementing “Scalable” Authorization with Keycloak 日立製作所 中村 雄一 yuichi.nakamura.fe@hitachi.com KubeCon NA 2023 Recap
  • 2. 1 © Hitachi, Ltd. 2023. All rights reserved. 自己紹介 • 2000年代: SELinuxに関するOSS活動 - 組込み向けSELinuxの開発、パフォーマンスチューニングなどをOSSコミュニティ貢献 - SELinux設定ツールのOSS公開 (SELinux Policy Editor) - イベント登壇 (Ottawa Linux Symposium, CE Linux Forum, USENIX LISA 等) - 学術論文執筆、SELinux書籍執筆 • 最近の活動 • The Linux Foundationのボード対応、CNCF、OpenSSFの対応 • 「OSSセキュリティ技術の会」での技術者・学術関係者の交流 • Keycloak関連ビジネスやコントリビューション活動の立上げ • API管理・認証関連サービス立上げ • Keycloakメンテナを育成 • Keycloak書籍執筆: 認証と認可Keycloak入門(リックテレコム) 中村 雄一 @ 日立製作所 個人のtwitter: @yhimainu • CNCF Japan Chapter “Cloud Native Community Japan”のオーガナイザ
  • 3. 2 © Hitachi, Ltd. 2023. All rights reserved. ご紹介するセッションについて • 同僚の田畑さん(CNCF Ambassador)が担当したKeycloakに関連するセッション。 • CNCF Incubating Project 「Keycloak」のクラウドネイティブにおける主な役割: OIDC(OpenID Connect)のOP(OpenID Provider)。 kubernetesのドキュメントではOPのことを「Identity Provider(IdP)」と呼んでいる。 ・ ユースケース例1: Kubernetes APIの認可の場合 IdPはユーザーを認証し、IDトークンを発行。KubectlコマンドにIDトークンを設定。 Kubectlコマンドが、IDトークンと共にKubernetes APIを呼び出し。 Kubernetes APIはIDトークンを見てアクセス制御(認可)。 https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens ・ ユースケース例2: k8s上のマイクロサービスやAPIの認可の場合 → 本講演の対象 IdPはユーザーを認証し、アクセストークンをクライアントに発行。 クライアントは、アクセストークンをセットし、マイクロサービスやAPIを呼び出し。 マイクロサービスやAPIは、アクセストークンを見て(*)アクセス制御(認可)。 (*)アクセストークンに属性情報が入ってない場合は、IdPなどに属性情報を問い合わせる
  • 4. 3 © Hitachi, Ltd. 2023. All rights reserved. 当日の様子 Keynoteのエリアを分割した部屋で発表。 かなり広い部屋(1000人以上入りそうだった) KeynoteでFall 2023のアンバサダーが発表。 田畑さんが新たに就任。 応募の際は、これまでの認証・API関連の海外カンファレンスの 登壇実績、執筆実績、Keycloakコントリビューション実績と 認証認可分野でのやる気をアピール。 田畑さん アンバサダー ジャケットをゲット *アンバサダーの皆様の写真はこちらで公開されています https://www.cncf.io/people/ambassadors/
  • 5. 4 © Hitachi, Ltd. 2023. All rights reserved. セッションrecap 以下、田畑さんのスライドからの抜粋と補足です
  • 6. 5 © Hitachi, Ltd. 2023. All rights reserved. 認証(Authentication)と認可(Authorization)の違いについて (認証された)エンティティが、リソースにアクセス、その際に認可が行われる。
  • 7. 6 © Hitachi, Ltd. 2023. All rights reserved. OWASPでも認可のセキュリティリスクが話題になっている
  • 8. 7 © Hitachi, Ltd. 2023. All rights reserved. シンプルな認可の実装 アプリのロジックに認可の埋め込み サービスが増えてくると似たようなロジックを色んな場所に埋め込む必要 →スケールしない
  • 9. 8 © Hitachi, Ltd. 2023. All rights reserved. ロールでの管理 ロール階層を定義して、ユーザをロールに所属させることで、 ロジックはシンプルになる
  • 10. 9 © Hitachi, Ltd. 2023. All rights reserved. サービスが拡大すると… ロール爆発が起こる
  • 11. 10 © Hitachi, Ltd. 2023. All rights reserved. アプリでの認可+ロール管理の限界 複雑なロールのデータを各サービスで管理し、スケールしなくなる
  • 12. 11 © Hitachi, Ltd. 2023. All rights reserved. スケールする認可のアーキテクチャ 認可に必要なロジックと情報をアプリのロジックから切り離す
  • 13. 12 © Hitachi, Ltd. 2023. All rights reserved. Authorization Serviceの導入 認可のためのロジックと情報を司る「Authorization Service」を導入。 一から作るのは大変だが、KeycloakのAuthorization Serviceを使うことができる
  • 14. 13 © Hitachi, Ltd. 2023. All rights reserved. KeycloakのAuthorization Service Keycloakは、IdPとしてふるまうだけではなく、 「Authorization Service」の機能も保有 PDP: Policy Decision Point ポリシーを元にアクセス可否を判断 PEP: Policy Enforcement Point 認可を差し込む場所 Keycloak(IdP)によって認証済
  • 15. 14 © Hitachi, Ltd. 2023. All rights reserved. スケーラブルな認可が可能に 認可のためのデータ(ポリシ)はKeylcloakで集中管理 アプリからは認可のためのAPIを一回呼ぶだけでアクセスOK/NGが返ってくる (以前は複数回のAPI呼び出しが必要だったが田畑さんがPR出して改善)
  • 16. 15 © Hitachi, Ltd. 2023. All rights reserved. 中央集権型の認可の課題 アプリへのアクセスのたびに毎度Keycloakへのアクセスが必要→パフォーマンスの懸念 Keycloakが落ちるとアプリが止まる→可用性の懸念 同じクラスタ上にKeycloakをデプロイし、複数podでクラスタ組むことでも対処できるが、他の解決策もある
  • 17. 16 © Hitachi, Ltd. 2023. All rights reserved. OPAとの組み合わせでの解決案 案1: OPAを認可判断のキャッシュにする 案2: OPAで認可判断を行い、Keycloakでは認可のためのポリシーを管理する
  • 18. 17 © Hitachi, Ltd. 2023. All rights reserved. Keycloakだけで頑張る案 KeycloakのDBとしてCockroachDBを使い、クラスタを組む
  • 19. 18 © Hitachi, Ltd. 2023. All rights reserved. おわりに ・ Keycloakは活発なOSSプロジェクトであり、使いにくい場合はPR出して修正にトライできるのが醍醐味です! 今回も認可のために複数のAPI呼び出しが必要な問題を直すパッチを提出・マージされてます。 不具合・課題があったら、コントリビューションのチャンス! コントリビューションすると、技術面でも気付きが得られ、成長のチャンス! ・ 最後に宣伝 クラウドネイティブ分野の日本におけるアップストリーム活動盛り上げのために、CNCF Japan Chapterとして、 「Cloud Native Community Japan」をコミュニティの方々と立上げました。 12/1にキックオフミートアップを開催済み、 今後も他のコミュニティとも協力しながら継続的にミートアップ開催予定です。 最新の情報は、以下のホームページから。「join」よりメンバになって頂けるとミートアップ開催通知が届きます。 https://community.cncf.io/cloud-native-community-japan/
  • 20. 19 © Hitachi, Ltd. 2023. All rights reserved. 他社商品名、商標等の引用に関する表示 • OpenID is a trademark or registered trademark of OpenID Foundation 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.