ルートへのレート制限の設定
Aikido の Zen Firewall では、ルートにレート制限を設定することで、パスワードリセットリクエストの過剰な送信などの乱用からアプリケーションを保護できます。Webページ、REST APIルート、GraphQL APIのいずれに対してもレート制限をかけられます。
サポートされる機能
Section titled “サポートされる機能 ”- 特定のルートにレート制限を設定
- ワイルドカード*ルートを追加することで、複数のルートに対してまとめてレート制限を設定
- IPアドレス、ユーザーID、またはカスタムグループID(B2B SaaSの企業IDなど)単位でレート制限を設定
- アプリ全体の保護を無効化する代わりに、特定のルートのみ保護を無効化
- Localhost(127.0.0.1)は常にレート制限の対象外
レート制限は、個々のIPアドレスまたはユーザー識別に基づいて適用されます。
例えば、上限が1分あたり10リクエストの場合:
- ❌ ブロックされる: 単一のIPが11リクエストを行った場合
- ✅ 許可される: 異なる11個のIPがそれぞれ1リクエストずつ行った場合
これにより、複数ユーザーからの正常なトラフィックを許可しつつ、乱用を防ぐことができます。
レート制限の設定方法
Section titled “レート制限の設定方法 ”ステップ1: 特定のアプリに移動し、Routesタブを開きます
ステップ2: レート制限を適用したい特定のルートのアクションメニューを開きます。「Setup rate limiting」をクリックするとモーダルが開きます。

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

設定変更が反映されるまで最大1分かかります。
複数ルートへ一括でレート制限を設定する
Section titled “複数ルートへ一括でレート制限を設定する ”ワイルドカードルートを追加することで、複数のルートに対して一度にレート制限を設定できます。
ステップ1. Routesページで Add Route をクリックします。

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

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

処理の優先順位
Section titled “処理の優先順位”Aikido Zenは以下の優先順位でレート制限を適用します。
- グループレベル
- ユーザーレベル
- IPレベル
上位レベル(グループなど)でリクエストがレート制限された場合、下位レベル(ユーザーまたはIP)は評価されません。
スライディングウィンドウ
Section titled “スライディングウィンドウ”継続的に前進する移動時間枠を使ってイベントを追跡します。特定の時刻でリセットされる固定ウィンドウとは異なり、スライディングウィンドウは直近の期間(例: 直近60秒間)の件数を継続的に集計します。これにより、短時間のトラフィック急増がウィンドウの境界で制限をすり抜けてしまうエッジケースを防ぎます。
ルート選択(ワイルドカード)
Section titled “ルート選択(ワイルドカード)”Zenはまず完全一致するルート(ワイルドカードなし)を優先してレート制限を適用します。完全一致するルートが見つからない場合は、最も低い上限に基づいてワイルドカード一致が適用されます。ある時点で適用される上限は常に1つのみで、1つのリクエストが複数の上限に該当することはありません。
グループ単位のレート制限
Section titled “グループ単位のレート制限”ユーザーのグループ単位でリクエスト数を制限するには、setRateLimitGroup 関数を使用します。チームや企業単位でリクエスト数を制限したい場合に便利です。レート制限グループを設定した場合、設定したレート制限はそのグループにのみ適用され、個々のユーザーやIPアドレスには適用されない点に注意してください。
対応言語:
- 特定のユーザーのレート制限を解除するには、レート制限を無効化できます。 これにより、そのユーザーに対するすべてのレート制限がバイパスされます。