コンテンツにスキップ

ルートへのレート制限の設定

Aikido の Zen Firewall では、ルートにレート制限を設定することで、パスワードリセットリクエストの過剰な送信などの乱用からアプリケーションを保護できます。Webページ、REST APIルート、GraphQL APIのいずれに対してもレート制限をかけられます。

  • 特定のルートにレート制限を設定
  • ワイルドカード*ルートを追加することで、複数のルートに対してまとめてレート制限を設定
  • IPアドレス、ユーザーID、またはカスタムグループID(B2B SaaSの企業IDなど)単位でレート制限を設定
  • アプリ全体の保護を無効化する代わりに、特定のルートのみ保護を無効化
  • Localhost(127.0.0.1)は常にレート制限の対象外

レート制限は、個々のIPアドレスまたはユーザー識別に基づいて適用されます。
例えば、上限が1分あたり10リクエストの場合:

  • ブロックされる: 単一のIPが11リクエストを行った場合
  • 許可される: 異なる11個のIPがそれぞれ1リクエストずつ行った場合

これにより、複数ユーザーからの正常なトラフィックを許可しつつ、乱用を防ぐことができます。

ステップ1: 特定のアプリに移動し、Routesタブを開きます

ステップ2: レート制限を適用したい特定のルートのアクションメニューを開きます。「Setup rate limiting」をクリックするとモーダルが開きます。

メソッド、ルート、アプリ名、レート制限、ステータスを表示するAPIルート管理画面。

ステップ3: Enable Rate Limiting を有効にし、期間ごとに許可するリクエスト数を指定します。ルートを更新して保存します。

/api/v2/posts/ へのPATCHリクエストに対するレート制限を有効化・設定する画面。

設定変更が反映されるまで最大1分かかります。

複数ルートへ一括でレート制限を設定する

Section titled “複数ルートへ一括でレート制限を設定する ”

ワイルドカードルートを追加することで、複数のルートに対して一度にレート制限を設定できます。

ステップ1. Routesページで Add Route をクリックします。

ルート、アプリ名、レート制限、保護ステータスを表示するAPIルートテーブル。

ステップ2. ルートに * を追加してワイルドカードルートを作成します。

Aikido Firewall設定でレート制限付きのAPIルートを追加する画面。

ステップ3. ワイルドカードがリストに表示されるようになります。上記と同様の方法でレート制限を設定します。

POST /auth/* ルート: Demoアプリ、10リクエスト/分、Protectedステータス。

Aikido Zenは以下の優先順位でレート制限を適用します。

  1. グループレベル
  2. ユーザーレベル
  3. IPレベル

上位レベル(グループなど)でリクエストがレート制限された場合、下位レベル(ユーザーまたはIP)は評価されません。

継続的に前進する移動時間枠を使ってイベントを追跡します。特定の時刻でリセットされる固定ウィンドウとは異なり、スライディングウィンドウは直近の期間(例: 直近60秒間)の件数を継続的に集計します。これにより、短時間のトラフィック急増がウィンドウの境界で制限をすり抜けてしまうエッジケースを防ぎます。

ルート選択(ワイルドカード)

Section titled “ルート選択(ワイルドカード)”

Zenはまず完全一致するルート(ワイルドカードなし)を優先してレート制限を適用します。完全一致するルートが見つからない場合は、最も低い上限に基づいてワイルドカード一致が適用されます。ある時点で適用される上限は常に1つのみで、1つのリクエストが複数の上限に該当することはありません。

ユーザーのグループ単位でリクエスト数を制限するには、setRateLimitGroup 関数を使用します。チームや企業単位でリクエスト数を制限したい場合に便利です。レート制限グループを設定した場合、設定したレート制限はそのグループにのみ適用され、個々のユーザーやIPアドレスには適用されない点に注意してください。

対応言語: