GitHubには「誰が・何の権限で操作しているか」を示すトークンが複数ある。
| トークン | 発行者 | 用途 | 有効期間 |
|---|---|---|---|
| PAT(個人用アクセストークン) | ユーザー自身が手動発行 | CLI・APIでのパスワード代替 | 長期(要管理) |
| GitHub App トークン | GitHub App のインストール時に発行 | アプリによる自動操作・外部連携 | 短期(自動更新) |
GITHUB_TOKEN | GitHub が自動生成 | Actions ワークフロー内の認証 | ジョブの間だけ |
PAT(Personal Access Token)
- コマンドラインや API でパスワードの代わりに使う
- 自分のアカウントに紐づくため、権限が広くなりがち
- 長期間使う自動化には向かない → その場合は GitHub App を使う
- パスワードではなく PAT を使う理由:権限をスコープで絞れる・用途別に複数発行できる・漏れたときそのトークンだけ revoke すれば済む(パスワードを変えると全箇所に影響するのと対照的)
GitHub App
- GitHub の機能を拡張するためのツール
- アプリとして独立した ID を持つため、PAT より権限を細かく制御できる
- できることの例:Issue を自動で開く、Slack に通知する、PR にコメントする
- 別オーナーの Private リポジトリにもアクセスできる:インストールされたリポジトリであればオーナーをまたいでもアクセス可能(PAT は発行したユーザーがアクセスできるリポジトリのみ)
GITHUB_TOKEN(Actions 専用)
- Actions のワークフロー ジョブが始まると、GitHub が 自動で生成 して注入する
- ジョブが終わると失効する使い捨てトークン(漏れても被害が限定的)
- 権限はそのワークフローを含むリポジトリのみに限定される(他のリポジトリは操作不可)
- 明示的に発行・管理する必要がないため、Actions 内の操作はまずこれを使う