[BIG-IP APM] JWT形式のAPIキーによるアクセス制御 Part3

BIG-IP APMはOAuth 2.0 Authorization Frameworkにおける役割の中で
Client、Resource Server、Authorization Serverとして動作させることができます。

本投稿では、Authorization Server(以下ASサーバ)とResource Server(以下RSサーバ)にAPMを利用するケースで
その設定などをご紹介します。

前回までの記事 でAPMでAS/RSサーバを構成し、JWT形式のアクセストークンを利用したアクセス制御を行う設定をご紹介しました。
今回は、JWTに含まれるClaimを利用してレート制限をかける方法をご紹介します。

レート制限に利用するKey Value
レート制限設定はAccess > API Protection > Profileから作成したProfileを選択し
Rate Limitingのタブからポリシーを作成できます。
設定のポイントとしてKey Valueをどのようなものに設定するかとなります。

どのようなKey Valueを設定すべきかは、APMのログを確認することで見ることができます。
まず、アクセストークンをつけたAPIアクセスを行い、その後RSサーバとして動作するAPMにCLIでログインし tailf /var/log/apm コマンドを投入します。

そのログの中で、New subsession created:から始まるログを確認し、その後に続く文字列(subsessionID)をコピーします。

次に、sessiondump -subkeys <subsessionID>コマンドで確認すると
以下のようなログが出力されますのでsubsession.から始まる値を利用することができます。

 今回はログから以下の文字列を利用します。

subsession.oauth.scope.last.jwt.user_name

API Protectionでのレート制限設定
1.Rate Limiting Key設定
レート制限設定はAccess > API Protection > Profileから作成したProfileを選択し
Rate Limitingのタブから設定します。
KeysからKey NameやValueを設定します。
上記で確認した文字列を%{ <文字列> }の形式で記載します。

 

2.Ralte Limiting Properties設定
任意の名前と作成したKey、及びレート制限の値を記載します。

3.VPEの編集
Access ControlタブのPer Request Policy項目のEditからVPEを編集します。
任意のポイントで(+) アイコンを選択し[Traffic Management]タブからAPI Rate Limitingを選択して[Add Item]を選択します。

Add new entryからRate Limiting Configurationで作成したPropertiesを割り当て[Save]を選択します。

以上でレート制限の設定は完了です。

テスト

レート制限があるパスとないパスにそれぞれアクセスします。
レート制限がある方は11回目のアクセス以降429 Too Many Requestsのメッセージとともにアクセスが制限されています。

 また、ユーザ単位でレート制限がかかっているか確認します。
それぞれ異なるユーザで発行したトークンで同じパスにアクセスします。

双方のユーザで11回目のアクセス以降429 Too Many Requestsのメッセージとともにアクセスが制限されています。

まとめ
今回ユーザIDを利用したレート制限をご紹介しました、その他にもGroupやScopeなど
様々な識別子をレート制限に活用いただくことが可能です。

是非API環境にAPMをご活用いただければと存じます。

Published Jun 27, 2023
Version 1.0

Was this article helpful?

No CommentsBe the first to comment