保護されたパス
レート制限は、ウェブアプリケーションのセキュリティと耐久性を向上させるために使用される一般的なテクニックです。 詳細については、レート制限を参照してください。
GitLabはデフォルトで以下のパスをRack Attackでレート制限しています:
'/users/password',
'/users/sign_in',
'/api/#{API::API.version}/session.json',
'/api/#{API::API.version}/session',
'/users',
'/users/confirmation',
'/unsubscribes/',
'/import/github/personal_access_token',
'/admin/session'
GitLab は、保護されたパスでの POST リクエストが IP アドレスあたり毎分 10 リクエストを超えた場合、HTTP ステータスコード429
で応答します。
このヘッダーはブロックされたリクエストに対する応答に含まれます:
Retry-After: 60
例えば、以下のリクエストは1分間に最大10件に制限されています:
- ユーザーサインイン
- ユーザー登録(有効な場合)
- ユーザーパスワードのリセット
10回のリクエストの後、クライアントは再試行できるまで60秒待たなければなりません。
GitLab UI を使った設定
GitLab 12.4で導入されました。
保護されたパスのスロットリングはデフォルトで有効になっており、Admin > Network > Protected Paths(管理 > ネットワーク > 保護されたパス)で、これらのオプションとともに無効化またはカスタマイズできます:
- ユーザーごとの期間あたりの最大リクエスト数。
- 秒単位のレート制限時間。
- 守るべき道。
レート制限を超えたリクエストはauth.log
に記録されます。