実際に削除しているもの
個人アクセストークン(PAT)は、GitHubアカウント上で操作できる複数の認証情報のうちの1つです。何かを削除する前に、どの種類の認証情報を見ているのかを知っておくと役立ちます。削除手順も副作用も種類によって異なるからです。
| 認証情報 | 通常の役割 | 管理場所 | 削除の影響 |
|---|---|---|---|
| 個人アクセストークン(fine-grainedまたはclassic) | スクリプト、ツール、CIがスコープ付き権限で自分の代わりに操作できるようにする | Settings → Developer settings → Personal access tokens | そのトークンを使用しているものすべて、およびそのトークンが作成したデプロイキー |
| OAuth認可 | アカウント上で操作することを承認したサードパーティアプリ | Settings → Applications(認可済みOAuthアプリ) | そのアプリのアクセス権。アプリ自体は削除されない |
| SSHアカウントキー | アカウントのSSH経由のGit操作を認証する | Settings → SSH and GPG keys | そのキーに依存するSSHアクセス |
| ブラウザセッション | ブラウザ内の有効なサインインセッション | サインアウト操作とセッション設定 | そのセッションのみ。トークンでもキーでもない |
この記事で扱うのは最初の行です。他の行を挙げたのは、混同しないためです。OAuth認可やSSHキーを削除しても個人アクセストークンは削除されず、トークンを削除してもSSHキーは失効せずブラウザセッションも終了しません。
ステップ1:値を露出せずにトークン一覧を作る
目的はトークン名とそれぞれの使用場所の一覧であり、トークン文字列の一覧ではありません。トークンの値は秘密情報として扱い、メモ、チケット、チャットにコピーしないでください。
- GitHubアカウント設定を開き、Developer settings、次にPersonal access tokensへ進みます。Fine-grained tokensとTokens classicは別々に表示されるため、両方を確認してください。
- 各トークンについて、トークン名、種類(fine-grainedまたはclassic)、GitHubが表示する目的や有効期限に関する注記だけを記録します。
- 各トークンについて、使用されていると思う場所を書き留めます。CIジョブ、デプロイスクリプト、ローカルツール、スケジュールタスク、サードパーティ連携、または思い当たらない場合はその旨。
- 所在が分からないトークンには印を付けます。所在不明のトークンは確認候補であり、自動的に削除する対象ではありません。何かがまだ依存している可能性があります。
簡単な作業用の表で十分です。
| トークン名 | 種類 | 既知の利用元 | 最後に確認された使用 | 判断 |
|---|---|---|---|---|
| example-deploy | Fine-grained | CIデプロイジョブ | 不明 | 削除前にジョブを確認 |
| example-old-script | Classic | 見つからない | 古い | 確認してから削除 |
この表にトークンの値を貼り付けないでください。利用元がトークンを保存している場合は、秘密情報を読み直すのではなく、そのシステム自体の設定を確認してください。
ステップ2:削除前に依存する自動化を確認する
トークンを削除すると、まだそれで認証しているものは壊れます。削除する前に、既知の各利用元を確認してください。
- CI設定、デプロイスクリプト、スケジュールジョブの中に、トークン名またはそれを保持するシークレットストアのエントリへの参照がないか検索します。
- トークンの権限が利用元の必要とするものと一致しているか確認します。使われていないように見えるトークンが、小さなジョブにとって唯一動作する認証情報である場合もあります。
- トークンごとに判断します。保持する、より狭い権限の認証情報に置き換える、削除する、のいずれかです。利用元を確認できない場合は、推測せずに一旦止めてください。
GitHubは、最初に確認する価値のある特定の依存関係を文書化しています。デプロイキーを作成した個人アクセストークンは、そのデプロイキーにリンクされています。
GitHubは、デプロイキーを作成した個人アクセストークンを削除すると、そのデプロイキーも削除されると警告しています。出典
この警告は限定的です。そのトークンが作成したデプロイキーに適用されます。どのトークンを削除してもアカウント上のすべてのSSHキー、すべてのデプロイキー、すべての連携に影響するという意味ではありません。広範な影響を想定するのではなく、特定のトークンの履歴とリポジトリのデプロイキーを確認してください。
ステップ3:トークンを削除する
トークンを削除しても安全だと確認できたら、GitHubが文書化している手順は次のとおりです。
GitHubの個人アクセストークンの削除手順は、Settings、Developer settings、Personal access tokens、続いてFine-grained tokensまたはTokens classicを開き、Deleteを選ぶという流れです。出典
削除後は、うまくいったと決めつけずに結果を確認してください。
- その種類の一覧にトークンがもう表示されないことを確認します。
- 利用元として特定した自動化を実行またはトリガーし、まだ認証できるか確認します。失敗した場合は、見落としていた依存関係が見つかったことになります。古い値を使い回すのではなく、自分で管理する新しい認証情報でアクセスを復旧してください。
- 削除したトークンがデプロイキーを作成していた場合は、リポジトリのデプロイキーを確認し、文書化された削除が起きたこと、および他のキーに影響がないことを確かめます。
想定しておく失敗パターン
| 状況 | 対応 |
|---|---|
| 削除後にCIジョブが失敗する | どのシークレットを使っていたかを特定し、ジョブの所有者を確認し、通常の手順で代替の認証情報を発行する |
| トークンの利用元が見つからない | 推測で削除しない。まず設定ファイルとシークレットストアを検索し、確認できるまでトークンを保持する |
| デプロイキーが消えた | トークンが作成した場合に文書化されている結果である。リポジトリがまだ必要とするなら、意図的にキーを再作成する |
| 認証情報がトークンかOAuthアプリか分からない | 表示されている設定セクションを確認する。両者は別々に管理されている |
このチェックリストが扱わないこと
このガイドは、認証情報のローテーション、新しいトークンの発行、権限の変更については説明しません。これらの手順は自分の環境とGitHubの現在のインターフェースに依存するため、実行時に確認してください。また、OAuth認可、SSHアカウントキー、ブラウザセッションの削除については、それらが別物であると述べるにとどめ、扱いません。トークンを削除するとその認証情報は削除されますが、それだけで接続先サービスが保持するデータが消去されたと証明されるわけではありません。
ユーザー名検索が役立つ場面とそうでない場面
今回の整理が、ユーザー名で公開されている情報を広く見直す作業の一環である場合、TraceSeekは3,000+のプラットフォームにわたる既知の公開ユーザー名を確認する別のアプリです。公開されている一致を報告しますが、それは所有の証明ではなく手がかりであり、アカウントへのサインイン、アカウント設定の変更、トークンの削除、実在の身元確認はできません。非公開アカウントへのアクセスや、何かの削除を保証するツールでもありません。この記事のトークン作業はGitHubの設定で行うものであり、検索アプリで行うものではありません。