How to Protect OSS to Push
GitHub で誰でもリポジトリに自由に push できる状態は、セキュリティや運用上の大きな問題につながります。
以下に、その理由と対策を説明します。
なぜ問題か?
-
不正なコードの混入 誰でも push できると、悪意のあるユーザーがバックドアやマルウェアを含むコードを追加するリスクがあります。
-
意図しない破壊的な変更 誰かが誤って重要なコードを上書き・削除したり、バグを引き起こす変更を加えたりする可能性があります。
-
ソースコード漏洩のリスク プロジェクトがプライベートの場合、外部ユーザーがアクセスできるとソースコードが漏洩する恐れがあります。
適切な対策
-
プルリクエスト(Pull Request)を活用する 開発者は
mainやmasterブランチに直接 push できないようにし、プルリクエストを経由することでコードレビューを徹底します。 -
ブランチ保護ルールの設定 GitHub の「Branch Protection Rule」を使い、重要なブランチ(例:
main)への直接 push を禁止し、レビューを要求する設定にします。 設定例:- コードレビューの承認が必要
- CI/CD パスを通過しないとマージ不可
-
チームごとのアクセス権限の管理 リポジトリに対する権限を
Read、Write、Adminのように厳密に管理し、最低限の権限を与えます。 -
二要素認証(2FA)の有効化 リポジトリにアクセスするメンバーには、2FA の有効化を必須にすることで不正アクセスを防ぎます。
ブランチ保護ルールの設定手順
- GitHub のリポジトリページで、
Settings→Branchesに移動。 Branch Protection RulesでAdd Ruleをクリック。Branch name patternにmainやmasterを指定。- 以下のオプションを有効化:
- Require a pull request before merging(プルリクエスト必須)
- Require status checks to pass before merging(CI/CD 通過必須)
- Include administrators(管理者にも適用)
上記のようにアクセスを適切に管理することで、セキュリティと運用のリスクを大幅に軽減できます。 開発規模や目的に合わせて、柔軟にルールを設定するのが理想です。