雲計算之路-阿里雲上:踩着RDS的2個坑


最近發現阿里雲RDS管理控制台升級了,界面更好看了,操作也更方便了,但在美麗的外表下卻藏着坑,不小心被我們睬着了。

8月31日下午,我們在RDS管理控制台中創建了一個新的數據庫帳號,創建時選擇了綁定多個數據庫。

然后,這個新建帳戶的狀態顯示為“創建中”,這時該新建帳戶可以登錄,但不能訪問任何數據庫。

過了2分多鍾,帳戶狀態由“創建中”變為“激活”后,才可以正常訪問所綁定的數據庫。

之前我們很久沒有在RDS進行帳戶管理操作了,今天這樣一個如此簡單、如此常用的操作,我們根本沒想到會出問題。

結果卻在2分多鍾內連踩2個坑,被坑得不輕!

第1個坑

在創建新帳號時所選擇綁定的所有數據庫,在這2分鍾內,竟然都無法訪問。已經綁定這些數據庫的現有帳戶訪問時都被拒絕,錯誤信息如下:

The SELECT permission was denied on the object '', database '', schema 'dbo'.

由於創建時選擇的數據庫比較多,結果這個問題影響到了全站。非常之郁悶,自從使用數據庫以來,從未遇到過這樣的問題——創建新帳號竟然會影響到現有帳號。

后來進一步發現,實際的坑比這個還要深,修改任何一個現有帳戶的數據庫綁定,都會觸發這個問題。而且修改的設置要過2分多鍾才生效。

也就是說,在RDS中,只要涉及任何數據庫帳戶權限的變動,就會引發所涉及的數據庫在短時間內不能正常訪問,而且沒有任何提示或警告。

我們向阿里雲反饋后,他們已經確認這是一個bug,說會在9月底的下一個版本中修復。

我們的想法是:如此嚴重的bug,還要讓用戶等到9月底,24小時內修復才是負責任的做法!

第2個坑

創建新帳號竟然造成已有的數據庫帳號的數據庫綁定丟失,有的只剩下一個數據庫綁定,有的少了一兩個數據庫綁定。

向阿里雲反饋后,RDS的DBA查了才知道,當時我們遷移至RDS時,某些在SQL Server Management Studio中的操作造成了SQL Server中的帳號與RDS中的帳號不一致,在RDS創建新帳號時發現在SQL Server中有的帳號在RDS中沒有,於是RDS就把這些帳號給干掉了。

阿里雲說這么做是出於安全角度考慮,出於安全角度不給SA權限,我們可以忍。這地方又存在什么安全問題呢?況且,我們的RDS只有內網授權的IP才能訪問。另外,即使必須要保持RDS與SQL Server數據庫的帳號一致,那也應該以SQL Server中的帳號為准。因為RDS中的帳戶即使全丟失,也不會影響數據庫的正常訪問;而數據庫中的帳號只要少了一個,就可能影響到用戶的正常應用。孰輕孰重?

坑后感言

如果在設計產品時,把保證用戶應用的穩定性放在首要位置,就不會有這么多坑!如果敢把自己的核心應用放在自己的雲上,也不會有這么多坑!

現在的狀況就如生產汽車不考慮安全問題,等用戶開車出了事故,才去針對性地解決安全問題;然后,那些准備買車的人看到汽車這么不安全,嚇得都不敢買了。如果真是這樣,就不會有今天的汽車工業。

更新:第1個坑在9月2日晚22:00左右被填平。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM