Skip to content

指摘 追加課題 運用保守 リポジトリ設定 #182

@skwt20

Description

@skwt20

リポジトリ設定の必要性

日本語をブラッシュアップする。

タイトル:現状の課題 (リポジトリ設定の必要性)

課題①: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"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions