閱讀338 返回首頁    go 阿裏雲 go 技術社區[雲棲]


不以規矩不成方圓:Digital Ocean也刪除了他們的數據庫

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

上周(2017-04-05),位於紐約的雲服務商 Digital Ocean 遭遇了一次長達4小時56分鍾的停機事故,事故的原因竟然是:主數據庫被刪除了(primary database had been deleted)。


我曾經開過一個玩笑說:沒有刪除過數據庫的DBA,職業生涯是不完整的。現在看起來,又有人因此而完整了。


對於我們來說,需要本著科學的態度,學習並且引以為警示,做到防患於未然。


Digital Ocean 公布了整個故障的根本原因(Root Cause):

The root cause of this incident was a engineer-driven configuration error. A process performing automated testing was misconfigured using production credentials.

故障的根本原因在於工程師的配置錯誤,一個自動執行的測試流程使用了錯誤提供的生產環境認證配置。


這個根本原因翻譯過來就是:由於配置錯誤,本應指向測試環境的任務被指向了生產環境,測試任務包含的環境初始化過程刪除了主生產數據庫。


幸運的是,Digital Ocean 公司實現了 DBA 守則的第一條:有效的備份重於一切。


他們在發現故障後三分鍾發現了數據庫被刪除,隨後在7分鍾內啟動恢複任務,時間線非常清晰


  • T0.00 - 10:24 EDT - First observation of issues

  • T0.03 - 10:27 EDT - Verified that production database had been deleted on master

  • T0.10 - 10:34 EDT - Began recovery from time-delayed replica

  • T1.29 - 11:53 EDT - Backup of time-delayed replica completed

  • T2.10 - 12:34 EDT - Copy of backup to master completed; recovery commencing

  • T3.07 - 13:31 EDT - Recovery of master completed; copy of backups to replicas ongoing

  • T4.56 - 15:20 EDT - All systems restored

這個故障告訴我們什麼呢?我認為規則的重要不斷凸現出來


我在前一段總結了 數據庫安全的16條軍規,其中的幾條正是基於類似的慘痛教訓總結而來的,我篩選幾條和大家分享:

備份重於一切

我曾經在總結的DBA四大守則的第一條就指出,『備份重於一切』,有了有效的備份,即使遭遇災難,也可以從容應對,對於重要的生產環境,適當建立備庫進行數據保護,查詢分擔,也會減少生產庫的風險;

唯一會讓DBA們從夢中驚醒的就是:沒有備份! 所以對於數據庫運維來說,第一重要的是做好備份!有備方能無患!

限製登錄工具

明確限製不同工具的使用場景,明確規定工具的準確來源,或者通過堡壘機等來限製數據庫訪問。對於工具也可以做出明確規則和限製,如限製僅能通過SQL Developer訪問生產,PL/SQL Developer工具僅能訪問測試環境,以減少安全風險甚至誤操作風險;

測試和生產隔離

互通就意味著同時可以訪問,也就可能帶來很多意想不到的安全風險,企業應當將測試環境和生產環境部署於不可互通,或者不可同時訪問的網絡環境中,避免因為錯誤連接而發生的數據庫災難。 分離部署一方麵可以降低誤操作的可能性,也可以屏蔽一些無關的訪問可能,從而從網絡鏈路上保證數據安全;

密碼差異設置

有些測試環境或者非產品環境是利用產品環境恢複得到的,DBA在建立了測試環境後,就沒有修改數據庫用戶的登錄密碼;經常性的,DBA也習慣在所有環境中設置通用的密碼;這些習慣為係統帶來了很多風險和不確定性。 我們建議用戶在不同環境中采用不同的密碼設置,這是因為一方麵產品環境和測試環境麵對的訪問用戶不同,密碼設置相同則意味著產品環境的安全性完全得不到保障;另一方麵,DBA登錄到不同的數據庫需要使用不同的密碼,這進一步減低了DBA在錯誤的環境下執行命令的可能性。


這樣的例子已經屢見不鮮了,近期的就有:

五重備份無一有效,還有哪些 rm -rf 和GitLab類似的憂傷?


如何檢查和發現數據庫的隱含風險呢?你可以通過雲和恩墨的免費智能巡檢平台 - Bethune 來進行全麵診斷和檢查。

Bethune ( https://bethune.enmotech.com )為你的數據庫發現潛在問題,早日消除安全隱患!

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

祝願大家的 DBA 生涯都能夠平安圓滿!


文章轉自數據和雲公眾號,原文鏈接

最後更新:2017-07-17 17:03:27

  上一篇:go  關於爐石傳說的Oracle數據庫故障不要以為你也可以幸免
  下一篇:go  殺手SQL- 一條關於 'Not in' SQL 的優化案例