[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のメッセージとともにアクセスが制限されています。
また、ユーザ単位でレート制限がかかっているか確認します。
それぞれ異なるユーザで発行したトークンで同じパスにアクセスします。
まとめ
今回ユーザIDを利用したレート制限をご紹介しました、その他にもGroupやScopeなど
様々な識別子をレート制限に活用いただくことが可能です。
是非API環境にAPMをご活用いただければと存じます。