0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLabで「信頼はするけど、仕組みで担保する」を実現する機能まとめ

0
Last updated at Posted at 2026-08-04

GitLabで「信頼はするけど、仕組みで担保する」を実現する機能まとめ

はじめに

ソフトウェア開発チームでよく聞く言葉に「性善説でいこう」と「ルールで縛ろう」があります。どちらも極端だと問題が起きますが、GitLabには 「信頼はする、でも仕組みで担保する」 を実現するための機能が豊富に揃っています。

この記事では、そうした機能をティア別(Free / Premium / Ultimate)に整理して紹介します。

前提: この記事は GitLab Self-Managed を対象にしています。19.1時点。


機能一覧(ティア別)

機能 Free Premium Ultimate 概要
Protected branches ✅ ✅ ✅ 重要ブランチへのpush/merge制御
MR必須承認ルール △※ ✅ ✅ マージに承認を必須化(※Freeでも承認操作自体は可能だが、必須ルールとしての強制はPremium+)
CODEOWNERS — ✅ ✅ パス単位の責任者定義
Code Owner approval 必須化 — ✅ ✅ CODEOWNERSの承認を強制
Pipelines must succeed ✅ ✅ ✅ CI成功をマージの前提条件に
Merged results pipelines △ ✅ ✅ マージ結果を先読みしてCIを実行(merge前に衝突を検知)
Push rules — ✅ ✅ コミット・ブランチ名などをpre-receiveで制御
Reject unsigned commits — ✅ ✅ 署名なしコミットを拒否
DCO必須化 — ✅ ✅ Signed-off-by: trailerを必須化
Secret push protection — — ✅ secretをpre-receiveで検知・ブロック
MR approval policies — — ✅ セキュリティ結果などに応じた追加承認を強制
Protected environments — ✅ ✅ 本番環境などへのdeployを制限
Deployment approvals — ✅ ✅ deploy前に追加承認を要求
Audit events / audit log — ✅ ✅ DB/UI/API での記録・参照は Premium+、外部ストリーミングは Ultimate

△ = Free Self-Managed + Registration Features Program の条件付きで利用可(Merged results pipelines)
△※ = Freeでも承認操作自体は可能。ただし「必須承認ルール」としての強制はPremium+


ティア別の"できること"の広がり方

🟢 Free:最低限の安全網

Free でも Protected branches と Pipelines must succeed という2つの強力な機能が使えます。

Protected branches は、特定ブランチへの push / merge / force push / 削除を制御できます。「main ブランチには直接pushさせない」という最も基本的なガードレールがここで実現できます。

Pipelines must succeed は、CIが成功しない限りマージできないようにする merge check です。テストが通らないコードを本番に入れてしまうリスクを、仕組みとして防げます。

✅ Free でできる最低限のガードレール

main ブランチ
├── 直接push禁止(Protected branches)
└── CI通過必須(Pipelines must succeed)

🔵 Premium:「運用」を「仕組み」に寄せる

Premiumになると、開発フローをルールとして明示する機能が一気に増えます。

MR必須承認ルール

レビュアーの数や特定ユーザーの承認を必須化できます。「誰かがLGTMを押した」という運用ではなく、条件を満たすまでマージボタン自体が押せない状態を作れます。

CODEOWNERS + Code Owner approval 必須化

CODEOWNERS ファイルでパス・ディレクトリごとの責任者を定義し、そのオーナーの承認を protected branch 設定でロックできます。

# CODEOWNERS の例
/backend/  @backend-team
/infra/    @sre-team @lead-engineer
*.tf       @sre-team

インフラファイルを変更したときに、SREチームの承認が必ず必要になる、といった設定が可能です。

Push rules

pre-receive フックをGUIで設定できます。代表的なルール例:

  • コミットメッセージに特定フォーマットを強制(例:JIRA-XXXX: プレフィックス)
  • ブランチ名のパターンを制限
  • 特定ファイルのコミットを禁止
  • 署名なしコミットを拒否(Reject unsigned commits)
  • Signed-off-by: trailerを必須化(DCO)

これらはすべてpushの時点でサーバー側でチェックされるため、ローカルでのhookを無効化しても迂回できません。

Protected environments + Deployment approvals

本番環境へのデプロイを特定ロール・ユーザーに制限しつつ、さらにデプロイ前に承認を必要とする運用フローを組めます。「CIは通った、でも本番反映には人間の目が必要」というよくある要件をGitLabのフローに組み込めます。

🔴 Ultimate:セキュリティポリシーで強制する

Secret push protection

APIキーやトークンなどのシークレット情報を含むコミットを、pushの時点で自動検知してブロックします。「うっかり .env をコミットしてしまった」という事故を防ぐ最後の砦です。

Merge request approval policies

スキャン結果(SAST、依存関係の脆弱性など)やライセンスチェックに基づいて、条件付きで追加承認を自動的に強制できます。例えば「高リスクの脆弱性が検出されたMRにはセキュリティチームの承認が必要」といったポリシーをコードとして管理できます。


ティアと機能の関係を整理すると

Free
└── 「入れさせない / 通らせない」の基本制御

Premium
└── 「誰が / どんな条件で / 承認するか」を明文化・強制

Ultimate
└── 「セキュリティスキャン結果」を承認フローに組み込む

補足:Free Self-Managed の特例(Registration Features Program)

GitLab Free + Self-Managed + Enterprise Edition の組み合わせでは、Service Ping を有効にすると一部の有償機能を無料で利用できる「Registration Features Program」があります。

この表の中で該当する代表例は Merged results pipelines です。

ただし公式ドキュメントには以下の通り明記されています:

"Features introduced here do not remove the feature from its paid tier."

あくまで特例であり、機能の正式ティアが変わるわけではありません。Service Ping を許容できる環境かどうかを確認した上で判断してください。


まとめ

課題 対応機能
重要ブランチに直接pushさせたくない Protected branches
CIが通らないとマージできないようにしたい Pipelines must succeed
コードの責任者に必ずレビューさせたい CODEOWNERS + Code Owner approval
コミットの形式・内容を強制したい Push rules
本番デプロイに承認フローを設けたい Protected environments + Deployment approvals
シークレットの誤pushを防ぎたい Secret push protection
セキュリティスキャン結果を承認に連動させたい MR approval policies

「性善説でいこう」と「ルールで縛ろう」の間にある 「信頼はするけど、仕組みで担保する」。GitLabのこれらの機能を組み合わせることで、チームの自律性を保ちながら品質・セキュリティの底上げができます。

チームの規模やリスク許容度に合わせて、まずはFreeの機能から試してみてはいかがでしょうか。


この記事はGitLab Self-Managedを前提にしています。GitLab.comやDedicatedでは一部挙動が異なる場合があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?