Submit Search
Upload
NGINXでの認可について考える
•
Download as PPTX, PDF
•
0 likes
•
256 views
Hitachi, Ltd. OSS Solution Center.
Follow
NGINXユーザーカンファレンス 2023 春
Read less
Read more
Software
Report
Share
Report
Share
1 of 27
Download now
Recommended
Kubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティ
NGINX, Inc.
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
WordPressのCDN化
WordPressのCDN化
J-Stream Inc.
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
Recommended
Kubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティ
NGINX, Inc.
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
WordPressのCDN化
WordPressのCDN化
J-Stream Inc.
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
Amazon Web Services Japan
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
Keycloak入門
Keycloak入門
Hiroyuki Wada
IDガバナンス&管理の基礎
IDガバナンス&管理の基礎
Hitachi, Ltd. OSS Solution Center.
Nginx lua
Nginx lua
Moriyoshi Koizumi
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
Amazon Web Services Japan
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
貴志 上坂
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
Keycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
Takayuki Ishikawa
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
NTT DATA Technology & Innovation
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
toshi_pp
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
Azure Arc 概要
Azure Arc 概要
Kazuki Takai
Managed Instance チートシート
Managed Instance チートシート
Masayuki Ozawa
More Related Content
What's hot
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
Amazon Web Services Japan
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
Keycloak入門
Keycloak入門
Hiroyuki Wada
IDガバナンス&管理の基礎
IDガバナンス&管理の基礎
Hitachi, Ltd. OSS Solution Center.
Nginx lua
Nginx lua
Moriyoshi Koizumi
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
Amazon Web Services Japan
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
貴志 上坂
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
Keycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
Takayuki Ishikawa
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
NTT DATA Technology & Innovation
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
toshi_pp
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
What's hot
(20)
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Keycloak入門
Keycloak入門
IDガバナンス&管理の基礎
IDガバナンス&管理の基礎
Nginx lua
Nginx lua
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Keycloakの最近のトピック
Keycloakの最近のトピック
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Similar to NGINXでの認可について考える
Azure Arc 概要
Azure Arc 概要
Kazuki Takai
Managed Instance チートシート
Managed Instance チートシート
Masayuki Ozawa
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
Hitachi, Ltd. OSS Solution Center.
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要
Hyperleger Tokyo Meetup
認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤
Masahiro Kiura
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
Naohiro Fujie
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
Hitachi, Ltd. OSS Solution Center.
[Modern Cloud Day Tokyo 2019] Oracle Cloud Infrastructure 基本サービス入門(2) - ユーザー管...
[Modern Cloud Day Tokyo 2019] Oracle Cloud Infrastructure 基本サービス入門(2) - ユーザー管...
オラクルエンジニア通信
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理
fisuda
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Hitachi, Ltd. OSS Solution Center.
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
オラクルエンジニア通信
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩
Yusuke Kodama
OCIコンテナサービス関連の技術詳細
OCIコンテナサービス関連の技術詳細
オラクルエンジニア通信
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
Kazuki Takai
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
Masahiko Ebisuda
Oracle Cloud PaaS & IaaS:2019年3月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2019年3月度サービス情報アップデート
オラクルエンジニア通信
Kong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラ
briscola-tokyo
Similar to NGINXでの認可について考える
(20)
Azure Arc 概要
Azure Arc 概要
Managed Instance チートシート
Managed Instance チートシート
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要
認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
[Modern Cloud Day Tokyo 2019] Oracle Cloud Infrastructure 基本サービス入門(2) - ユーザー管...
[Modern Cloud Day Tokyo 2019] Oracle Cloud Infrastructure 基本サービス入門(2) - ユーザー管...
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
Kongの概要と導入事例
Kongの概要と導入事例
Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩
OCIコンテナサービス関連の技術詳細
OCIコンテナサービス関連の技術詳細
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
Oracle Cloud PaaS & IaaS:2019年3月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2019年3月度サービス情報アップデート
Kong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラ
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 ...
Hitachi, Ltd. OSS Solution Center.
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
Hitachi, Ltd. OSS Solution Center.
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
Hitachi, Ltd. OSS Solution Center.
Challenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with Keycloak
Hitachi, Ltd. OSS Solution Center.
KubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdf
Hitachi, Ltd. OSS Solution Center.
Security Considerations for API Gateway Aggregation
Security Considerations for API Gateway Aggregation
Hitachi, Ltd. OSS Solution Center.
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
Hitachi, Ltd. OSS Solution Center.
Keycloakのステップアップ認証について
Keycloakのステップアップ認証について
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?
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...
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...
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...
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...
Hitachi, Ltd. OSS Solution Center.
Apache con@home 2021_sha
Apache con@home 2021_sha
Hitachi, Ltd. OSS Solution Center.
Node-RED Installer, Standalone Installer using Electron
Node-RED Installer, Standalone Installer using Electron
Hitachi, Ltd. OSS Solution Center.
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hitachi, Ltd. OSS Solution Center.
Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介
Hitachi, Ltd. OSS Solution Center.
Node-REDからREST APIに接続
Node-REDからREST APIに接続
Hitachi, Ltd. OSS Solution Center.
Node-RED v1.3新機能紹介
Node-RED v1.3新機能紹介
Hitachi, Ltd. OSS Solution Center.
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
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 ...
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
Challenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with Keycloak
KubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdf
Security Considerations for API Gateway Aggregation
Security Considerations for API Gateway Aggregation
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
Keycloakのステップアップ認証について
Keycloakのステップアップ認証について
Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?
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...
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...
Apache con@home 2021_sha
Apache con@home 2021_sha
Node-RED Installer, Standalone Installer using Electron
Node-RED Installer, Standalone Installer using Electron
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介
Node-REDからREST APIに接続
Node-REDからREST APIに接続
Node-RED v1.3新機能紹介
Node-RED v1.3新機能紹介
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
NGINXでの認可について考える
1.
© Hitachi, Ltd.
2023. All rights reserved. NGINXでの認可について考える NGINXユーザーカンファレンス 2023 春 株式会社日立製作所 OSSソリューションセンタ 岡井倫人
2.
1 © Hitachi, Ltd.
2023. All rights reserved. 自己紹介 • 認証認可のテクニカルサポートに従事 NGINXをAPIゲートウェイやリバースプロキシとして使用する案件にも従事 • IAMのOSSであるKeycloakのコントリビュータ デバイスフロー[RFC 8626]をコミット ユースケースに応じたトークン周りの仕様改善 性能向上 • Financial-grade API(FAPI)に精通 FAPIに準拠したクライアントを開発・Certification取得 https://github.com/Hitachi/hitachi-fapi-java FAPIの記事を執筆 https://thinkit.co.jp/series/10313 岡井 倫人 ソフトウェアエンジニア 日立製作所 GitHub: @Michito-Okai
3.
© Hitachi, Ltd.
2023. All rights reserved. Contents 2 1. NGINXにおける認可とは 2. NGINXにおける認可の実現パターン 3. 認可をNGINXで実現する際のTips
4.
© Hitachi, Ltd.
2023. All rights reserved. Contents 3 1. NGINXにおける認可とは 2. NGINXにおける認可の実現パターン 3. 認可をNGINXで実現する際のTips
5.
4 © Hitachi, Ltd.
2023. All rights reserved. そもそも認可とは • しばしば認可は認証とセットで説明される。 • 認証: アクセスしてきたユーザ(クライアント)が誰(何)かを確認すること。 • 認可: アクセス先のリソースにアクセス可能かを確認すること。 ※英語では、認証 = Authentication (authN)、認可 = Authorization (authZ) 認証・認可がOKだったら リソースを返す。 アクセス リソースサーバ クライアント
6.
5 © Hitachi, Ltd.
2023. All rights reserved. 本セッションでターゲットとする認可 • ここではNGINXをリソースサーバとして使用したときのAPI認可について考える。 • リソースサーバは、API提供機能に加えて、以下のような基本機能を備えることが一般的。 • OAuth 2.0に準拠したAPI認可 • XSSやSQLインジェクションなどのOWASP Top 101対策 • 流量制御 • API仕様の公開 APIコールの認証・認可がOK だったらリソースを返す。 APIコール リソースサーバ(NGINX) クライアント 1 https://owasp.org/www-project-top-ten/
7.
6 © Hitachi, Ltd.
2023. All rights reserved. NGINX App Protect 豊富なモジュール群 njs/Luaによるカスタマイズ NGINXで実現するAPI認可 • リソースサーバをNGINXで構築するメリットは、以下の通り。 • 安定したパフォーマンス(low tail latency) • NGINX App Protectの付加により、容易にWAF機能を導入可(OWASP Top 10対策) ※API仕様に従ったAPI固有のアクセス制御もできる • 基本機能を実現するための豊富なモジュール群 • njs1やLua2でカスタマイズすることにより、案件個別機能にも柔軟に対応できる APIコール リソースサーバ(NGINX) クライアント 1 NGINXの機能を拡張できるJavaScript言語のサブセット 2 スクリプト言語
8.
© Hitachi, Ltd.
2023. All rights reserved. Contents 7 1. NGINXにおける認可とは 2. NGINXにおける認可の実現パターン 3. 認可をNGINXで実現する際のTips
9.
8 © Hitachi, Ltd.
2023. All rights reserved. API認可の流れ • API認可では、クライアントは、OAuth 2.0の認可フレームワークを使用して発行したアクセストークンを 付与してAPIをコールする。 • リソースサーバは、アクセストークンを用いて、まずAPIコールを認証する。 • APIコールの認可には、アクセストークンに付随する情報(JWTのクレームなど)を用いるのが一般的。 4. APIコール w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ エンドユーザ (サービス利用者) 使用 クライアント リソースサーバ(NGINX) 1. エンドユーザの 認証・認可の委譲 アクセストークンを用いて、 APIコールの認証・認可を 行う。 APIを利用する アプリケーション。 エンドユーザの 認証・認可を行う。
10.
9 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン①: オールインワンパターン • 一番シンプルな認可の実現パターン。 • NGINXでACL (Access Control List)のようなマッピング情報を持ち、そのマッピング情報を用いて APIコールの全ての認可判断をNGINXが行う。 4. APIコール(GET /profile) w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ エンドユーザ (サービス利用者) 使用 クライアント リソースサーバ(NGINX) 1. エンドユーザの 認証・認可の委譲 自身が保持するマッピング情報 をもとに、アクセストークンに read_profileスコープがあるか を確認する。 エンドユーザのプロフィール を取得したい! <<マッピング情報>> • GET /profileには、 read_profileスコープ が必要
11.
10 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン①: オールインワンパターン • このパターンの課題はスケーラビリティ(柔軟性)。 • リソースサーバ(API)が増えるごとに、管理対象のマッピング情報が増える。 • スコープやロール、属性といった認可判断のベースとなる情報が増えるたびに、各マッピング情報で その情報を再定義する必要がある。 4. APIコール w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ エンドユーザ (サービス利用者) 使用 クライアント リソースサーバA(NGINX) 1. エンドユーザの 認証・認可の委譲 リソースサーバB(NGINX) 新しいスコープやロールに対する 認可ロジックを個別に追加。 新しいスコープやロールに対する 認可ロジックを個別に追加。
12.
11 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン②: 認可判断を委譲するパターン • オールインワンパターンの課題であったスケーラビリティを認可判断を委譲することで解決するパターン。 • ABACを用いて、認可判断委譲を行う。 クライアント リソース PEP PDP PIP PAP ポリシー 1. APIコール 2. 認可判断の委譲 3. ポリシーの評価 3’. 認可に必要な情報の取得 ポリシーの管理 4. リソースへアクセス Policy Administration Point ポリシーを管理する(UI) Policy Information Point 認可判断に必要な情報を提供する Policy Decision Point ポリシーを評価し、認可の決定を下す ABAC (属性ベースのアクセス制御)とは、一般的にポリシーを使って認可ロジックを定義する。 ABACには中央集権型と分散型の2つの実現パターンが存在する。 また、以下のような役割を持つコンポーネントが存在する。 Policy Enforcement Point リソースへの接続を有効にしたり、監視したり、終了する
13.
12 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン②-1: 認可判断を委譲する(中央集権型)パターン • PDP(認可判断の役割)を他のサービスに委譲するパターン。 • リソースサーバは認可判断に使われる情報を意識することなく、PDPからの情報だけをもとに認可を 実行できる。 • Keycloakの認可サービスなど、PDP機能を提供する認可サーバを利用すると、認可用の情報を一元管理 できる。 4. APIコール w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ(Keycloak) エンドユーザ (サービス利用者) 使用 クライアント リソースサーバA(NGINX) 1. エンドユーザの 認証・認可の委譲 リソースサーバB(NGINX) 5. 認可判断の委譲 PDP PIP PAP PEP PEP
14.
13 © Hitachi, Ltd.
2023. All rights reserved. 主な特徴 OAuth 2.0/OpenID Connect、SAMLやFAPI に対応 LDAPサーバやActive Directoryと連携可能 GitHubなどのユーザアカウントを利用した ソーシャルログインに対応 PDPとして機能する認可サービスを提供 Keycloakとは • Keycloakは、IAM (Identity and Access Management: IDアクセス管理)のOSS。 • OAuth 2.0の認可サーバの機能やシングルサインオンの機能を提供。 主要標準に準拠した認証・認可 Keycloak LDAP Active Directory RDB OpenID Connect SAML GitHub Twitter Facebook ID管理 ソーシャルログイン (Identity Brokering)
15.
14 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン②-1: 認可判断を委譲する(中央集権型)パターン • このパターンの課題は可用性。 • 良くも悪くもPDPにアクセスが集中し、PDPがSPOFとなる。 • PDPへの通信遅延およびPDP自体の性能の影響を受けて、パフォーマンスが劣化する可能性もある。 4. APIコール w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ(Keycloak) エンドユーザ (サービス利用者) 使用 クライアント リソースサーバA(NGINX) 1. エンドユーザの 認証・認可の委譲 リソースサーバB(NGINX) 5. 認可判断の委譲 PDP PIP PAP PEP PEP 負荷が集中!
16.
15 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン②-2: 認可判断を委譲する(分散型)パターン • PDPを各リソースサーバ(エッジ)に分散させるパターン。 • OPA (Open Policy Agent)など、PDP機能を提供するサービスをサイドカーとしてデプロイし、リソースサー バは自身のサイドカーのPDPに認可判断を委譲する。 • 認可サーバがPIPとなるため、負荷の一点集中を避けることができる。 4. APIコール w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ(Keycloak) エンドユーザ (サービス利用者) 使用 クライアント リソースサーバA(NGINX) 1. エンドユーザの 認証・認可の委譲 リソースサーバB(NGINX) 5. 認可判断の委譲 PIP PEP PEP OPA 5. 認可判断の委譲 OPA 6. 認可に必要な 情報の取得 PDP PDP
17.
16 © Hitachi, Ltd.
2023. All rights reserved. 認可の実現パターン②-2: 認可判断を委譲する(分散型)パターン • このパターンの課題はアーキテクチャの複雑性。 • サイドカーパターンの実装が必要になる。 • PDP専用のコンポーネントが増えた分、管理コストが増える。 • 可用性が向上した分、発生する障害によっては一貫性が損なわれる可能性がある。 4. APIコール w/ アクセストークン 2. エンドユーザの認証・同意取得 3. トークンの発行 認可サーバ(Keycloak) エンドユーザ (サービス利用者) 使用 クライアント リソースサーバA(NGINX) 1. エンドユーザの 認証・認可の委譲 リソースサーバB(NGINX) 5. 認可判断の委譲 PIP PEP PEP OPA 5. 認可判断の委譲 OPA 6. 認可に必要な 情報の取得 PDP PDP 障害によって取得情報に 差分が生じると認可判断の 一貫性が損なわれる。
18.
17 © Hitachi, Ltd.
2023. All rights reserved. NGINXにおける認可の実現パターン まとめ • 3つの認可の実現パターンの特徴をまとめると以下の通り。 実現パターン スケーラビリ ティ(柔軟性) パフォーマンス 可用性 一貫性 シンプルな アーキテクチャ 適用ユースケース オールインワ ンパターン × リソースサーバ 個別に認可用の 情報を定義する 必要がある。 〇 認可処理はロー カルで完結する。 〇 障害箇所以外の リソースサーバ の業務は継続可 能。 〇 認可用の情報は ローカルに持つ ため差分は生じ ない。 〇 認可サーバとリ ソースサーバの みで実現可。 API数が少なく、認可ロ ジックがシンプルな ユースケース。 中央集権型パ ターン 〇 認可用の情報は PIPが一元管理 する。 × PDPへの通信遅 延およびPDP自 体の性能の影響 を受ける。 × PDPが止まると すべてのリソー スサーバが止ま る。 〇 認可用の情報は PDPが持つため 差分は生じない。 〇 認可サーバとリ ソースサーバの みで実現可。 スコープやロール、属 性といった複数の情報 を組み合わせた認可ロ ジックが必要な、中規 模なユースケース。 分散型パター ン 〇 認可用の情報は PIPが一元管理 する。 〇 認可処理はロー カル(サイドカー 含む)で完結する。 〇 障害箇所以外の リソースサーバ の業務は継続可 能。 × 認可用の情報は 各PDPが分散し て持つため差分 が生じる恐れが ある。 × サイドカーパ ターンの実装が 必要。 中央集権型だとPDPと の通信遅延がパフォー マンスのボトルネック となるような大規模な ユースケース。
19.
18 © Hitachi, Ltd.
2023. All rights reserved. アドバンストな認可の実現パターンの紹介 • サービス利用者(リソースオーナ)ではない第三者がクライアントを利用するユースケースの実現は、 CIBA (OIDC Client-Initiated Backchannel Authentication Flow) で実現可能! • さらに、 UMA 2.0 (User-Managed Access 2.0 Grant)によって、 リソースオーナが事前に条件を設定し、認可を管理できる。 CIBA UMA 2.0 認証デバイス経由 でサービス利用者 の認可を取得する。 4. APIコール w/ アクセストークン 2. サービス利用者の認証・同意取得 3. トークンの 発行 認可サーバ (Keycloak) サービス利用者 (リソースオーナ) 使用 クライアント リソースサーバ (NGINX) 1.サービス利用者の 認証・認可の委譲 コールセンタ の担当者 電話 認証デバイス サービス利用者のリソース にアクセスする。 1. APIコール 認可を与える条件を事前に設定 5. トークンの 発行 認可サーバ (Keycloak) リソースへのアクセスを 許可するユーザ (リソースオーナ) 使用 クライアント リソースサーバ (NGINX) 4. トークン要求 w/ パーミッションチケット 6. APIコール w/ RPT 3. パーミッションチケット 2. パーミッション チケットの 要求と発行 事前に設定され た条件に従って 認可判断する。 クライアント 使用者 リソースオーナのリソース にアクセスする。
20.
© Hitachi, Ltd.
2023. All rights reserved. Contents 19 1. NGINXにおける認可とは 2. NGINXにおける認可の実現パターン 3. 認可をNGINXで実現する際のTips
21.
20 © Hitachi, Ltd.
2023. All rights reserved. NGINXでの認可の実現方法 load_module modules/ngx_http_js_module.so; http { js_import oidc from conf.d/openid_connect.js; location /api/ { auth_request /auth; … } location = /auth { internal; js_content oidc.accessControl; } } • 一般的に、ngx_http_auth_request_module を使う。 • 以下のように設定することで、njsで実装した認可ロジックの結果に応じたアクセス制御を実現できる。 • njsから2xxレスポンスを返す → /api/へのアクセスを許可 • njsから401や403のレスポンスを返す → /api/へのアクセスを拒否
22.
21 © Hitachi, Ltd.
2023. All rights reserved. auth_requestを使う際の注意事項 • ハマりポイント: POSTリクエストのときに失敗(タイムアウト)することがある。 • 原因: auth_requestの中で、リクエストボディをプロキシしていた。 • 対策: 以下のように、リクエストボディをプロキシしない設定を入れましょう! http { location /api/ { auth_request /auth; … } location = /auth { proxy_pass … proxy_pass_request_body off; proxy_set_header Content-Length “”; } } 特に、proxy_passで認可判断 を外部に委譲しているときは注意 が必要。
23.
22 © Hitachi, Ltd.
2023. All rights reserved. njsを使う際の注意事項 • ハマりポイント: コード実行時にエラーが発生する。 • 原因: 意図しない型変換が行われていた。 • 対策: 型定義チェックを有効化しましょう! • 使用する型定義ファイル • TypeScript definitions for njs https://github.com/nginx/njs/tree/master/ts • 使用方法 1. njs-typesをインストール 2. jsファイルの先頭に参照パスを追加 3. 関数定義にJSDocを追加 // @ts-check /// <reference path="./node_modules/njs-types/ngx_http_js_module.d.ts" /> npm install --save-dev njs-types
24.
23 © Hitachi, Ltd.
2023. All rights reserved. 型定義チェックの有効化 • ハマりポイント: コード実行時にエラーが発生する。 • 原因: 意図しない型変換が行われていた。 • 対策: 型定義チェックを有効化しましょう! → コード実装時にエラーを抽出できる! returnNumber関数の 引数の型チェック。 returnNumber関数の 返り値の型チェック。 実装時にエラーを抽出!
25.
24 © Hitachi, Ltd.
2023. All rights reserved. まとめ NGINXにおける認可の実現パターンを紹介しました。 オールインワンパターン → シンプルなユースケースに適用。 中央集権型パターン → 中規模なユースケースに適用。 分散型パターン → 大規模なユースケースに適用。 NGINXとKeycloakを統合して実現するアドバンストな認可を紹介しました。 CIBA、UMA 2.0 認可をNGINXで実現する際のTipsを紹介しました。 auth_requestを使う際の注意事項 型定義チェックの有効化
26.
25 © Hitachi, Ltd.
2023. 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. • Red Hat is a registered trademark of Red Hat, Inc. in the United States and other countries. • NGINX and NGINX Plus are registered trademarks of F5, 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.
Download now