Git操作レート制限
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
クローン、フェッチ、プッシュといった一般的なGit操作は、短時間で多くのリクエストを生成する可能性があります。Git HTTP、Git LFS、Git SSH操作のレート制限は、GitLabインスタンスのセキュリティと耐久性を保護します。これらの各制限は、一般的なユーザーとIPのレート制限とは異なる動作をします。各セクションでその方法を説明します。
Git HTTP
リポジトリでGit HTTPを使用する場合、一般的なGit操作は多くのGit HTTPリクエストを生成する可能性があります。GitLabは、認証されたGit HTTPリクエストと認証されていないGit HTTPリクエストの両方にレート制限を適用して、ウェブアプリケーションのセキュリティと耐久性を向上させることができます。
一般的なユーザーとIPのレート制限はGit HTTPリクエストには適用されません。
GitLab.comでのGit HTTP
GitLab.comでは、Git HTTPリクエストはGit HTTPSリクエストのレート制限の対象となります。
認証されていないGit HTTPレート制限の設定
GitLabはデフォルトで、認証されていないGit HTTPリクエストのレート制限を無効にしています。
前提条件:
- 管理者アクセス権が必要です。
認証パラメータを含まないGit HTTPリクエストにレート制限を適用するには、これらの制限を有効にして設定します:
- 右上隅で、管理者を選択します。
- 左側のサイドバーで、設定 > ネットワークを選択します。
- Git HTTPレート制限を展開します。
- 認証されていないGit HTTPリクエストのレート制限を有効にするを選択します。
- ユーザーあたりの期間あたりの認証されていない最大Git HTTPリクエストに値を入力します。
- 認証されていないGit HTTPレート制限期間(秒単位) に値を入力します。
- 変更を保存を選択します。
認証されているGit HTTPレート制限の設定
GitLabはデフォルトで、認証されたGit HTTPリクエストのレート制限を無効にしています。
前提条件:
- 管理者アクセス権が必要です。
認証パラメータを含むGit HTTPリクエストにレート制限を適用するには、これらの制限を有効にして設定します:
- 右上隅で、管理者を選択します。
- 左側のサイドバーで、設定 > ネットワークを選択します。
- Git HTTPレート制限を展開します。
- 認証されているGit HTTPリクエストのレート制限を有効にするを選択します。
- ユーザーあたりの期間あたりの認証された最大Git HTTPリクエストに値を入力します。
- 認証されているGit HTTPレート制限期間(秒単位) に値を入力します。
- 変更を保存を選択します。
必要に応じて、特定のユーザーが認証されたリクエストのレート制限をバイパスできるようにすることができます。
Git LFS
Git Large File Storage(LFS)は、大きなファイルを扱うためのGit拡張機能です。Git LFSを使用するリポジトリは、多数のLFSリクエストを生成する可能性があります。一般的なユーザーとIPのレート制限を適用できますが、一般的な設定を上書きしてGit LFSリクエストに追加の制限を適用することもできます。この上書きにより、ウェブアプリケーションのセキュリティと耐久性を向上させることができます。
GitLab.comでのGit LFS
GitLab.comでは、Git LFSリクエストは認証されたウェブリクエストのレート制限の対象となります。これらの制限は、ユーザーあたり1分間に1000リクエストに設定されています。
アップロードまたはダウンロードされる各Git LFSオブジェクトは、この制限に対してカウントされるHTTPリクエストを生成します。
複数の大きなファイルを持つプロジェクトでは、HTTPレート制限エラーが発生する可能性があります。このエラーは、CI/CDパイプラインのような自動化された環境で、単一のIPアドレスから実行された場合に、クローンまたはプル中に発生します。
Git LFSレート制限の設定
Git LFSレート制限は、GitLab Self-Managedインスタンスではデフォルトで無効になっています。管理者は、Git LFSトラフィック専用のレート制限を設定できます。これらの専用LFSレート制限が有効になっている場合、デフォルトのユーザーとIPのレート制限を上書きします。
前提条件:
- インスタンスの管理者である必要があります。
Git LFSレート制限を設定するには:
- 右上隅で、管理者を選択します。
- 左側のサイドバーで、設定 > ネットワークを選択します。
- Git LFSレート制限を展開します。
- 認証されたGit LFSリクエストレート制限を有効にするを選択します。
- ユーザーあたりの期間あたりの認証された最大Git LFSリクエストに値を入力します。
- 認証されたGit LFSレート制限期間(秒単位) に値を入力します。
- 変更を保存を選択します。
Git SSH操作
GitLabは、SSHを使用するGit操作に、ユーザーアカウントとプロジェクトごとにレート制限を適用します。ユーザーがレート制限を超過すると、GitLabはそのユーザーからのプロジェクトに対するそれ以上の接続リクエストを拒否します。
レート制限は、Gitコマンド(配管(Plumbing))レベルで適用されます。デフォルトでは、各コマンドには1分あたり600のレート制限があります。例:
git pushには1分あたり600のレート制限があります。git pullには独自の1分あたり600のレート制限があります。
git-upload-pack、git pull、およびgit cloneの各コマンドは、コマンドを共有するため、レート制限も共有します。
一般的なユーザーとIPのレート制限はGit SSH操作には適用されません。SSHトラフィックは内部APIを介してGitLabに到達するため、この制限に対してのみカウントされます。
GitLab.comでのGit SSH操作
GitLab.comでは、Git SSH操作はデフォルトの1分あたり600操作のレート制限を使用します。この制限は変更できません。
GitLab Shell操作制限の設定
Git operations using SSHはデフォルトで有効になっています。デフォルトはユーザーあたり1分間に600です。
前提条件:
- 管理者アクセス権。
- 右上隅で、管理者を選択します。
- 左側のサイドバーで、設定 > ネットワークを選択します。
- Git SSH操作のレート制限を展開します。
- 1分あたりのgit操作の最大数に値を入力します。
- レート制限を無効にするには、
0に設定します。
- レート制限を無効にするには、
- 変更を保存を選択します。