推測ではなくログから始める
GitHubアカウントにいつもと違う変化があったとき、まず有効なのは記憶から出来事を再構成するのではなく、自分で管理できる記録を取得することです。GitHubの個人セキュリティログがその記録です。
GitHubの個人セキュリティログには過去90日間の操作が含まれます。Source
ログは直近の期間に限られているため、早めにエクスポートしてください。期間外のイベントは後から現れることはなく、待っても取り戻せません。
ログの場所とフィルタできる内容
ログはアカウントのSettings内にあるArchivesのSecurity logから利用でき、actor、repository、actionなどのフィルタに対応しています。Source
生の量よりもフィルタが重要です。actor、repository、actionで絞り込めば、無関係な日常の操作をスクロールするのではなく、気になる期間と対象を切り出せます。
分析する前に非公開のコピーをエクスポートする
ExportメニューからJSONまたはCSVをダウンロードでき、対応するフィルタでエクスポート範囲を絞り込めます。Source
エクスポートしたファイルは機密情報として扱ってください。actorやactionを含むアカウント活動の記録であり、個人や組織の文脈が明らかになる可能性があります。非公開の場所に保管し、調査を直接手伝う人にだけ共有し、公開スレッドやイシュートラッカーに貼り付けないようにしてください。後でプラットフォームのサポートチームにコピーを渡す必要がある場合は、その質問に答える最小限のフィルタ済みエクスポートを共有してください。
インシデント年表のワークシートを作る
ログのエクスポートはイベントの一覧であり、物語ではありません。観測、解釈、未解決の疑問を分けておけるよう、ワークシートに変換しましょう。シンプルな構成で十分です。
| 列 | 記入内容 | 重要な理由 |
|---|---|---|
| Event | 何が起きたかの短いラベル | 後で行をざっと見やすくする |
| Time | 記録されたタイムスタンプ(タイムゾーンを明記) | 順序の間違いを防ぐ |
| Actor | 行為者として記録されたアカウントまたは識別子 | 記録された発生源を特定するもので、人物ではない |
| Action | ログに記録された操作内容 | 行を事実に保つ |
| Confidence | この行が関連し正しく読めている確度 | 確かな行と推測的な行を分ける |
| Open question | まだ確認が必要なこと | 仮定が事実に固まるのを防ぐ |
エクスポートからワークシートを埋め、関連があると判断したイベントごとに1行を記入します。Confidence列は正直に使いましょう。エクスポートから直接読んだ行は、気づいた変化から推測した行より確度が高いです。変化に気づいたのに一致するイベントが見つからない場合は、結論ではなく未解決の疑問として記録してください。
観測された操作と、誰が行ったかの証明を分ける
ここが多くの年表で間違えられる部分です。ログのエントリは、記録が何を起きたと述べているか、どのactor識別子が付いているかを示します。それ自体では、キーボードの前にいたのがどの人間かを確定しません。共有デバイス、使い回されたセッション、侵害された認証情報、正当な自動化は、いずれも人が操作しているように見えるエントリを生み出し得ます。
確認する際は、頭の中で2つの列を意識してください。
- 観測されたこと: 記録されたイベント、時刻、actor、action。
- 確定していないこと: 物理的に誰が行ったか、なぜか、actor識別子が想定する人物と対応するか。
結論は独立した証拠がある場合にのみ2つ目のカテゴリに書いてください。それまでは未解決の疑問の列に属します。
イベントが見つからないことを「何もなかった証拠」と読まない
エクスポートの空白は不活動の証拠ではありません。ログは定められた直近の期間を対象とし、エクスポートは適用したフィルタを反映します。あるリポジトリでフィルタした場合、他のリポジトリのイベントは現れません。気になる変更が期間外に起きたなら、そこには存在しません。不在は安心材料ではなく、調査すべきギャップとして記録してください。
アクセスを失った場合
ログにたどり着くためにサインインできない場合は、外部から出来事を再構成しようとするのをやめ、GitHubの公式アカウント復旧プロセスを使ってください。復旧はアカウントを確認できる状態に戻す道です。第三者にアカウントへのアクセスを代行させないでください。また、パスワードリセットだけで調査が完了したとみなさないでください。アクセスが戻ったら、ログをエクスポートし、変更前後の期間について年表を作成します。
短いチェックリスト
- 90日の期間が先に進む前にセキュリティログをエクスポートする。
- エクスポートを非公開で保管し、エクスポートの日時とタイムゾーンを記録する。
- フィルタを適用して気になる期間と対象を切り出し、必要なら絞り込んだビューをエクスポートする。
- event、time、actor、action、confidenceの列でワークシートを作る。
- 各行を観測か推測かに分類し、未解決の疑問は分けておく。
- 見つからないイベントはギャップとして記録し、何もなかった証拠とはしない。
- アクセスを失った場合はまず公式の復旧を使い、その後ステップ1に戻る。
次に役立つステップ
年表ができたら、次によくある疑問は、同じ名前や識別子に結びついた他のアカウントはどれか、というものです。これはセキュリティログを読むのとは別の作業で、独自の方法があります。名前に関連するすべてのアカウントを見つける方法を参照してください。一方の調査結果が他方の証拠と取り違えられないよう、2つの調査は分けておきましょう。