lvncerpedia

How to Protect OSS to Push

GitHub で誰でもリポジトリに自由に push できる状態は、セキュリティや運用上の大きな問題につながります。

以下に、その理由と対策を説明します。

なぜ問題か?

  1. 不正なコードの混入 誰でも push できると、悪意のあるユーザーがバックドアやマルウェアを含むコードを追加するリスクがあります。

  2. 意図しない破壊的な変更 誰かが誤って重要なコードを上書き・削除したり、バグを引き起こす変更を加えたりする可能性があります。

  3. ソースコード漏洩のリスク プロジェクトがプライベートの場合、外部ユーザーがアクセスできるとソースコードが漏洩する恐れがあります。

適切な対策

  1. プルリクエスト(Pull Request)を活用する 開発者はmainやmasterブランチに直接 push できないようにし、プルリクエストを経由することでコードレビューを徹底します。

  2. ブランチ保護ルールの設定 GitHub の「Branch Protection Rule」を使い、重要なブランチ(例: main)への直接 push を禁止し、レビューを要求する設定にします。 設定例:

    • コードレビューの承認が必要
    • CI/CD パスを通過しないとマージ不可
  3. チームごとのアクセス権限の管理 リポジトリに対する権限をRead、Write、Adminのように厳密に管理し、最低限の権限を与えます。

  4. 二要素認証(2FA)の有効化 リポジトリにアクセスするメンバーには、2FA の有効化を必須にすることで不正アクセスを防ぎます。

ブランチ保護ルールの設定手順

  1. GitHub のリポジトリページで、Settings → Branchesに移動。
  2. Branch Protection RulesでAdd Ruleをクリック。
  3. Branch name patternにmainやmasterを指定。
  4. 以下のオプションを有効化:
    • Require a pull request before merging(プルリクエスト必須)
    • Require status checks to pass before merging(CI/CD 通過必須)
    • Include administrators(管理者にも適用)

上記のようにアクセスを適切に管理することで、セキュリティと運用のリスクを大幅に軽減できます。 開発規模や目的に合わせて、柔軟にルールを設定するのが理想です。