每個星期六我都會分享一條你可以在一小時內跑完的捷徑。本週的捷徑來自別人糟糕的一週:10月21日,鐵路 告訴其客戶 攻擊者可能已經讀取了解密的環境變量,並要求所有人重置他們儲存在那裡的每個 API 金鑰。.
“「輪換所有密鑰」聽起來像是十分鐘就能搞定的事。其實不然,因為困難不在於產生新密鑰,而是找到舊密鑰存在的所有地方,以及它失效後導致的所有任務出錯的地方。所以我先在我自己的一個代理容器上進行了模擬演練,沒有修改任何金鑰值。. 這是捷徑:在供應商迫使你慌忙進行 API 金鑰輪換之前,先做好 API 金鑰輪換計畫。.
收據:33 個秘密名稱,29 個實際秘密,8 個我的代碼中沒有提及的秘密
我列出了所有名稱看起來像密碼(KEY、TOKEN、SECRET、PASSWORD)的環境變量,然後在 118 個技能文件和腳本中搜尋了每個名稱對應的變數。只搜尋名稱,不列印任何值。.
- 33 在排除兩個誤報(一個表格 ID 和一個預算設定恰好包含“KEY”和“TOKEN”)之後,秘密形狀的名稱。.
- 4 把鑰匙以不同的名稱存放了兩次。. 我比較的是值的雜湊值,而不是值本身。郵件驗證器、爬蟲、退信檢查器和 GitHub 都有兩個指向同一個金鑰的名稱。輪換其中一個名稱,棄用另一個,那麼一半的任務就會悄悄地繼續使用舊密鑰。.
- Airtable 金鑰出現在 29 個檔案中。. Metricool 的令牌出現在第 17 次輪換中,WordPress 應用程式密碼出現在第 12 次輪換中。這些輪換需要核對清單,而不是靠猜測。.
- 8 個名字出現在零個文件中。. 上面列出的四個是重複的。其中兩個會被工具隱式讀取(GitHub CLI 無需使用者手動輸入名稱即可取得其令牌)。另外兩個我找不到讀取器。最後這兩個會被撤銷,而不是輪換。.
- 引用了 1 個名稱,但名稱為空: 我五月刪除了一個音樂 API 管道,其中包含一個金鑰。程式碼中仍然引用了它;但密鑰已經遺失了。.
從我創建密鑰的控制面板上看不到這些資訊。只有從代碼那邊查看才能看到。.

⚡ 取得人工智慧優勢
每週提供真正省時省錢的AI小技巧。沒有廢話,沒有誇大其詞——只有切實有效的方法。.
API金鑰輪換的3個捷徑
- 地圖應該根據名稱構建,而不是根據值構建。. 跑步
env | cut -d= -f1(或打開你的 .env 文件,只讀取左側部分),保留所有看起來像憑證的內容,然後在你的腳本、技能和工作流程中搜尋每個名稱。最終你會得到一個表格:鍵、使用該鍵的檔案、計數。按計數排序。前三行是輪換出錯的地方,因此需要記錄出錯步驟的順序。. - 提前折疊別名。. 如果兩個名稱包含相同的秘密,則選擇其中一個,將所有檔案指向它,然後刪除另一個。您可以透過對每個值進行雜湊處理來安全地檢查重複項(
printenv NAME | sha256sum並比較前幾個字元。相同的哈希值,相同的密鑰。我在一個我以為很熟悉的容器裡發現了四對密鑰。. - 按以下順序輪換:新密鑰,每個位置,測試調用,然後撤銷。. 在舊密鑰仍然有效時建立新密鑰。更新地圖上的所有位置。使用新金鑰對每個服務(例如「我是誰」或清單端點)進行一次低成本的讀取呼叫。之後再撤銷舊金鑰。如果金鑰沒有指向任何服務,請先撤銷這些金鑰。沒有讀取器的密鑰純粹是風險,沒有任何實際用途。.
有兩個方面沒有涵蓋。首先,它沒有涵蓋容器外部的副本:例如供應商控制面板、n8n 憑證、團隊成員的筆記型電腦。需要在對應中新增一個「存放位置」欄位來記錄這些副本。其次,它沒有告訴你某個密鑰是否已被其他人使用。這正是供應商日誌的作用所在,Railway 的通知也要求你查看這些日誌。.
如果你想更全面地了解像我這樣的容器能到達和不能到達的範圍,我寫了一篇文章。 四個月無人值守貨櫃運行教會了我什麼關於沙盒的知識. 至於每週一次的例行檢查,以便在死鍵運行失敗前將其捕獲,還有… 20分鐘的資格審查.
今天,我已將兩把無人認領的鑰匙列入撤銷名單。想讓其他人幫你檢查一下你的特務是如何保守秘密的嗎? 預約策略會議 我們將一起繪製您的關鍵地圖。.
下週六見。.
喬恩

📥 免費:《人工智慧劇本》
我用來經營一人代理公司的所有工具和工作流程。 25 年的行銷經驗濃縮成一份實用指南。免費贈送。.
