More Related Content
Similar to CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現 (20)
More from Hitachi, Ltd. OSS Solution Center. (20)
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. まとめ
- 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
アクセストークン
トークン発行/管理
- 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ユーザ
その他の人
- 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
- 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/
- 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ソリューションセンタ
謝 洋