SlideShare a Scribd company logo
1 of 32
© Hitachi, Ltd. 2021. All rights reserved.
株式会社 日立製作所
OSSソリューションセンタ
2021/03/12
謝 洋
Apache CamelおよびKeycloak
を用いたAPI管理基盤の実現
CloudNative Days Spring 2021 ONLINE
1
© Hitachi, Ltd. 2021. All rights reserved.
・Keycloak/3scale/Apache Camelのコミュニティ版および商用製品の技術サポ
ートに従事している
・過去にはApache Spark、ElasticsearchなどのOSSのサポートにも従事していた。
自己紹介
謝 洋
株式会社 日立製作所
OSSソリューションセンタ
ソフトウェアエンジニア
GitHub:@Yang-Xie-OSS
© Hitachi, Ltd. 2021. All rights reserved.
1. はじめに
2. CamelでAPI管理基盤の実現
3. KeycloakでAPI管理基盤にAPIアクセス制御の追加
目次
2
4. API管理基盤におけるその他機能の実現
5. まとめ
3
© Hitachi, Ltd. 2021. All rights reserved.
1. はじめに
4
© Hitachi, Ltd. 2021. All rights reserved.
 異種システムを連携する製品として知られているApache Camel(以降、Camel)はAPIゲートウェイを実現
できる。
 認可サーバであるKeycloakをCamelに付与することで、APIのアクセス制御を実現できる。
 Camelの多様な機能を用いて、 多くのその他の機能(例: 統計情報提供、API仕様公開)を実現できる。
はじめに
API管理基盤
認可サーバ
Keycloak
APIゲートウェイ
Camel
アプリケーション
JDBC
REST(HTTP)
FTP
REST(HTTP)
REST(HTTP)
APIサーバ
REST(HTTP)
アクセストークン
マッシュアップ
プロトコル変換
リバースプロキシ
流量制御
トークン
イントロスペクション
APIサーバ
APIサーバ
APIサーバ
APIサーバ
その他の機能
統計情報提供 API仕様公開
OAuth MTLS
アクセストークン
トークン発行/管理
5
© Hitachi, Ltd. 2021. All rights reserved.
2. CamelでAPI管理基盤の実現
6
© Hitachi, Ltd. 2021. All rights reserved.
 Apache Camel(以降、Camel)は、異種システムを連携することができるOSSである。
 プロトコル変換、データフォーマット変換とマッシュアップが得意である。
 RESTをはじめJDBC(=Java Database Connectivity)、MQ(=Message Queue)など多数のプロトコルを
サポートする。
Camelとは
…
…
FTP JDBC
Camel
MQ HTTP Kafka
REST
※ Camelでは、200以上の接続コンポーネントが提供されている。
7
© Hitachi, Ltd. 2021. All rights reserved.
 開発言語として、xmlベースのSpring DSL、Blueprint DSLとJavaベースのJava DSLを提供している。
 xmlベースの開発言語では、GUIの開発画面がサポートされており、ローコード開発ができる。
 Javaに慣れた開発者でもコーディング経験がない開発者でもストレスなく着手できる。
Camelの特徴
xmlで開発の画面(GUI) Javaで開発の画面
※Source画面でxmlソースを確認できる。
8
© Hitachi, Ltd. 2021. All rights reserved.
 Camelでは、リバースプロキシ、流量制御、プロトコル変換とマッシュアップなどAPIゲートウェイに必要な機
能を持っているAPI管理基盤を実現できる。
CamelでAPI管理基盤の実現
APIサーバ
APIサーバ
プロトコル変換
API管理基盤
APIゲートウェイ
Camel
アプリケーション
JDBC
REST(HTTP)
FTP
REST(HTTP)
流量制御
REST(HTTP)
APIサーバ
APIサーバ
マッシュアップ
APIサーバ
REST(HTTP)
リバースプロキシ
9
© Hitachi, Ltd. 2021. All rights reserved.
 Camelでは、リバースプロキシを実現できる。
リバースプロキシ
API管理基盤
APIゲートウェイ
Camel
アプリケーション
APIサーバ
REST(HTTP) REST(HTTP)
10
© Hitachi, Ltd. 2021. All rights reserved.
 Camelでは、以下の2方式の流量制御を実現できる。
1. 同時に受け付けられるリクエスト数を制限する方式。
2. 単位時間に受け付けられるリクエスト総数を制限する方式。
流量制御
API管理基盤
APIゲートウェイ
Camel
アプリケーション
APIサーバ
①APIをコールする
③超えていなければ
APIをコールする
②指定した流量を超えていないか
を確認する
11
© Hitachi, Ltd. 2021. All rights reserved.
 Camelでは、RESTからJDBC、FTPなどへのプロトコル変換を実現できる。
プロトコル変換
API管理基盤
APIゲートウェイ
Camel
アプリケーション
JDBC
FTP
APIサーバ
APIサーバ
REST(HTTP)
12
© Hitachi, Ltd. 2021. All rights reserved.
 Camelでは、マッシュアップを実現できる。
マッシュアップ
※ マッシュアップとは、複数のAPIをまとめて1つのAPIとして公開する技術である。
API管理基盤
APIゲートウェイ
Camel
アプリケーション
APIサーバ
APIサーバ
①APIをコールする
②複数のAPIをコールし、
その結果をマージしてレスポンスとして返す
13
© Hitachi, Ltd. 2021. All rights reserved.
 Camelでは、APIアクセス制御ができない。APIがそのままネット上に公開されると、機密性の高いデータ、
個人情報が流出し、利用される可能性がある。
APIアクセス制御の問題
アプリケーション
アプリケーション
API管理基盤
APIゲートウェイ
Camel
APIサーバ
APIサーバ
APIサーバ
APIアクセス制御をしない場合、誰でもAPIにアクセス
でき、機密性の高いデータ、個人情報が流出する可
能性がある
APIユーザ
その他の人
14
© Hitachi, Ltd. 2021. All rights reserved.
3. KeycloakでAPI管理基盤にAPIアクセス制御の追加
15
© Hitachi, Ltd. 2021. All rights reserved.
 Red Hat社を中心にOSSにて開発されているID管理・アクセス管理のソフトウェアである。
 OAuth 2.0の認可サーバとして使用することができる。
Keycloakとは
16
© Hitachi, Ltd. 2021. All rights reserved.
 Keycloakを認可サーバとしてCamelに組み込むことにより、API管理基盤にAPIアクセス制御を追加できる。
KeycloakでAPIアクセス制御の追加
API管理基盤
APIゲートウェイ
Camel
認可サーバ
Keycloak
APIサーバ
アプリケーション
アクセストークン
アクセストークン
トークン発行/トークン管理
OAuth MTLS
トークン
イントロスペクション
17
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、OAuth 2.0 に対応したトークンの発行やトークンの
管理を実現できる。
OAuth 2.0に対応したトークン発行/トークン管理
API管理基盤
認可サーバ
Keycloak
APIゲートウェイ
Camel APIサーバ
①トークンリクエストを送る
②アクセストークンを発行する
アプリケーション
③アクセストークンを付与
してAPIをコールする ④アクセストークンが有効で
あればAPIをコールする
アクセストークン
アクセストークン
18
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、トークンイントロスペクションを実現できる。
トークンイントロスペクション
API管理基盤
認可サーバ
Keycloak
APIゲートウェイ
Camel
APIサーバ
①Keycloakから発行したアク
セストークンを付与してAPIを
コールする
アクセストークン
②アクセストークンの有効性を確認する
(=トークンイントロスペクション)
③アクセストークンが有効であれば
APIをコールする
アプリケーション
19
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、OAuth MTLS(RFC 8705で定義されている)など
の高度なアクセス制御を実現できる。
OAuth MTLS
API管理基盤
認可サーバ
Keycloak
APIゲートウェイ
Camel
アプリケーション
APIサーバ
③アクセストークンを付与して
APIをコールする
(クライアント証明書を提示) ⑤一致すれば
APIをコールする
④アクセストークン内のクライアント
証明書のハッシュ値を確認する
①トークンをリクエストする(クライアント
証明書を提示)
②クライアント証明書のハッシュ
が記載されるアクセストークン
を発行する
アクセストークン
アクセストークン
※ RFC 8705: https://tools.ietf.org/html/rfc8705
20
© Hitachi, Ltd. 2021. All rights reserved.
4. API管理基盤におけるその他機能の実現
21
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、APIゲートウェイと認可サーバの基本機能だけでなく、
その他の機能も実現できる。
API管理基盤におけるその他機能の実現
API管理基盤
認可サーバ
Keycloak
APIゲートウェイ
Camel
APIサーバ
アプリケーション
その他の機能 統計情報提供 API仕様公開
22
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、以下の2方式の統計情報の提供を実現できる。
 ヒープメモリ使用量といったJVM(=Java Virtual Machine)関連の方式
 各APIのレスポンスコードごとのレスポンス数といったAPI関連の方式
統計情報提供
API関連の統計情報提供
JVM関連の統計情報
23
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、JVM関連の統計情報提供を実現できる。
 JVM関連の統計情報がJMX(Java Management eXtensions)プロトコルで公開される。JMXをサポート
する可視化ツールを用いて統計情報の可視化を実現できる。
JVM関連の統計情報提供
※ JMXとは、Javaアプリケーション
から統計情報を取得する技術の
一種。
※ 例として、Javaに組み込まれた
JMX可視化ツールであるJConsole
を使用。
24
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、API関連の統計情報提供を実現できる。
 API関連の統計情報がJMXプロトコルで公開される。 Prometheusなどの監視ツールを経由して統計情
報を収集し、Grafanaなどのダッシュボードツールで可視化することを実現できる。
 Grafanaの機能を利用して、エラーレスポンスの回数が制限値を超えるとメールで管理者に通知するアラー
トを実現できる。
API関連方式の統計情報提供(1/2)
API関連の統計情報の可視化
API関連の統計情報のアラート
25
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、API関連の統計情報提供を実現できる。
 API関連の統計情報がJMXプロトコルで公開される。 Prometheusなどの監視ツールを経由して統計情
報を収集し、Grafanaなどのダッシュボードツールで可視化することを実現できる。
 Grafanaの機能を利用して、エラーレスポンスの回数が制限値を超えるとメールで管理者に通知するアラー
トを実現できる。
API関連方式の統計情報提供(2/2)
アラートが発動時に関係者に送信するメール
26
© Hitachi, Ltd. 2021. All rights reserved.
 CamelとKeycloakを組み合わせたAPI管理基盤では、OpenAPI Specification(旧Swagger)に適合す
るAPI仕様の公開を実現できる。
API仕様公開
※ API仕様とは、APIの使い方(メソッド、パス、各種パラメータ、レスポンスなど)を示すJSONやYAMLのことである。
※ OpenAPI Specification: https://www.openapis.org/
27
© Hitachi, Ltd. 2021. All rights reserved.
5. まとめ
28
© Hitachi, Ltd. 2021. All rights reserved.
 Camelは、APIゲートウェイを実現できる。
 KeycloakをCamelに付与することで、APIのアクセス制御を実現できる。
 CamelとKeycloakを組み合わせたAPI管理基盤では、 APIゲートウェイと認可サーバ以外にも、多くのその
他の機能を実現できる。
 Camelはカスタマイズ性が高いので、Javaで本資料に言及した機能以外の機能も実現できる。
まとめ
29
© Hitachi, Ltd. 2021. All rights reserved.
 Red Hat is a registered trademark of Red Hat, Inc. in the United States and other countries.
 Apache and Camel are registered trademarks or trademarks of The Apache Software
Foundation in the United States and other countries.
 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.
Trademarks
© Hitachi, Ltd. 2021. All rights reserved. 30
END
Apache CamelおよびKeycloak
を用いたAPI管理基盤の実現
2021/03/12
株式会社 日立製作所
OSSソリューションセンタ
謝 洋
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現

More Related Content

What's hot

MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 

What's hot (20)

人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
 
今Serverlessが面白いわけ
今Serverlessが面白いわけ今Serverlessが面白いわけ
今Serverlessが面白いわけ
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
Amazon SNS+SQSによる Fanoutシナリオの話
Amazon SNS+SQSによる Fanoutシナリオの話Amazon SNS+SQSによる Fanoutシナリオの話
Amazon SNS+SQSによる Fanoutシナリオの話
 

Similar to CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現

MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
Ryusuke Kajiyama
 

Similar to CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現 (20)

Oracle Cloud Infrastructure:2021年6月度サービス・アップデート
Oracle Cloud Infrastructure:2021年6月度サービス・アップデートOracle Cloud Infrastructure:2021年6月度サービス・アップデート
Oracle Cloud Infrastructure:2021年6月度サービス・アップデート
 
Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3
 
【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例
【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例
【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
 
Workshop1-01
Workshop1-01Workshop1-01
Workshop1-01
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
2018/7/27 SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
2018/7/27  SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)2018/7/27  SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
2018/7/27 SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
 
Qlik Senseを使ったSAP ECCとSAP S4 HANAのデータ分析
Qlik Senseを使ったSAP ECCとSAP S4 HANAのデータ分析Qlik Senseを使ったSAP ECCとSAP S4 HANAのデータ分析
Qlik Senseを使ったSAP ECCとSAP S4 HANAのデータ分析
 
Workshop1-03
Workshop1-03Workshop1-03
Workshop1-03
 
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
 
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力![DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
 
Oracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデート
 
Azuredevopsakskeda
AzuredevopsakskedaAzuredevopsakskeda
Azuredevopsakskeda
 
API Gateway / AWS CLI
API Gateway / AWS CLIAPI Gateway / AWS CLI
API Gateway / AWS CLI
 
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
 
Workshop1-02
Workshop1-02Workshop1-02
Workshop1-02
 
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料2/2)
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料2/2)2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料2/2)
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料2/2)
 

More from 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のCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み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...KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
 
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
 

Recently uploaded

Recently uploaded (12)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現

  • 1. © Hitachi, Ltd. 2021. All rights reserved. 株式会社 日立製作所 OSSソリューションセンタ 2021/03/12 謝 洋 Apache CamelおよびKeycloak を用いたAPI管理基盤の実現 CloudNative Days Spring 2021 ONLINE
  • 2. 1 © Hitachi, Ltd. 2021. All rights reserved. ・Keycloak/3scale/Apache Camelのコミュニティ版および商用製品の技術サポ ートに従事している ・過去にはApache Spark、ElasticsearchなどのOSSのサポートにも従事していた。 自己紹介 謝 洋 株式会社 日立製作所 OSSソリューションセンタ ソフトウェアエンジニア GitHub:@Yang-Xie-OSS
  • 3. © Hitachi, Ltd. 2021. All rights reserved. 1. はじめに 2. CamelでAPI管理基盤の実現 3. KeycloakでAPI管理基盤にAPIアクセス制御の追加 目次 2 4. API管理基盤におけるその他機能の実現 5. まとめ
  • 4. 3 © Hitachi, Ltd. 2021. All rights reserved. 1. はじめに
  • 5. 4 © Hitachi, Ltd. 2021. All rights reserved.  異種システムを連携する製品として知られているApache Camel(以降、Camel)はAPIゲートウェイを実現 できる。  認可サーバであるKeycloakをCamelに付与することで、APIのアクセス制御を実現できる。  Camelの多様な機能を用いて、 多くのその他の機能(例: 統計情報提供、API仕様公開)を実現できる。 はじめに API管理基盤 認可サーバ Keycloak APIゲートウェイ Camel アプリケーション JDBC REST(HTTP) FTP REST(HTTP) REST(HTTP) APIサーバ REST(HTTP) アクセストークン マッシュアップ プロトコル変換 リバースプロキシ 流量制御 トークン イントロスペクション APIサーバ APIサーバ APIサーバ APIサーバ その他の機能 統計情報提供 API仕様公開 OAuth MTLS アクセストークン トークン発行/管理
  • 6. 5 © Hitachi, Ltd. 2021. All rights reserved. 2. CamelでAPI管理基盤の実現
  • 7. 6 © Hitachi, Ltd. 2021. All rights reserved.  Apache Camel(以降、Camel)は、異種システムを連携することができるOSSである。  プロトコル変換、データフォーマット変換とマッシュアップが得意である。  RESTをはじめJDBC(=Java Database Connectivity)、MQ(=Message Queue)など多数のプロトコルを サポートする。 Camelとは … … FTP JDBC Camel MQ HTTP Kafka REST ※ Camelでは、200以上の接続コンポーネントが提供されている。
  • 8. 7 © Hitachi, Ltd. 2021. All rights reserved.  開発言語として、xmlベースのSpring DSL、Blueprint DSLとJavaベースのJava DSLを提供している。  xmlベースの開発言語では、GUIの開発画面がサポートされており、ローコード開発ができる。  Javaに慣れた開発者でもコーディング経験がない開発者でもストレスなく着手できる。 Camelの特徴 xmlで開発の画面(GUI) Javaで開発の画面 ※Source画面でxmlソースを確認できる。
  • 9. 8 © Hitachi, Ltd. 2021. All rights reserved.  Camelでは、リバースプロキシ、流量制御、プロトコル変換とマッシュアップなどAPIゲートウェイに必要な機 能を持っているAPI管理基盤を実現できる。 CamelでAPI管理基盤の実現 APIサーバ APIサーバ プロトコル変換 API管理基盤 APIゲートウェイ Camel アプリケーション JDBC REST(HTTP) FTP REST(HTTP) 流量制御 REST(HTTP) APIサーバ APIサーバ マッシュアップ APIサーバ REST(HTTP) リバースプロキシ
  • 10. 9 © Hitachi, Ltd. 2021. All rights reserved.  Camelでは、リバースプロキシを実現できる。 リバースプロキシ API管理基盤 APIゲートウェイ Camel アプリケーション APIサーバ REST(HTTP) REST(HTTP)
  • 11. 10 © Hitachi, Ltd. 2021. All rights reserved.  Camelでは、以下の2方式の流量制御を実現できる。 1. 同時に受け付けられるリクエスト数を制限する方式。 2. 単位時間に受け付けられるリクエスト総数を制限する方式。 流量制御 API管理基盤 APIゲートウェイ Camel アプリケーション APIサーバ ①APIをコールする ③超えていなければ APIをコールする ②指定した流量を超えていないか を確認する
  • 12. 11 © Hitachi, Ltd. 2021. All rights reserved.  Camelでは、RESTからJDBC、FTPなどへのプロトコル変換を実現できる。 プロトコル変換 API管理基盤 APIゲートウェイ Camel アプリケーション JDBC FTP APIサーバ APIサーバ REST(HTTP)
  • 13. 12 © Hitachi, Ltd. 2021. All rights reserved.  Camelでは、マッシュアップを実現できる。 マッシュアップ ※ マッシュアップとは、複数のAPIをまとめて1つのAPIとして公開する技術である。 API管理基盤 APIゲートウェイ Camel アプリケーション APIサーバ APIサーバ ①APIをコールする ②複数のAPIをコールし、 その結果をマージしてレスポンスとして返す
  • 14. 13 © Hitachi, Ltd. 2021. All rights reserved.  Camelでは、APIアクセス制御ができない。APIがそのままネット上に公開されると、機密性の高いデータ、 個人情報が流出し、利用される可能性がある。 APIアクセス制御の問題 アプリケーション アプリケーション API管理基盤 APIゲートウェイ Camel APIサーバ APIサーバ APIサーバ APIアクセス制御をしない場合、誰でもAPIにアクセス でき、機密性の高いデータ、個人情報が流出する可 能性がある APIユーザ その他の人
  • 15. 14 © Hitachi, Ltd. 2021. All rights reserved. 3. KeycloakでAPI管理基盤にAPIアクセス制御の追加
  • 16. 15 © Hitachi, Ltd. 2021. All rights reserved.  Red Hat社を中心にOSSにて開発されているID管理・アクセス管理のソフトウェアである。  OAuth 2.0の認可サーバとして使用することができる。 Keycloakとは
  • 17. 16 © Hitachi, Ltd. 2021. All rights reserved.  Keycloakを認可サーバとしてCamelに組み込むことにより、API管理基盤にAPIアクセス制御を追加できる。 KeycloakでAPIアクセス制御の追加 API管理基盤 APIゲートウェイ Camel 認可サーバ Keycloak APIサーバ アプリケーション アクセストークン アクセストークン トークン発行/トークン管理 OAuth MTLS トークン イントロスペクション
  • 18. 17 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、OAuth 2.0 に対応したトークンの発行やトークンの 管理を実現できる。 OAuth 2.0に対応したトークン発行/トークン管理 API管理基盤 認可サーバ Keycloak APIゲートウェイ Camel APIサーバ ①トークンリクエストを送る ②アクセストークンを発行する アプリケーション ③アクセストークンを付与 してAPIをコールする ④アクセストークンが有効で あればAPIをコールする アクセストークン アクセストークン
  • 19. 18 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、トークンイントロスペクションを実現できる。 トークンイントロスペクション API管理基盤 認可サーバ Keycloak APIゲートウェイ Camel APIサーバ ①Keycloakから発行したアク セストークンを付与してAPIを コールする アクセストークン ②アクセストークンの有効性を確認する (=トークンイントロスペクション) ③アクセストークンが有効であれば APIをコールする アプリケーション
  • 20. 19 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、OAuth MTLS(RFC 8705で定義されている)など の高度なアクセス制御を実現できる。 OAuth MTLS API管理基盤 認可サーバ Keycloak APIゲートウェイ Camel アプリケーション APIサーバ ③アクセストークンを付与して APIをコールする (クライアント証明書を提示) ⑤一致すれば APIをコールする ④アクセストークン内のクライアント 証明書のハッシュ値を確認する ①トークンをリクエストする(クライアント 証明書を提示) ②クライアント証明書のハッシュ が記載されるアクセストークン を発行する アクセストークン アクセストークン ※ RFC 8705: https://tools.ietf.org/html/rfc8705
  • 21. 20 © Hitachi, Ltd. 2021. All rights reserved. 4. API管理基盤におけるその他機能の実現
  • 22. 21 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、APIゲートウェイと認可サーバの基本機能だけでなく、 その他の機能も実現できる。 API管理基盤におけるその他機能の実現 API管理基盤 認可サーバ Keycloak APIゲートウェイ Camel APIサーバ アプリケーション その他の機能 統計情報提供 API仕様公開
  • 23. 22 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、以下の2方式の統計情報の提供を実現できる。  ヒープメモリ使用量といったJVM(=Java Virtual Machine)関連の方式  各APIのレスポンスコードごとのレスポンス数といったAPI関連の方式 統計情報提供 API関連の統計情報提供 JVM関連の統計情報
  • 24. 23 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、JVM関連の統計情報提供を実現できる。  JVM関連の統計情報がJMX(Java Management eXtensions)プロトコルで公開される。JMXをサポート する可視化ツールを用いて統計情報の可視化を実現できる。 JVM関連の統計情報提供 ※ JMXとは、Javaアプリケーション から統計情報を取得する技術の 一種。 ※ 例として、Javaに組み込まれた JMX可視化ツールであるJConsole を使用。
  • 25. 24 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、API関連の統計情報提供を実現できる。  API関連の統計情報がJMXプロトコルで公開される。 Prometheusなどの監視ツールを経由して統計情 報を収集し、Grafanaなどのダッシュボードツールで可視化することを実現できる。  Grafanaの機能を利用して、エラーレスポンスの回数が制限値を超えるとメールで管理者に通知するアラー トを実現できる。 API関連方式の統計情報提供(1/2) API関連の統計情報の可視化 API関連の統計情報のアラート
  • 26. 25 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、API関連の統計情報提供を実現できる。  API関連の統計情報がJMXプロトコルで公開される。 Prometheusなどの監視ツールを経由して統計情 報を収集し、Grafanaなどのダッシュボードツールで可視化することを実現できる。  Grafanaの機能を利用して、エラーレスポンスの回数が制限値を超えるとメールで管理者に通知するアラー トを実現できる。 API関連方式の統計情報提供(2/2) アラートが発動時に関係者に送信するメール
  • 27. 26 © Hitachi, Ltd. 2021. All rights reserved.  CamelとKeycloakを組み合わせたAPI管理基盤では、OpenAPI Specification(旧Swagger)に適合す るAPI仕様の公開を実現できる。 API仕様公開 ※ API仕様とは、APIの使い方(メソッド、パス、各種パラメータ、レスポンスなど)を示すJSONやYAMLのことである。 ※ OpenAPI Specification: https://www.openapis.org/
  • 28. 27 © Hitachi, Ltd. 2021. All rights reserved. 5. まとめ
  • 29. 28 © Hitachi, Ltd. 2021. All rights reserved.  Camelは、APIゲートウェイを実現できる。  KeycloakをCamelに付与することで、APIのアクセス制御を実現できる。  CamelとKeycloakを組み合わせたAPI管理基盤では、 APIゲートウェイと認可サーバ以外にも、多くのその 他の機能を実現できる。  Camelはカスタマイズ性が高いので、Javaで本資料に言及した機能以外の機能も実現できる。 まとめ
  • 30. 29 © Hitachi, Ltd. 2021. All rights reserved.  Red Hat is a registered trademark of Red Hat, Inc. in the United States and other countries.  Apache and Camel are registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.  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. Trademarks
  • 31. © Hitachi, Ltd. 2021. All rights reserved. 30 END Apache CamelおよびKeycloak を用いたAPI管理基盤の実現 2021/03/12 株式会社 日立製作所 OSSソリューションセンタ 謝 洋