Technical Articles
F5 SMEs share good practice.
cancel
Showing results for 
Search instead for 
Did you mean: 
Y_Nabeya
F5 Employee
F5 Employee

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をどのようなものに設定するかとなります。

Y_Nabeya_0-1668751514270.png

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

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

Y_Nabeya_1-1668751623307.png

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

Y_Nabeya_2-1668751696146.png
Y_Nabeya_3-1668751723680.png

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

subsession.oauth.scope.last.jwt.user_name

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

Y_Nabeya_4-1668752707516.png

 

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

Y_Nabeya_5-1668752717859.png

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

Y_Nabeya_6-1668752731237.png

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

Y_Nabeya_7-1668752745140.png
Y_Nabeya_8-1668752760259.png

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

テスト

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

Y_Nabeya_9-1668753368306.png

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

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

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

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

Version history
Last update:
‎26-Jun-2023 17:22
Updated by:
Contributors