6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

完全OSSになった3scale 2.3の新機能紹介

Last updated at Posted at 2018-10-31

初版: 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 PolicyOAuth 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となったことで、コミュニティの議論も活発化しており、更なるパワーアップが期待できます。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?