サーバー環境(GCEなど)でGitを操作する際、クレデンシャル漏洩のリスクを考慮して、SSHキーではなく個人アクセストークン(PAT)を利用する運用はセキュリティ面で非常に有効です。

しかし、これまで一般的に使われてきた「Classic PAT」には、権限の範囲において少し悩ましい課題がありました。

今回は、現在GitHubが推奨しているよりセキュアな「Fine-grained PAT」のメリットと、移行のための具体的な設定手順を備忘録としてまとめます。

スポンサーリンク

従来のClassic PATが抱える課題

これまでClassic PATで git pullgit push を行う場合、主に repo 権限を、加えてGitHub Actions用に workflow 権限を付与するのが定石でした。

しかし、Classic PATには「対象のリポジトリを絞り込めない」という構造上の弱点があります。

GCEなどの外部サーバーでトークンを利用する場合、万が一サーバーへ侵入されて ~/.git-credentials が盗まれてしまうと、そのトークンを使ってアカウント内のすべての非公開リポジトリに対してアクセスが可能になってしまいます。

Fine-grained PATのメリット

この課題を解決するのが「Fine-grained Personal Access Tokens(きめ細かなPAT)」です。

以下の点でセキュリティが大幅に向上します。

  1. リポジトリの限定: アクセス権を特定のリポジトリ(例: slack-send-message など)のみに限定できます。
  2. 権限の最小化: 機能ごとに必要最低限の権限を付与できます。
  3. 被害の封じ込め: 万が一トークンが漏洩しても、被害を指定したリポジトリのみに限定できます。

Classic版の repo 権限には「Issueの管理」や「リポジトリ設定の変更」など、単なるソースコードの取得・反映には不要な権限まで含まれていました。Fine-grained PATを利用することで、「余計な操作は一切できない」安全なトークンを発行できます。

スポンサーリンク

Fine-grained PATの発行・設定手順

次回のトークン更新時や、新規サーバー構築時に推奨される設定手順です。今回は、Classic PATの repo および workflow 権限と同等の操作を許可しつつ、対象を絞り込む設定を行います。

1. 新規作成画面へアクセス

GitHub右上のプロフィールアイコンから [Settings] を開き、左メニュー一番下の [Developer settings] > [Personal access tokens] > [Fine-grained tokens] を選択。「Generate new token」をクリックします。

2. 対象リポジトリの制限 (Repository access)

最も重要な設定です。全リポジトリへのアクセスは許可せず、必要なものだけに絞ります。

  • Repository access: Only select repositories を選択
  • Selected repositories: 対象となるリポジトリを検索して追加

3. 操作権限の指定 (Repository permissions)

「Repository permissions」を展開し、以下の2項目を Read and write に変更します。

  • Contents: ソースコードの読み書き(git pull / git push)に必要
  • Workflows: GitHub Actionsの設定ファイル(.github/workflows/ 以下)の更新に必要 (※Workflowsを有効にすると、依存関係によりContents等も自動的に有効になります)

その他の権限は、デフォルトのまま(No access)で問題ありません。

4. トークンの生成と適用

画面下部の「Generate token」をクリックし、発行された github_pat_ から始まるトークンをコピーします。 あとは、GCE等のサーバー上でGit操作を行う際に、パスワードとしてこの新しいトークンを入力するだけです。

まとめ

外部サーバーでのGit認証において、クレデンシャルの漏洩リスクは常に考慮すべき課題です。 SSH秘密鍵の配置を避け、さらにClassic PATからFine-grained PATへと移行することで、万が一の際の影響範囲を極小化し、より安全な運用が可能になります。

現在Classic PATを利用している方は、ぜひFine-grained PATへの移行を検討してみてください。


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事