初版: 2018/10/31
著者: 田畑義之, 株式会社日立製作所 (GitHubアカウント: @y-tabata)
本記事は、あくまで執筆者の見解であり、所属企業及びRed Hatの公式なドキュメントではありません。
はじめに
2018年10月5日、Red Hat 3scale API Management (以下、3scale)のバージョン2.3がリリースされました。2018年5月31日の2.2のリリースから約4か月ぶりの新バージョンです。
本稿では、3scale 2.3の新機能を紹介します。
3scaleとは
3scaleとは、Red Hat主体で開発が進められているAPI管理製品です。
詳細は、前回執筆した記事「OSSベースのAPI管理製品 3scale 2.2を試してみた」の「3scaleとは」をご参照ください。
元々は商用製品だったため、順次OSS化が進められてきましたが、2018年9月19日、ついにSystemコンポーネントがOSS化され、3scaleは完全にOSSとなりました。
2.3の新機能
2.3の新機能を紹介します。
2.3では、前回紹介したポリシー機能が大幅に強化されました。
筆者が開発し、3scale 2.2ではテックプレビューであった、流量制御ポリシーおよびトークンイントロスペクションポリシーは、それぞれEdge Limiting Policy、OAuth 2.0 Token Introspection Policyとして、テックプレビューが取れ、正式サポートされました。
筆者が新しく開発したスコープチェックポリシーも、RH-SSO/Keycloak Role Check Policyとして、先の2つと同様、正式サポートされました。
3機能とも、リリースノートで、主要エンハンスポイント(Major Changes)として取り上げられています(機能の詳細は、前回記事の「ポリシー機能の今後」を参照)。
その他、2.3で強化されたポリシーとしては下記があります。
-
新しく追加されたポリシー
-
3scale Batcher Policy
3scaleは、APIリクエストが来るたびに、3scale Backendに対して都度Authorize & Reportの通信を行いますが、本ポリシーを使うと、複数のAPIリクエストのAuthorize & Reportの通信を一度にまとめて行うことができます。本ポリシーによって、3scale Backendの分析・流量制御機能は厳密さを失いますが、パフォーマンスを向上することができます。
また、本ポリシーを用いることによって、3scale BackendがダウンしていてもAPIリクエストは適切に受け付けるといった、ロバスト性の高いシステム構成も構築可能になりました。 -
3scale Referrer Policy
本ポリシーを用いることで、Refererヘッダを用いたフィルタリングを行うことができます。 -
Anonymous Access Policy
本ポリシーを用いることで、認証情報を付与する機能を持っていないレガシーアプリケーションでも、サービスにアクセスできるようになります。
具体的には、デフォルトのApp IDやApp Keyをポリシーに設定し、その情報を用いて、認証情報を持たないアプリケーションを認証します。 -
Logging Policy
本ポリシーを用いることで、アクセスログを出力するかどうかをサービスごとに設定できます。 -
URL Rewriting with Captures Policy
マッチングルールとテンプレートを設定し、APIリクエストがマッチングルールに合致した場合に、テンプレートに沿ってURLを書き換えるポリシーです。
例えば下記のようなルールとテンプレートを設定した場合、マッチングルール: "/api/v1/products/{productId}/details" テンプレート: "/internal/products/details?id={productId}&extraparam=anyvalue"
下記のようなAPIリクエストを発行すると、
https://<apicast>/api/v1/products/123/details?user_key=abc123secret
下記のようなAPIリクエストに書き換えられます。
https://<api-backend>/internal/products/details?user_key=abc123secret&extraparam=anyvalue&id=123
-
-
拡張されたポリシー
-
Edge Limiting Policy
前回紹介した流量制御機能に加えて、条件付きの流量制御がサポートされました。(PR #839)
例えば、下記のような条件付きの流量制御が可能になりました。- 残高照会メソッドの呼び出しは、100回/分 - 振込メソッドの呼び出しは、10回/分
-
Header Modification Policy
前回流量制御機能のところでも紹介した、Liquidテンプレートが、Header Modification Policyでもサポートされました。(PR #716)
これにより、例えばアクセストークン(jwt)をAPIcastで解析し、解析結果としてユーザ情報やクライアント情報、スコープ等をヘッダとして付与するなど、APIリクエストごとに可変の値をヘッダに付与するユースケースが、非常に簡単に実現できるようになりました。 -
URL Rewriting Policy
クエリパラメータの書き換えもサポートされました。(PR #724)
-
ポリシー以外にも、下記機能がサポートされました。
- Keycloak以外のIdPとの連携機能
- Prometheus Metrics連携機能
- Proxy環境対応
- OpenTracing対応
他の新機能の詳細はリリースノートをご参照ください。
おわりに
本稿では、3scale 2.3の新機能を紹介しました。
ポリシー機能を中心に、多くの機能が追加され、API管理製品として必要な機能セットは一通り揃ってきた印象です。
また、完全にOSSとなったことで、コミュニティの議論も活発化しており、更なるパワーアップが期待できます。