閱讀68 返回首頁    go 技術社區[雲棲]


DBA生存警示:主備環境誤操作案例及防範建議

編輯手記:對於資深的老DBA們,他們在漫長的職業生涯中養成了很多稀奇古怪的守則,以在複雜多變的環境中“幸存”,這源於無數血淚的教訓,我曾經在《數據安全警示錄》一書收錄了大量現實案例,現在整理分享給大家,共為警示。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy
在數據庫日常管理過程中,有些威脅來自數據庫外部,而有些威脅則來自數據庫內部,對於數據庫外部,破壞性的操作有rm,而在數據庫內部,同樣有破壞性操作,如Truncate。


案例分享


生產與測試環境錯誤

開了兩個PL/SQL DEVELOPE窗口,一個生產的,一個非生產的,同名用戶,同表空間名,結果非生產的建用戶腳本在生產中跑了一下,非生產是grant limit table space to XXX的,在生產中跑了以後,生產中的用戶變成LIMIT了,結果程序出錯,表空間不足。導致應用出錯半個小時後才處理好。 這個太慘痛了,建議所有的使用多個環境的人,並且操作多個PL/SQL DEVELOPE的人盡量隻開一個窗口操作,或者是操作生產的時候,用隻讀的查詢用戶。


生產與測試環境錯誤

自己電腦裝了ORACLE數據庫,平時操作都在自己創建的庫上........經常刪除用戶,重新導最新的數據進去。 那天也是快下班了........急,直接刪除用戶,刪除的時候還在想就算是正式庫權限不夠沒關係,看也沒看就敲回車了.......後來不說了,兩個字,鬱悶。


生產與測試環境錯誤

我有一次本來要刪除測試庫的,結果差點刪除生產庫的一個表的所有數據,還好強行ctrl_alt_delete,最後回滾了,哈哈,居然一條數據都沒有刪除。確實是快下班,比較累。以後不能在心急的時候維護數據庫。


生產與測試環境錯誤

也是開了多個窗口,一個窗口建庫,另一個窗口是生產的庫。搞錯了,在生產的服務器上直接shutdown了,立刻電話就上來了。好在沒有造成太大影響,也是提心吊膽的。多窗口危險很大。


生產與測試環境錯誤

尤記得那年我還很衝動,測試環境中發現表空間不夠了,就加了一個文件。一會有人打電話說生產庫總報一個提示。 馬上去看,發現我的數據文件竟然加在生產庫上!而且路徑類似windows的,非常奇怪,冷汗!靠,原來寫錯tns串了,見鬼的是測試環境和生產環境網絡竟然是互通的!生產環境是RAC,裸設備,9i......後來隻好把這個本地文件脫機,數據倒沒有丟失,但總有個刪不掉的脫機文件!後來找個理由升級成10g了,我心裏的石頭才算放下了。 從此以後我再也沒有犯錯。


誤刪除生產環境數據

有一次在測試庫drop掉一個表,drop完發現把生產庫中的表給DROP了,1000多萬筆紀錄啊。當時產線就停了,最後一級生產事故。偶公開檢討。教訓:不能同時打開兩個以上的庫。


防範建議


1.測試環境和生產環境應當處於不可互通的物理網絡

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


2.在執行任務之前確認連接訪問的數據環境

通過查詢數據庫的視圖(V$INSTANCE,V$DATABASE)就可以獲得數據庫的主機、實例名稱等信息,在任何重要任務執行之前,都應當明確確認連接到的環境是正確的。 SQL>select instance_name,host_name from v$instance; 這應當成為DBA的習慣。


3.避免打開過多的窗口以致操作錯誤

在執行任務時,保持盡量少的打開窗口,我經常見到工程師桌麵打開眾多淩亂的窗口,混亂與錯誤同行,尤其是在通宵加班等環境下。 保持簡介清晰的工作界麵,是一個工程師應當具備的基本素質。


4.在執行重要任務時應保持良好的狀態

良好的狀態是高效率和高質量工作的保障,如果是夜間工作,應該保障充足的睡眠,以清醒的頭腦麵對重要的工作;並且一定要避免在疲勞狀態下連續工作,疲勞作戰是對自己和數據的不負責任。


5.避免匆忙之下進行重要的工作或決定

很多誤操作都是因為急著下班,急著回家,臨門一腳導致的失誤,所以當我們去執行一項工作時,應當保持平和的心態,避免倉促緊急的決定。從來匆忙和倉促都不是一個正確的方法。


6.測試環境和產品環境密碼設置不能相同

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


以上內容摘錄自蓋國強《OracleDBA手記4數據安全警示錄》。


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

最後更新:2017-07-17 17:33:16

  上一篇:go  DBA生存警示:防範頻發的數據誤刪除操作
  下一篇:go  知己知彼-關於Oracle安全比特幣勒索問題揭秘和防範