- メール確認
- パスワードの条件
- SSHキーの制限
- SSHホストキーの指紋
- SSH
known_hosts
エントリ - メール設定
- バックアップ
- グループ削除の遅延
- プロジェクトの遅延削除
- 非アクティブプロジェクトの削除
- 代替SSHポート
- GitLab Pages
- GitLab CI/CD
- パッケージのレジストリ制限
- アカウントと制限の設定
- デフォルトのインポートソース
- IPレンジ
- ホスト名リスト
- Webhook
- ランナーSaaS
- Puma
- レビュアーと担当者の最大数
- GitLab.com固有のレート制限
- GitLab.com固有のGitaly RPC同時実行数制限
- GitLab.com ロギング
- GitLab.com アットスケール
- Sidekiq
GitLab.comの設定
このPagesには、GitLab SaaSの顧客が利用できるGitLab.comで使用される設定に関する情報が含まれています。
これらの設定の一部は、GitLab.comのインスタンス設定ページでご覧ください。
メール確認
GitLab.comには以下のものがあります:
-
email_confirmation_setting
の設定がHardになっています。 -
unconfirmed_users_delete_after_days
設定を3日間に設定。
パスワードの条件
GitLab.comでは、新規アカウントやパスワード変更時のパスワードについて、以下の要件を設けています:
- 最低文字数 8文字
- 最大文字数128文字。
- すべての文字が使用できます。例:
~
,!
,@
,#
,$
,%
,^
,&
,*
,()
,[]
,_
,+
,=
,-
.
SSHキーの制限
GitLab.comはデフォルトのSSHキー制限を使用しています。
SSHホストキーの指紋
現在のインスタンス設定に移動して、GitLab.com上のSSHホストキーの指紋を確認します。
- GitLab にサインインします。
- 左のサイドバーでHelp({question-o}) >Helpを選択します。
- Help]ページで、[Check the current instance configuration]を選択します。
インスタンス設定で、SSHホストキーのフィンガープリントが表示されます:
アルゴリズム | MD5 (非推奨) | SHA256 |
---|---|---|
ECDSA | f1:d0:fb:46:73:7a:70:92:5a:ab:5d:ef:43:e2:1c:35 | HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw |
ED25519 | 2e:65:6a:c8:cf:bf:b2:8b:9a:bd:6d:9f:11:5c:12:16 | eUXGGm1YGsMAS7vkcx6JOJdOGHPem5gQp4taiCfCLB8 |
アールエスエー | b6:03:0e:39:97:9e:d0:e7:24:ce:a3:77:3e:01:42:09 | ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz/EQ |
GitLab.com リポジトリに初めて接続すると、これらの鍵のいずれかが出力に表示されます。
SSHknown_hosts
エントリ
SSH で手動指紋確認をスキップするには、.ssh/known_hosts
に以下を追加します:
gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf
gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9
gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
メール設定
GitLab.comはMailgunを使って mg.gitlab.com
ドメインからメールを送信しており、専用のIPアドレスを持っています:
161.38.202.219
159.135.226.146
192.237.158.143
198.61.254.136
23.253.183.236
69.72.35.190
mg.gitlab.com
の IP アドレスは随時変更される可能性があります。
サービスデスクエイリアスメールアドレス
GitLab.com では、Service Desk 用にcontact-project+%{key}@incoming.gitlab.com
というメールアドレスのメールボックスが設定されています。このメールボックスを使うには、プロジェクト設定でカスタムサフィックスを設定します。
バックアップ
バックアップ戦略をご覧ください。
GitLab.com上のプロジェクト全体をバックアップするには、以下のいずれかの方法でエクスポートします:
エクスポートでは、プロジェクトのエクスポートに含まれるものと含まれないものに注意してください。
GitLabはGitで構築されているので、プロジェクトのリポジトリだけを別のコンピュータにクローンしてバックアップすることができます。同様に、プロジェクトの Wiki をクローンしてバックアップすることもできます。2020年8月22日以降にアップロードされたすべてのファイルがクローンに含まれます。
グループ削除の遅延
2023年5月8日以降、すべてのグループの削除遅延がデフォルトで有効になります。
グループは7日間の遅延の後、完全に削除されます。
Freeティアをご利用の場合、グループは即座に削除され、復元することはできません。
プロジェクトの遅延削除
2023年5月8日以降、すべてのグループでプロジェクトの削除遅延がデフォルトで有効になります。
プロジェクトは、7日間の遅延の後、完全に削除されます。
Freeティアをご利用の場合、プロジェクトは即座に削除され、復元することはできません。
非アクティブプロジェクトの削除
GitLab.comでは、非アクティブプロジェクトの削除が無効になっています。
代替SSHポート
GitLab.comには、git+ssh
別のSSHポートを使ってアクセスすることができます。
設定 | 値 |
---|---|
Hostname | altssh.gitlab.com |
Port | 443 |
~/.ssh/config
の例を以下に示します:
Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab
GitLab Pages
GitLab Pagesのいくつかの設定は、セルフマネージドインスタンスのデフォルトとは異なります:
設定 | GitLab.com |
---|---|
ドメイン名 | gitlab.io |
IPアドレス | 35.185.44.232 |
カスタムドメインのサポート | {チェックサークル}はい |
TLS証明書のサポート | {チェックサークル}はい |
最大サイトサイズ | 1 GB |
GitLab Pagesウェブサイトごとのカスタムドメイン数 | 150 |
Pagesサイトの最大サイズは、GitLab CI/CDの一部である最大アーティファクトサイズに依存します。
GitLab Pagesにもレート制限があります。
GitLab CI/CD
以下はGitLab CI/CDに関する現在の設定です。ここに記載されていない設定や機能制限は、関連ドキュメントに記載されているデフォルトを使用しています。
設定 | GitLab.com | デフォルト(自己管理) |
---|---|---|
アーティファクトの最大サイズ(圧縮) | 1 GB | 最大アーティファクトサイズを参照してください。 |
アーティファクトの有効期限 | 2020年6月22日以降、特に指定がない限り30日後に削除(それ以前に作成されたアーティファクトには有効期限はありません)。 | デフォルトのアーティファクトの有効期限を参照してください。 |
パイプラインCronのスケジュール | */5 * * * * | パイプラインスケジュールの詳細設定を参照してください。 |
アクティブなパイプラインの最大ジョブ数 |
500 Free層では1000 、すべてのトライアル層では20000 、Premium層では100000 、Ultimate層では 。 | アクティブなパイプラインのジョブ数を参照してください。 |
プロジェクトに対するCI/CDサブスクリプションの最大数 | 2 | プロジェクトに対するCI/CDサブスクリプション数を参照してください。 |
プロジェクト内のパイプライントリガーの最大数 |
25000 無料ティアでは無制限、すべての有料ティアでは無制限 | パイプライントリガーの数を制限するを参照してください。 |
プロジェクトでのパイプラインスケジュールの最大値 |
10 無料ティアの場合、50 すべての有料ティアの場合 | パイプラインのスケジュール数をご覧ください。 |
スケジュールごとの最大パイプライン数 |
24 無料ティアの場合、288 すべての有料ティアの場合 | 1日にパイプラインスケジュールで作成されるパイプラインの数を制限するを参照してください。 |
各セキュリティポリシープロジェクトに定義されるスケジュールルールの最大数 | すべての有料ティアで無制限 | 各セキュリティポリシープロジェクトに定義されたスケジュールルールの数を参照してください。 |
スケジュールされたジョブのアーカイブ | 3ヶ月(2020年6月22日から)。それ以前に作成されたジョブは、2020年9月22日以降にアーカイブされます。 | 決して |
単体テストレポートあたりの最大テストケース数 | 500000 | 無制限。 |
最大登録ランナー数 | 無料ティア:50 グループごと/ 50 プロジェクトごとすべての有料ティア: 1000 グループごと/ 1000 プロジェクトごと | スコープごとの登録ランナー数を参照してください。 |
dotenv変数の制限数 | 無料ティア 50 / Premium ティア: 100 / アルティメット・ティア150
| dotenv変数の制限を参照してください。 |
作成者トークンの持続時間 (分) | 15 | カスタム値を設定するには、RailsコンソールでApplicationSetting.last.update(container_registry_token_expire_delay: <integer>) を実行します。<integer> は希望の分数です。 |
パッケージのレジストリ制限
GitLabパッケージレジストリにアップロードされるパッケージの最大ファイルサイズはフォーマットによって異なります:
パッケージタイプ | GitLab.com |
---|---|
Conan | 5 GB |
汎用 | 5 GB |
Helm | 5 MB |
Maven | 5 GB |
npm | 5 GB |
NuGet | 5 GB |
PyPI | 5 GB |
Terraform | 1 GB |
アカウントと制限の設定
GitLab.comでは、以下のアカウント制限が有効になっています。設定が一覧にない場合、デフォルト値はセルフマネージドインスタンスと同じです:
設定 | GitLab.comデフォルト |
---|---|
LFSを含むリポジトリサイズ | 10 GB |
最大インポートサイズ | 5 GB |
外部オブジェクトストレージからのインポートの最大リモートファイルサイズ | 10 GB |
ソースGitLabインスタンスから直接転送でインポートする場合の最大ダウンロードファイルサイズ | 5 GB |
最大添付ファイルサイズ | 100 MB |
インポートアーカイブの最大解凍ファイルサイズ | 25 GB |
リポジトリサイズの上限が近いか超えている場合は、Gitを使ってリポジトリサイズを小さくするか、追加のストレージを購入することができます。
git push
Git LFS と GitLab プロジェクトのインポートは、Cloudflare 経由のリクエストごとに 5 GB に制限されます。Git LFS とファイルのアップロード以外のインポートは、この制限の影響を受けません。リポジトリの制限は、公開プロジェクトと非公開プロジェクトの両方に適用されます。デフォルトのインポートソース
GitLab 16.0で導入された新しいGitLabセルフマネージドインストールでは、デフォルトですべてのインポートを無効にします。
デフォルトで利用可能なインポートソースは、利用するGitLabによって異なります:
- GitLab.com: 利用可能なインポートソースは全てデフォルトで有効になっています。
- GitLab 自己管理: デフォルトではインポートソースは有効になっておらず、有効にする必要があります。
インポートソース | GitLab.comデフォルト | GitLab 自己管理デフォルト |
---|---|---|
Bitbucket クラウド | {チェックサークル}はい | {点線円}いいえ |
Bitbucket サーバー | {チェックサークル}はい | {点線円}いいえ |
FogBugz | {チェックサークル}はい | {点線円}いいえ |
Gitea | {チェックサークル}はい | {点線円}いいえ |
直接転送によるGitLab | {チェックサークル}はい | {点線円}いいえ |
ファイルエクスポートを使用するGitLab | {チェックサークル}はい | {点線円}いいえ |
GitHub | {チェックサークル}はい | {点線円}いいえ |
マニフェスト・ファイル | {チェックサークル}はい | {点線円}いいえ |
URLによるリポジトリ | {チェックサークル}はい | {点線円}いいえ |
その他のインポートも可能です。
IPレンジ
GitLab.comは、Web/APIフリートからのトラフィックにIPレンジ34.74.90.64/28
、34.74.226.0/24
。この範囲全体がGitLabだけに割り当てられています。Webhookやリポジトリミラーリングからの接続がこれらのIPから来ることを予想し、許可することができます。
GitLab.comはCloudflareによってフロントされています。GitLab.comへの着信接続については、CloudflareのCIDRブロック(IPv4と IPv6)を許可する必要があるかもしれません。
CI/CDランナーからの発信接続については、静的IPアドレスを提供していません。すべてのGitLab.com共有ランナーは、us-east1
のGoogle Cloud Platform(GCP) にデプロイされています。IPベースのファイアウォールは、GCPのIPアドレス範囲やCIDRブロックを調べることで設定できます。
ホスト名リスト
ローカルの HTTP(S) プロキシや、エンドユーザーコンピュータを管理するその他のウェブブロックソフトウェアで許可リストを設定するときに、これらのホスト名を追加してください。GitLab.comのページは、これらのホスト名からコンテンツを読み込みます:
gitlab.com
*.gitlab.com
*.gitlab-static.net
*.gitlab.io
*.gitlab.net
docs.gitlab.com
やabout.gitlab.com
で提供されるドキュメントや会社のページも、特定のページの内容を一般的な公開CDNのホスト名から直接読み込みます。
Webhook
Webhookには以下の制限があります。
レート制限
Webhook が 1 分間に呼び出される回数、1 つのトップレベル名前空間あたり。制限は、ご利用のプランとサブスクリプションのシート数によって異なります。
Plan | GitLab.comのデフォルト |
---|---|
無料 | 500 |
Premium |
99 シート以下:1,600 100-399 シート:2,800 400 シート以上:4,000
|
究極のオープンソース |
999 シート以下:6,000 1,000-4,999 シート:9,000 5,000 シート以上:13,000
|
その他の制限
設定 | GitLab.comのデフォルト |
---|---|
Webhook数 |
100 プロジェクトあたり、50 グループあたり (サブグループの Webhook は親グループの制限にはカウントされません) |
最大ペイロードサイズ | 25 MB |
タイムアウト | 10秒 |
セルフマネージド・インスタンスの制限については、以下を参照してください:
ランナーSaaS
Runner SaaSは、GitLab.comがホストするプロジェクトのCI/CDジョブを実行するために使用できる、ホストされたセキュアで管理されたビルド環境です。
詳細はRunner SaaSをご覧ください。
Puma
GitLab.comでは、Pumaのリクエストタイムアウトにデフォルトの60秒を使用しています。
レビュアーと担当者の最大数
マージリクエストはこれらの上限を強制します:
- 担当者の最大数:200
- 最大レビュアー数:200名
GitLab.com固有のレート制限
リクエストがレート制限されると、GitLab は429
ステータスコードで応答します。クライアントはリクエストを再試行する前に待つ必要があります。このレスポンスには情報ヘッダも含まれます。
以下の表は、2021年1月の制限変更前と変更後のGitLab.comのレート制限について説明したものです:
料金制限 | 2021-02-12より | 2022-02-03より |
---|---|---|
保護されたパス(指定されたIPアドレスの場合) | 10リクエスト/分 | 10リクエスト/分 |
生のエンドポイントトラフィック(指定されたプロジェクト、コミット、ファイルパスの場合) | 300リクエスト/分 | 300リクエスト/分 |
認証されていないトラフィック(指定されたIPアドレスから) | 500リクエスト/分 | 500リクエスト/分 |
認証されたAPIトラフィック(特定のユーザーの場合) | 2,000リクエスト/分 | 2,000リクエスト/分 |
認証された非API HTTPトラフィック(特定のユーザーの場合) | 1,000リクエスト/分 | 1,000リクエスト/分 |
すべてのトラフィック(指定されたIPアドレスから) | 2,000リクエスト/分 | 2,000リクエスト/分 |
イシュー作成 | 300リクエスト/分 | 毎分200リクエスト |
ノート作成(イシューとマージリクエストについて) | 60リクエスト/分 | 60リクエスト/分 |
アドバンス、プロジェクト、グループ検索API(指定されたIPアドレスに対して) | 10リクエスト/分 | 10リクエスト/分 |
GitLabページへのリクエスト(指定されたIPアドレスの場合) | 1000リクエスト/50秒 | |
GitLab Pagesのリクエスト数(GitLab Pagesドメインの場合) | 5000リクエスト/10秒 | |
GitLab PagesTLS 接続 (指定されたIP アドレスの場合) | 1000リクエスト/50秒 | |
GitLab PagesTLS 接続 (GitLab Pages ドメイン) | 10秒あたり400リクエスト | |
パイプライン作成リクエスト (指定されたプロジェクト、ユーザー、コミット) | 25リクエスト/分 | |
アラートインテグレーションエンドポイントリクエスト(特定のプロジェクトに対して) | 1時間あたり3600リクエスト |
保護されたパスと 未加工エンドポイントのレート制限の詳細については、こちらをご覧ください。
GitLabはいくつかのレイヤーでリクエストをレート制限することができます。ここに記載されているレートリミットはアプリケーションで設定されます。これらの制限はIPアドレスごとに最も制限されます。GitLab.comのレート制限の詳細については、概要をご覧ください。
レスポンスのレート制限
速度制限応答については、こちらをご覧ください:
保護されたパスのスロットル
GitLab.com は、保護されたパスでの POST リクエストが IP アドレスあたり毎分10 リクエストを超えた場合、HTTP ステータスコード429
で応答します。
どのパスが保護されるかについては、以下のソースを参照してください。これには、ユーザー作成、ユーザー確認、ユーザーサインイン、パスワードリセットが含まれます。
ユーザーと IP レートの制限には、ブロックされたリクエストに応答するヘッダのリストが含まれます。
詳しくは保護されたパスを参照してください。
IPブロック
IPブロックは、GitLab.comが悪意のある可能性があるとみなす単一のIPアドレスから異常なトラフィックを受信した場合に発生する可能性があります。これはレートリミットの設定に基づくことがあります。異常なトラフィックがなくなった後、次のセクションで説明するように、ブロックの種類に応じてIPアドレスは自動的にリリースされます。
GitLab.comへのすべてのリクエストに対して403 Forbidden
エラーが表示される場合は、ブロックをトリガーしている可能性のある自動プロセスがないか確認してください。サポートが必要な場合は、影響を受けるIPアドレスなどの詳細をGitLabサポートまでご連絡ください。
Git とコンテナレジストリの認証禁止に失敗しました。
GitLab.comは、1つのIPアドレスから3分間に30回の認証失敗リクエストがあった場合、HTTPステータスコード403
で1時間応答します。
これは、Git リクエストとコンテナレジストリ (/jwt/auth
) リクエスト (の組み合わせ) にのみ適用されます。
この制限は
- 認証に成功したリクエストによってリセットされます。例えば、29回認証に失敗し、その後1回認証に成功し、さらに29回認証に失敗しても、BANのトリガーにはなりません。
-
gitlab-ci-token
によって認証された JWT リクエストには適用されません。
レスポンス・ヘッダは提供されません。
ページネーションのレスポンスヘッダ
パフォーマンス上の理由から、クエリが10,000以上のレコードを返す場合、GitLabはいくつかのヘッダを除外します。
可視性の設定
GitLab.comでは、プロジェクト、グループ、スニペットの内部可視性設定が無効になっています。
SSH 最大接続数
GitLab.com では、認証されていない SSH 接続の最大同時接続数をMaxStartups 設定で定義しています。許可された最大数を超える接続が同時に発生した場合、接続は切断され、ユーザーは ssh_exchange_identification
エラーを受け取ります。
エクスポートファイルのアップロードによるグループとプロジェクトのインポート
不正利用を避けるため、以下はレートが制限されています:
- プロジェクトおよびグループのインポート。
- ファイルを使用するグループとプロジェクトのエクスポート。
- エクスポートのダウンロード。
詳細については
設定不可能な制限
GitLab.comでも使用されている設定不可能なレート制限については、設定不可能な制限をご覧ください。
GitLab.com固有のGitaly RPC同時実行数制限
リポジトリごとの Gitaly RPC の同時実行数やキューイング数の制限は、git clone
のような Git のオペレーションごとに設定されます。これらの制限を超えると、fatal: remote error: GitLab is currently unable to handle this request due to load
メッセージがクライアントに返されます。
管理者向けのドキュメントについては、RPC の同時実行数の制限を参照ください。
GitLab.com ロギング
ログの解析にはFluentdを使っています。Fluentd はログをStackdriver LoggingとCloud Pub/Subに送ります。Stackdriver はログを Google Cold Storage(GCS)に長期保存するために使います。Cloud Pub/SubはログをElasticクラスターに転送するために使います。 pubsubbeat
.
詳細については、以下のようなランブックをご覧ください:
ジョブのログ
デフォルトでは、GitLabはジョブログを期限切れにしません。ジョブログは無期限に保持され、GitLab.comで有効期限を設定することはできません。ジョブログはJobs APIを使って手動で消すか、パイプラインを削除することで消すことができます。
GitLab.com アットスケール
GitLab Enterprise Edition Linuxパッケージのインストールに加えて、GitLab.comはスケールを実現するために以下のアプリケーションと設定を使用しています。すべての設定はKubernetes設定や Chef cookbookとして公開されています。
Elasticクラスター
監視ソリューションの一部に Elasticsearch と Kibana を使用しています:
Fluentd
GitLabのログを統一するためにFluentdを使っています:
Prometheus
Prometheusは私たちの監視スタックを完成させました:
Grafana
モニタリングデータの可視化
セントリー
オープンソースのエラートラッキング:
Consul
サービスの発見:
HAProxy
高性能TCP/HTTPロードバランサー:
Sidekiq
GitLab.comはSidekiqをRubyジョブスケジューリング用の外部プロセスとして動かしています。
現在の設定はGitLab.comのKubernetesポッド設定にあります。