天天看點

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

最近發現阿裡雲RDS管理控制台更新了,界面更好看了,操作也更友善了,但在美麗的外表下卻藏着坑,不小心被我們睬着了。如果在設計産品時,把保證使用者應用的穩定性放在首要位置,就不會有這麼多坑!如果敢把自己的核心應用放在自己的雲上,也不會有這麼多坑!

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

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

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

雲計算之路-阿裡雲上:踩着RDS的2個坑
然後,這個建立帳戶的狀态顯示為“建立中”,這時該建立帳戶可以登入,但不能通路任何資料庫。
雲計算之路-阿裡雲上:踩着RDS的2個坑

過了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左右被填平。

繼續閱讀