Cloudflare R2 服務(wù)中斷事件:密碼輪換錯誤引發(fā)全球故障
Cloudflare近日宣布,其R2對象存儲及相關(guān)服務(wù)發(fā)生了一次持續(xù)1小時7分鐘的中斷事件,導(dǎo)致全球范圍內(nèi)出現(xiàn)100%的寫入失敗和35%的讀取失敗。Cloudflare R2是一項(xiàng)可擴(kuò)展的、與S3兼容的對象存儲服務(wù),提供免費(fèi)數(shù)據(jù)檢索、多區(qū)域復(fù)制以及與Cloudflare的深度集成。
此次事件發(fā)生在UTC時間21:38至22:45之間,據(jù)稱是由于憑證輪換錯誤導(dǎo)致R2 Gateway(API前端)失去了對后端存儲的認(rèn)證訪問權(quán)限。具體而言,新憑證被錯誤地部署到了開發(fā)環(huán)境而非生產(chǎn)環(huán)境,而當(dāng)舊憑證被刪除后,生產(chǎn)服務(wù)便失去了有效的憑證。
故障原因與處理過程
問題的根源在于遺漏了一個命令行標(biāo)志--env production,該標(biāo)志的作用是將新憑證部署到生產(chǎn)環(huán)境的R2 Gateway Worker中,而非開發(fā)環(huán)境的Worker。
R2 Gateway Worker認(rèn)證示意圖來源:Cloudflare
由于問題的性質(zhì)以及Cloudflare服務(wù)的工作機(jī)制,這一配置錯誤并未立即顯現(xiàn),導(dǎo)致修復(fù)工作進(jìn)一步延遲。
Cloudflare在事件報(bào)告中解釋道:“R2可用性指標(biāo)的下降是漸進(jìn)的,并未立即顯現(xiàn),因?yàn)榕f憑證刪除的傳播到存儲基礎(chǔ)設(shè)施存在延遲。這導(dǎo)致我們未能及時發(fā)現(xiàn)該問題。在更新舊憑證后,我們本應(yīng)明確驗(yàn)證R2 Gateway服務(wù)使用的是哪個令牌來與R2的存儲基礎(chǔ)設(shè)施進(jìn)行認(rèn)證,而不是僅僅依賴可用性指標(biāo)?!?/p>
盡管此次事件未導(dǎo)致客戶數(shù)據(jù)丟失或損壞,但仍造成了部分或全部服務(wù)的降級,具體包括:
- R2:100%寫入失敗和35%讀取失?。ň彺鎸ο笕钥稍L問)
- Cache Reserve:由于讀取失敗導(dǎo)致源站流量增加
- Images和Stream:所有上傳失敗,圖片交付率降至25%,Stream降至94%
- Email Security、Vectorize、Log Delivery、Billing、Key Transparency Auditor:不同程度服務(wù)降級
改進(jìn)措施與未來計(jì)劃
為防止類似事件再次發(fā)生,Cloudflare已改進(jìn)憑證日志記錄和驗(yàn)證流程,并強(qiáng)制使用自動化部署工具以避免人為錯誤。
公司還更新了標(biāo)準(zhǔn)操作流程(SOPs),要求對高影響操作(如憑證輪換)進(jìn)行雙重驗(yàn)證,并計(jì)劃增強(qiáng)健康檢查以更快地檢測根本原因。
值得注意的是,Cloudflare的R2服務(wù)在今年2月也曾發(fā)生過一次持續(xù)1小時的中斷,同樣是由人為錯誤引發(fā)。當(dāng)時,一名操作員在處理關(guān)于釣魚URL的濫用報(bào)告時,錯誤地關(guān)閉了整個R2 Gateway服務(wù),而非僅阻止特定端點(diǎn)。由于缺乏針對高影響操作的保障措施和驗(yàn)證檢查,導(dǎo)致了此次中斷。為此,Cloudflare計(jì)劃并實(shí)施了額外的措施,包括改進(jìn)賬戶配置、加強(qiáng)訪問控制以及對高風(fēng)險操作實(shí)施雙人審批流程。