先從記錄著手,不要憑猜測
當 GitHub 帳號上出現看起來不太對勁的變化時,有用的第一步是取出你能掌控的紀錄,而不是憑記憶重建事件。GitHub 的個人安全性記錄就是這份紀錄。
GitHub 的個人安全性記錄包含最近 90 天內的動作。來源
由於記錄只涵蓋近期範圍,請儘早匯出。落在這個範圍之外的事件之後不會出現,你也無法靠等待把它們找回來。
記錄的位置與可用的篩選條件
這份記錄位於帳號「Settings」中的「Archives」→「Security log」,並支援依操作者、儲存庫與動作等條件篩選。來源
篩選條件比原始資料量更重要。依操作者、儲存庫或動作縮小範圍,能讓你聚焦關心的期間與層面,而不必在一堆無關的日常活動中捲動瀏覽。
分析之前,先匯出私人副本
「Export」選單可下載 JSON 或 CSV;支援的篩選條件能縮小匯出範圍。來源
請把匯出檔視為敏感資料。它包含帳號活動紀錄,包括操作者與動作,可能透露個人或組織相關背景。請存放在私密位置,只與直接協助你調查的人分享,避免貼到公開討論串或議題追蹤系統。若之後需要把副本交給平台支援團隊,請提供能回答對方問題、範圍最窄的篩選匯出檔。
建立事件時間軸工作表
記錄匯出檔是一份事件清單,不是敘事。請把它轉成工作表,讓觀察、解讀與待釐清問題各自分開。簡單的結構就很夠用:
| 欄位 | 填入內容 | 為什麼重要 |
|---|---|---|
| 事件 | 為發生的事取個簡短標籤 | 方便日後快速掃讀 |
| 時間 | 記錄下來的時間戳,並註明時區 | 避免排序錯誤 |
| 操作者 | 記錄中顯示的執行帳號或識別碼 | 指出紀錄來源,而非特定個人 |
| 動作 | 記錄所稱已完成的動作 | 讓該列維持事實陳述 |
| 信心程度 | 你有多確定這一列相關且解讀正確 | 區分強證據與推測 |
| 待釐清問題 | 你還需要查證什麼 | 避免假設變成事實 |
從匯出檔填寫工作表,每個你判斷為相關的事件各佔一列。信心程度欄請誠實填寫:直接從匯出檔讀到的列,比從你注意到的變化推論出來的列更可靠。若你注意到某項變化卻找不到對應事件,請把它記為待釐清問題,而不是結論。
把觀察到的動作與「是誰做的」證明分開
這是多數時間軸最容易出錯的地方。記錄中的一筆條目只告訴你紀錄所稱發生的事,以及附帶的操作者識別碼。它本身無法確認當時坐在鍵盤前的是哪個人。共用裝置、重複使用的工作階段、遭竊的憑證與合法的自動化流程,都可能產生看起來像有人在操作的條目。
檢視時,請在腦中保留兩欄思考:
- 已觀察: 記錄下的事件、時間、操作者與動作。
- 未確立: 實際由誰執行、為什麼,以及操作者識別碼是否對應你以為的那個人。
只有在取得獨立證據後,才把結論寫進第二類。在那之前,它們都屬於待釐清問題欄。
別把缺少事件當成什麼都沒發生的證明
匯出檔中的空白不代表沒有活動。記錄只涵蓋明確的近期範圍,匯出檔也只反映你套用的篩選條件。若你依儲存庫篩選,其他儲存庫的事件就不會出現。若你擔心的變化發生在範圍之外,它也不會在裡面。請把「沒有出現」記為待調查的缺口,而不是安心保證。
如果你已失去存取權
如果你完全無法登入以取得記錄,請停止從外部重建事件,改用 GitHub 官方的帳號復原流程。復原才是恢復你檢視帳號能力的途徑。不要請第三方代你存取帳號,也不要單憑重設密碼就當作調查完成;一旦恢復存取,請匯出記錄,並針對變化前後的期間建立時間軸。
簡短檢查清單
- 在 90 天範圍往前推移之前,先匯出安全性記錄。
- 私下保存匯出檔,並記下匯出日期與時區。
- 套用篩選條件,聚焦你關心的期間與層面;若有幫助,再匯出縮小後的檢視。
- 建立包含事件、時間、操作者、動作與信心程度欄位的工作表。
- 將每一列標為已觀察或推論,並把待釐清問題分開。
- 把缺少的事件記為缺口,而非什麼都沒發生的證明。
- 若失去存取權,先走官方復原流程,再回到步驟 1。
有用的下一步
建立時間軸之後,下一個問題往往是:還有哪些其他帳號與同一個名稱或識別碼有關。這與閱讀安全性記錄是不同任務,也有各自的方法:請參閱如何找出與某個名稱相關的所有帳號。請讓這兩項調查保持分開,以免其中一項的發現被誤當成另一項的證據。