-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
リポジトリ設定の必要性
日本語をブラッシュアップする。
タイトル:現状の課題 (リポジトリ設定の必要性)
課題①:main ブランチに直接 push できてしまう
- 問題点: テストやレビューを通さずにコードが反映されてしまう
- 起きること: 不具合や設定ミスがそのまま本番コードに入るリスクがある
- 対応の方向性: main ブランチへの直接 push を禁止し、必ず PR 経由にする
課題②:プルリクエスト時のチェックが必須になっていない
- 問題点: テストやセキュリティチェックを実行せずにマージできてしまう
- 起きること: 品質やセキュリティが担保されないまま変更が取り込まれる
- 対応の方向性: PR マージ前にテスト/セキュリティスキャン/ポリシーチェックを必須にする
課題③:管理者権限の付与が適切に制御されていない
- 問題点: 管理者権限を付与すべきでない人物にも権限が付与されている
- 起きること: 保護設定を回避されてしまい、意図しない変更やルール無視の運用が発生する
- 対応の方向性: 管理者権限は最小限の担当者のみに付与する
課題④:コードレビューが省略されてしまう
- 問題点: レビューをせずに変更を取り込めてしまう
- 起きること: 品質低下やセキュリティ問題を見逃す可能性が高まる
- 対応の方向性: PR に最低 1 人以上の承認レビューを必須にする
解決策
日本語をブラッシュアップする。
-
保護されたブランチ(Branch Protection Rules)
従来から提供されているブランチ保護機能。
ブランチ単位での設定が可能で、設定が比較的簡単なため広く利用されている。 -
ルールセット(Repository Rulesets)
新しく提供されたリポジトリ保護機能。
複数のブランチやタグに対して、より柔軟かつ統一的にルールを適用できる。
本プラクティスでは、より柔軟で包括的な管理が可能な「ルールセット(Repository Rulesets)」を採用し、リポジトリ全体の保護を強化する。
ルールセットによるリポジトリ保護
ルールセットの主要機能
- Require a pull request before merging: マージ前にプルリクエストを必須とし、レビューの実施や承認者数を設定できる
- Require status checks to pass before merging: CI/CD(テスト、セキュリティスキャン、ポリシーチェックなど)が成功しない限り、マージを許可しない
- Block force pushes: force push(履歴を書き換える強制プッシュ)を禁止する
- Restrict deletions: ブランチの削除を制限し、誤削除を防止する
プラクティス
修正
※GitHub無料プランのprivateリポジトリを利用している場合はルールセットの適用ができません。本プラクティスは確認のみ実施し、クローズしてください。
ルールセットを設定してGitHubリポジトリを保護します。
本プラクティスでは、人間の操作と ArgoCD ImageUpdaterの操作を制御するルールを設定します。
GitHubのWEB画面 > Settings > Branches > Add branch ruleset より、以下のルールセット追加を行います。
人間の操作/ArgoCD ImageUpdaterの操作の両方を制御するルールを設定する
- リポジトリの削除を防ぐルールを設定
- ルールセット名: main-branch-delete-protection
- Enforcement status: Activeに設定
- Bypass list: Repository adminを指定
- 対象ブランチ: mainブランチを指定
- 以下のルールを有効化
- "Restrict deletions"
ArgoCD ImageUpdaterの操作を制御するルールを設定する
- リポジトリの削除/mainブランチへの直接プッシュを防ぐルールを設定
- ルールセット名: main-branch-push-protection
- Enforcement status: Activeに設定
- Bypass list: ArgoCDで使用したGitHub Appsを指定 ※Bypass を設定しない場合、ArgoCD ImageUpdater による自動更新が停止するため注意
- 対象ブランチ: mainブランチを指定
- 以下のルールを有効化
- "Restrict deletions"
- "Block force pushes"
- "Require a pull request before merging"
- Required approvals: 1
- "Dismiss stale pull request reviews when new commits are pushed"
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels