リポジトリを保護する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
リポジトリ保護は、ワークフローを維持しながら、コードベースへの不正な変更を防ぎます。これらの制御は、一般的な開発における以下の課題解決に役立ちます:
- 本番環境または保護ブランチへの意図しないコミット。
- コミット履歴における機密データの露出。
- コードレビュープロセスのバイパス。
- 重要なファイルへの不正な変更。
- 未検証のコミット作成者。
- 準拠していないコードがmainブランチに入ること。
さまざまな保護方法を組み合わせることで、組織の標準を適用するための検証ポイントを作成します。
上位GitLabティアでは、包括的なセキュリティスキャンを適用し、コンプライアンスを強制し、複数のプロジェクトやグループにわたる脆弱性を管理するための追加ツールにアクセスできます。これらの環境では、一部の保護方法がすでに組織によって適用されている場合があります。これらの高度なセキュリティツールの詳細については、アプリケーションの保護を参照してください。
保護方法
GitLabは、リポジトリを保護するために連携する複数の保護方法を提供します。各方法は異なるセキュリティニーズに対応し、包括的な保護のために組み合わせることができます。
| 保護方法 | 説明 | 使用するケース | インスタンス | グループ | プロジェクト |
|---|---|---|---|---|---|
| 保護ブランチ | ブランチの権限を制御し、コードの安定性と品質を確保します。 | 誰がプッシュおよびマージできるかを制御し、誤った削除を防ぎ、レビューを強制し、または強制プッシュの権限を規制します。 | いいえ | ||
| マージリクエスト承認 | 変更がマージされる前に承認を必要とするレビュープロセス。 | コードレビューを要求し、承認ルールを作成し、または承認設定を構成します。 | いいえ | ||
| プッシュルール | リポジトリに入る前にコミット、ファイル、タグを検証するプリレシーブGitフック。 | コミットの内容を評価し、ブランチ名のルールを強制し、タグの削除を防ぎ、または署名されたコミットを要求します。 | |||
| コードオーナー | あなたのコードベース内の特定のファイルやディレクトリに対する専門知識を持つ者を定義します。 | 特定のファイルへの変更に対して専門家による承認を要求するか、コードメンテナンスの責任者を特定します。 | いいえ | いいえ | |
| ステータスチェック | マージリクエストのステータスを検証する外部システムへのAPIコール。 | サードパーティのワークフローツールと統合するか、外部の品質要件に対して検証します。 | いいえ | いいえ |
ブランチルール
複数の保護方法を管理するために、GitLabは、保護ブランチ、承認ルール、およびステータスチェックのための統一されたブランチルールインターフェースを提供します。プロジェクト設定のブランチルールページを使用して、すべてのブランチ保護を1つの場所から設定し、複数のブランチにわたる保護ステータスを表示し、複雑な保護の組み合わせを管理します。
グループ保護の場合、グループ設定で保護ブランチとプッシュルールを設定します。ブランチルールページはプロジェクトでのみ利用可能です。グループルールはグループ内のすべてのプロジェクトに適用され、作成したプロジェクト固有のルールと連携して機能します。
保護戦略を設定する
あなたのワークフローとセキュリティ要件に基づいて保護方法を選択してください。以下は戦略の例です。
ベースライン保護
すべてのリポジトリで一貫したセキュリティ標準を確立するには:
- グループのデフォルトブランチ保護を設定して、新しいプロジェクトを自動的に保護します。
- 誰がプッシュおよびマージすることができるかを制御するために、保護ブランチをセットアップします。
- ピアレビューを強制するために、マージリクエストの承認を要求します。
包括的な保護
レイヤー化された保護で重要なプロジェクトを保護するには:
- 誰がプッシュおよびマージすることができるかを制御するために、保護ブランチと承認ルールをセットアップします。
- 機密ロジックを含むファイルに対して、コードオーナーの承認を要求します。
- 作成者のIDを検証するために、署名されたコミットを強制します。
- 自動テストに対して検証を行うためにステータスチェックを追加します。
- すべてのプロジェクトで標準を適用するために、グループにプッシュルールを適用します。
ターゲットを絞った保護
特定のセキュリティ要件に対応するには:
- ファイルがドメイン専門知識のレビューを必要とする場合に、コードオーナーの承認を要求します。
- コミットの標準とコンテンツの制限を維持するために、プッシュルールを強制します。
- 外部検証が必要な場合にステータスチェックを追加します。
- ワークフロー固有の要件のために承認ルールを設定します。
始める
前提条件:
- プロジェクトのメンテナーまたはオーナーロール、あるいはグループのオーナーロールが必要です。
- どのブランチに保護が必要かを特定します。
- あなたのコンプライアンスとセキュリティ要件を決定します。
リポジトリ保護を設定および実装するには:
あなたのスコープを選択してください:
- グループルールの場合、グループの設定 > リポジトリに移動します。
- プロジェクト固有のルールの場合、プロジェクトの設定 > リポジトリ > ブランチルールに移動します。
ベースライン保護を設定する:
- デフォルトブランチおよびその他の重要なブランチのために保護ブランチを作成します。
- グループ設定で: 設定 > リポジトリ > 保護ブランチ。
- プロジェクト設定で: 設定 > リポジトリ > ブランチルール。
- 設定 > マージリクエスト > マージリクエストの承認でマージ権限と承認要件を設定します。
- デフォルトブランチおよびその他の重要なブランチのために保護ブランチを作成します。
レビュー要件を追加する:
- 特定のファイルについて、
CODEOWNERSファイルにコードオーナーを定義します。 - 設定 > マージリクエストで承認ルールをセットアップします。
- 特定のファイルについて、
セキュリティ制御を有効にする:
- プッシュルールを設定します:
- グループの場合: 設定 > リポジトリ > プッシュルール。
- プロジェクトの場合: 設定 > リポジトリ > プッシュルール。
- 設定 > リポジトリ > プッシュルール > 署名されていないコミットを拒否で署名されたコミットを有効にします。
- プッシュルールを設定します:
あなたの設定をテストします:
- テストマージリクエストを作成します。
- 保護ルールが正しくトリガーすることを確認します。
- 結果に基づいて設定を調整します。