アクセスと表示レベルの制御
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
GitLabインスタンスの管理者は、ブランチ、プロジェクト、スニペット、グループなどに対して特定の制御を適用できます。たとえば、次の内容を定義できます:
- プロジェクトを作成または削除できるロール
- 削除されたプロジェクトとグループの保持期間
- グループ、プロジェクト、およびスニペットの表示レベル
- SSHキーで許可されるタイプと長さ
- 受け入れられるプロトコル(SSHまたはHTTPS)やクローンURLなどのGit設定
- プッシュミラーリングとプルミラーリングを許可または禁止する
前提要件:
- 管理者である必要があります。
表示レベルとアクセス制御のオプションにアクセスするには、次の手順に従います:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
プロジェクトを作成できるロールを定義する
インスタンスにプロジェクトの作成保護を追加できます。この保護により、インスタンス上でどのロールがプロジェクトをグループに追加できるかを定義できます。
プロジェクトの作成に必要なデフォルトの最小ロール設定を設定すると、新しいグループのデフォルトが設定されます。既存のグループは、現在の権限を保持します。
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- プロジェクトの作成に必要なデフォルトの最小ロールで、目的のロールを選択します:
- なし
- 管理者
- オーナー
- メンテナー
- デベロッパー
- 変更を保存を選択します。
管理者を選択して、管理者モードが有効になっている場合、管理者は新しいプロジェクトを作成するために管理者モードを有効にする必要があります。
プロジェクトの削除を管理者に制限する
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
前提要件:
- 管理者であるか、プロジェクトのオーナーロールを持っている必要があります。
プロジェクトの削除を管理者のみに制限するには、次の手順に従います:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- プロジェクトの削除を許可までスクロールし、管理者を選択します。
- 変更を保存を選択します。
制限を無効にするには、次の手順に従います:
- オーナーと管理者を選択します。
- 変更を保存を選択します。
削除保護
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
これらの保護は、インスタンス上のグループやプロジェクトが誤って削除されることを防止するために役立ちます。
保持期間
グループとプロジェクトは、定義した保持期間中であれば復元可能です。デフォルトでは、保持期間は30日ですが、1日から90日の間の値に変更できます。
前提要件:
- 管理者である必要があります。
グループとプロジェクトの削除保護を設定するには、次の手順を実行します:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- Deletion protection(削除保護)までスクロールし、保持期間を
1日から90日の間の値に設定します。 - 変更を保存を選択します。
即時削除
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
デフォルトでは、削除保護のためにマークされたグループとプロジェクトでは、即時削除が許可されています。これにより、ユーザーは設定された保持期間を効果的に回避して、グループまたはプロジェクトを直ちに削除できます。
これは無効にできるため、設定された保持期間後にのみ、グループとプロジェクトが自動的に削除されます:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- 即時削除までスクロールして、チェックボックスをオフにします。
- 変更を保存を選択します。
管理者は、管理者ページからグループおよびプロジェクトを常に即時削除できます。
デフォルトを上書きして即座に削除する
遅延を上書きして、削除対象としてマークされたプロジェクトを即座に削除するには、次の手順に従います:
- プロジェクトを復元します。
- プロジェクトの管理ページの説明に従って、プロジェクトを削除します。
プロジェクトの表示レベルのデフォルトを設定する
新しいプロジェクトのデフォルトの表示レベルを設定するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- デフォルトのプロジェクトの表示レベルとして、目的の値を選択します:
- プライベート: 各ユーザーに明示的にプロジェクトへのアクセス権を付与します。このプロジェクトがグループに属している場合、グループのメンバーにアクセス権を付与します。
- 内部: 外部ユーザーを除く、すべての認証済みユーザーがプロジェクトにアクセスできます。
- 公開: ユーザーは認証なしでプロジェクトにアクセスできます。
- 変更を保存を選択します。
スニペットの表示レベルのデフォルトを設定する
新しいスニペットのデフォルトの表示レベルを設定するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- Default snippet visibility(デフォルトのスニペットの表示レベル)で、目的の表示レベルを選択します:
- プライベート
- 内部: この設定は、GitLab.comの新しいプロジェクト、グループ、およびスニペットに対しては無効になっています。
Internal表示レベル設定を使用している既存のスニペットは、この設定を保持します。この変更の詳細については、イシュー12388を参照してください。 - 公開
- 変更を保存を選択します。
グループの表示レベルのデフォルトを設定する
新しいグループのデフォルトの表示レベルを設定するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- Default group visibility(デフォルトのグループの表示レベル)で、目的の表示レベルを選択します:
- プライベート: メンバーのみがグループとそのプロジェクトを表示できます。
- 内部: 外部ユーザーを除く、すべての認証済みユーザーがグループと内部プロジェクトを表示できます。
- 公開: グループおよび公開プロジェクトは、認証なしで表示できます。
- 変更を保存を選択します。
グループの表示レベルの詳細については、グループの表示レベルを参照してください。
表示レベルを制限する
表示レベルを制限する場合、変更しようとしているアイテムから表示レベルを継承するサブグループやプロジェクトの権限と、表示レベルの制限が互いにどのように影響し合うのかを検討してください。
この設定は、パーソナルネームスペースで作成されたプロジェクトには適用されません。この機能をエンタープライズユーザーに拡張することを目的とした機能リクエストがあります。
グループ、プロジェクト、スニペット、選択したページの表示レベルを制限するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- 可視性レベルの制限で、制限する表示レベルを選択します。
- 公開レベルを制限する場合:
- 管理者のみが、公開グループ、プロジェクト、スニペットを作成できます。
- ユーザープロファイルは、Webインターフェースを通じて認証済みユーザーのみに表示されます。
- GraphQL APIではユーザー属性は表示されません。
- 内部レベルを制限する場合:
- 管理者のみが、内部グループ、プロジェクト、スニペットを作成できます。
- プライベートレベルを制限する場合:
- 管理者のみが、非公開グループ、プロジェクト、スニペットを作成できます。
- 公開レベルを制限する場合:
- 変更を保存を選択します。
新しいプロジェクトまたはグループのデフォルトとして設定されている表示レベルを制限することはできません。逆に、制限された表示レベルを新しいプロジェクトまたはグループのデフォルトとして設定することはできません。
有効なGitアクセスプロトコルを設定する
GitLabのアクセス制限を使用すると、ユーザーがGitLabとの通信に使用できるプロトコルを選択できます。アクセスプロトコルを無効にしても、サーバー自体へのポートアクセスはブロックされません。プロトコル(SSHまたはHTTP(S))で使用されるポートには、引き続きアクセス可能です。GitLabのアクセス制限は、アプリケーションレベルで適用されます。
GitLabは、選択したプロトコルに対してのみGitアクションを許可します:
- SSHとHTTP(S)の両方を有効にしている場合、ユーザーはどちらのプロトコルも選択できます。
- いずれか一方のプロトコルのみを有効にしている場合、プロジェクトページには許可されたプロトコルのURLのみが表示され、変更するオプションは表示されません。
インスタンス上のすべてのプロジェクトに対して有効なGitアクセスプロトコルを指定するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- 有効なGitアクセスプロトコルで、目的のプロトコルを選択します:
- SSHとHTTP(S)の両方
- SSHのみ
- HTTP(S)のみ
- 変更を保存を選択します。
GitLabは、GitLab CI/CDジョブトークンを使用して実行されるGitのクローンリクエストまたはフェッチリクエストに対して、HTTP(S)プロトコルの使用を許可しています。GitLab RunnerおよびCI/CDジョブにはこの設定が必要なため、SSHのみを選択していても、この動作は変わりません。
HTTP(S)用のGitクローンURLをカスタマイズする
- 提供形態: GitLab Self-Managed
プロジェクトのHTTP(S)用のGitクローンURLは、カスタマイズ可能です。この設定は、プロジェクトページに表示されるクローンパネルに影響します。次に例を示します:
- GitLabインスタンスが
https://example.comにある場合、プロジェクトのクローンURLはhttps://example.com/foo/bar.gitのようになります。 https://git.example.com/gitlab/foo/bar.gitのようなクローンURLにしたい場合は、https://git.example.com/gitlab/のように設定できます。
gitlab.rbでHTTP(S)用のカスタムGitクローンURLを指定するには、gitlab_rails['gitlab_ssh_host']に新しい値を設定します。GitLab UIから新しい値を指定するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- HTTP(S) 用のカスタムGitクローンURLに、ルートURLを入力します。
- 変更を保存を選択します。
RSA、DSA、ECDSA、ED25519、ECDSA_SK、ED25519_SK SSHキーのデフォルトを設定する
以下のオプションでは、SSHキーで許可されるタイプと長さを指定します。
各キータイプの制限を指定するには、次の手順に従います:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- RSA SSH keys(RSA SSHキー)に移動します。
- キータイプごとに、使用を完全に許可または禁止するか、次の長さのみを許可できます:
- 1024ビット以上
- 2048ビット以上
- 3072ビット以上
- 4096ビット以上
- 1024ビット以上
- 変更を保存を選択します。
プロジェクトのミラーリングを有効にする
GitLabでは、プロジェクトのミラーリングがデフォルトで有効になっています。無効にすると、すべてのリポジトリでプルミラーリングとプッシュミラーリングが機能しなくなります。この設定は、プロジェクトごとに管理者ユーザーのみが再度有効にできます。
インスタンス上でプロジェクトのメンテナーがプロジェクト単位でミラーリングを設定できるようにするには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > リポジトリを選択します。
- リポジトリのミラーリングを展開します。
- プロジェクトのメンテナーがリポジトリのミラーリングを設定できるようにするを選択します。
- 変更を保存を選択します。
全体で許可されたIPの範囲を設定する
管理者は、IPアドレス範囲をグループごとのIP制限と組み合わせることができます。全体で許可されたIPアドレスを使用すると、グループで独自のIPアドレス制限が設定されている場合でも、GitLabインストールの一部を機能させることができます。
たとえば、GitLabページデーモンが10.0.0.0/24の範囲で実行されている場合、その範囲を全体で許可します。グループのIPアドレス制限に10.0.0.0/24の範囲が含まれていない場合でも、GitLabページはパイプラインからアーティファクトをフェッチできます。
グループの許可リストにIPアドレス範囲を追加するには、次の手順に従います:
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- 全体で許可されたIPの範囲に、IPアドレス範囲のリストを指定します。このリストの仕様は次のとおりです:
- IPアドレス範囲の数に制限はありません。
- SSHまたはHTTPの認証済みIPアドレス範囲の両方に適用されます。認証タイプごとにこのリストを分けることはできません。
- 変更を保存を選択します。
グループおよびプロジェクトへの招待を禁止する
管理者は、管理者以外のユーザーがインスタンスのすべてのグループまたはプロジェクトにユーザーを招待することを禁止できます。これを設定すると、インスタンスのグループまたはプロジェクトにユーザーを招待できるのは管理者のみになります。
前提要件:
- 管理者である必要があります。
招待を禁止するには:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅でアバターを選択し、管理者を選択します。
- 設定 > 一般を選択します。
- 表示レベルとアクセス制御を展開します。
- Prevent group member invitations(グループメンバーの招待を禁止する)チェックボックスをオンにします。
- 変更を保存を選択します。