見覚えのないSSHキーが実際に意味するもの
GitHubアカウントに一覧表示されるSSHキーは、そのアカウントとして認証できる資格情報です。見覚えのないものが表示されているのは調査する理由であり、結論ではありません。そのキーは、忘れていたデバイス、以前のチームメンバーの設定、古いノートPC、あるいはあなたが認可していない何かに属している可能性があります。安全なアプローチは、何かを削除する前に所有者と目的を特定することです。正規のワークフローが使用しているキーを削除すると、そのワークフローが壊れてしまいます。
GitHubはいくつかのものを別々のアクセス経路として扱います。個人のSSHキー、リポジトリに紐づくデプロイキー、認可済みのOAuthアプリケーションは、それぞれ異なるスコープを持つ別の仕組みです。1つを監査しても、他のものは監査されません。
GitHubは、SSHキー、デプロイキー、認可済みアプリケーションを別々のアクセス経路として監査することを推奨しています。Source
削除前後のチェックリスト
これを作業リストとして使ってください。「削除前」の列は事実を集めること、「削除後」の列は結果を確認することについてです。
| 段階 | チェック項目 | 重要な理由 |
|---|---|---|
| 削除前 | アカウントに表示されるすべてのSSHキーを、タイトルと表示されている指紋や作成の詳細とともに一覧にする | どの項目が不明かを判断する前に全体像が必要 |
| 削除前 | 各キーを、名前を挙げられるデバイスや人物と照合する | 名前を特定できないキーこそが疑問の対象 |
| 削除前 | 現在のワークフロー(ビルド、デプロイ、共有マシンなど)がそのキーに依存していないか確認する | 使用中のキーを削除するとそのワークフローが壊れる |
| 削除前 | 同じアクセスがデプロイキーや認可済みアプリケーションを通じても付与されていないか確認する | これらは別の経路であり、独自のレビューが必要 |
| 削除前 | 処置(保持、置き換え、削除)を決める | 古くなったキーは単純な削除ではなく置き換えが必要な場合がある |
| 削除後 | そのキーがアカウントのSSHキー一覧に表示されなくなったことを確認する | 表示される一覧が最初の確認手段 |
| 削除後 | 影響を受けたワークフローが引き続き動作するか、置き換えの経路があることを確認する | 削除によって正規のプロセスが行き詰まってはいけない |
| 削除後 | キーの素材自体は記録せず、何をいつ削除したかをメモする | 記録は今後の監査に役立つ |
アカウントSSHキーの削除
削除自体はアカウント設定で行います。GitHubの文書化された手順は、Settings、次にSSH and GPG keysで、アカウントSSHキーを確認し、認識できない、または古くなったものを削除するというものです。
SettingsのSSH and GPG keysで、アカウントSSHキーを確認し、認識できない、または古くなったものを削除します。Source
範囲は狭く保ってください。この手順はアカウントSSHキーを削除するものです。デプロイキーの削除、認可済みアプリケーションの取り消し、リポジトリ内容の変更は行いません。監査でそれらの領域に問題が見つかった場合は、それぞれ別のタスクとして対処してください。
削除前に考慮すべき正規のワークフロー
見慣れないキーがすべて敵対的なものとは限りません。行動する前に、以下の一般的な状況を検討してください。
- もう使っていないデバイス。 古いノートPCや作業マシンにキーが登録されたままの場合があります。デバイスがまだ手元にあれば照合を確認できます。なければ、通常は削除が正しい判断です。
- 共有またはチームのマシン。 他の誰かが正当な目的でキーを追加した可能性があります。削除する前に所有者に確認してください。
- デプロイや自動化の設定。 スケジュールされたプロセスがキーを使用している場合、削除するとそのプロセスが停止する可能性があります。まず依存関係を特定してください。
- 自分で作成して忘れたキー。 タイトルや作成日は記憶を呼び起こすことがよくあります。過去の自分の設定と照合できれば、削除ではなく保持や置き換えを選んでもよいでしょう。
迷ったときのより安全な順序は、特定し、自分が管理するキーに置き換え、その後で古い項目を削除することです。これにより、不明な経路を閉じる間も動作する経路を維持できます。
このプロセスが行わないこと
SSHキーの削除は的を絞った行動であり、アカウント全体のクリーンアップではありません。以下は行いません。
- OAuthアプリケーションやその他の認可済み連携を取り消すこと。
- リポジトリからデプロイキーを削除すること。
- 誰がなぜそのキーを作成したかを証明すること。
- 他のアクセス経路が存在しないことを確認すること。
これらはそれぞれ別のチェックとして扱ってください。監査は小さく検証可能な手順の集合であり、単一のスイッチではありません。
ユーザー名検索が適する場面と適さない場面
公開ユーザー名検索は、既知のハンドルが公開プラットフォーム全体で何と関連付けられているように見えるかを確認するのに役立ちます。これは、アイデンティティやオンライン上の足跡を理解しようとするときの有用な文脈です。しかし、GitHubアカウント設定を検査する方法ではなく、SSHキーの所有者を教えることもできません。TruthsSeekが取り上げるアプリTraceSeekは、既知の公開ユーザー名を3,000+のプラットフォームで確認し、最初のスキャンを20–30秒で返します。最初のスキャンは無料です。GitHub設定を操作するものではなく、公開された一致は手がかりであり、所有の証明ではありません。
資格情報を安全に扱う
秘密鍵、トークン、完全な資格情報をチャット、イシュー、スクリーンショット、フォーラム投稿に公開しないでください。キーの特定に助けが必要な場合は、タイトルや表示されている指紋など秘密でない詳細のみを、信頼できる相手にだけ共有してください。キーが露出した疑いがある場合、アカウントから削除することは1つの手順です。それに依存していたものをローテーションすることは、意図的に行うべき別の判断です。