Skip to main content

[RCA] 07/18 誤發緊急地震速報的原因分析

· 3 min read
YuYu1015
Full-Stack Engineer (全端工程師)
嚴重程度嚴重 狀態已結案

事件概述

  • 發生時間: 2026/07/18 08:29 (UTC+8) 左右
  • 觸發條件: 服務重構測試過程中
  • 問題描述: 誤發緊急地震速報
  • 根本原因: NATS 權限管理不當,測試電文被廣播至生產環境

時間軸

時間 (UTC+8)事件
2026/07/18 08:29問題發生:誤發緊急地震速報
2026/07/18 08:30確認問題並開始進行修復
2026/07/18 08:31執行緊急處理,阻斷問題電文

事件經過

07/18 早上進行 cwa-xml-go 的重構作業,目的是將 cwa-xml-gocwa-eew-go 兩個服務合併(見下圖),以降低系統複雜度並減少處理延遲。

重構完成後進入測試階段時,測試用的電文意外洩漏至生產環境,最終導致誤發緊急地震速報。

cwa-xml-go 與 cwa-eew-go 合併前後架構示意圖

根本原因分析

問題根源

系統採用 NATS 作為訊息傳遞的骨幹,並透過 NATS Supercluster 在不同機房間同步電文,以達到異地雙活備援的目的。

由於 NATS 的權限管理設定不當,測試機所產生的測試電文,透過 NATS Supercluster 被廣播至生產環境,被下游服務當作正式電文處理,進而觸發緊急地震速報。

問題說明

  • 測試機與生產環境共用同一組 NATS Supercluster
  • 測試機的發布權限未受限制,可將電文推送至生產環境所訂閱的 subject
  • 下游服務無法區分電文來源,將測試電文視為正式電文處理
  • 最終導致誤發緊急地震速報

解決方案

  1. 加強 NATS 權限管理: 限制測試機的發布權限,避免測試電文流入生產環境所訂閱的 subject
  2. 隔離測試與生產環境: 明確劃分測試與生產環境的訊息通道,防止跨環境的電文污染
  3. 全面盤點: 檢視其餘服務是否存在相同的權限風險,並一併修正

心得

這是一個相當低級的疏失。雖然此次事件間接驗證了異地雙活備援機制的可靠性,但也直接導致了誤發緊急地震速報,對於造成大家的不便,我們深感抱歉,並將以此為戒加強環境隔離與權限控管。