云计算之路-阿里云上:踩着RDS的2个坑

最近发现阿里云RDS管理控制台升级了,界面更好看了,操做也更方便了,但在美丽的外表下却藏着坑,不当心被咱们睬着了。数据库

8月31日下午,咱们在RDS管理控制台中建立了一个新的数据库账号,建立时选择了绑定多个数据库。安全

而后,这个新建账户的状态显示为“建立中”,这时该新建账户能够登陆,但不能访问任何数据库。阿里云

过了2分多钟,账户状态由“建立中”变为“激活”后,才能够正常访问所绑定的数据库。设计

以前咱们好久没有在RDS进行账户管理操做了,今天这样一个如此简单、如此经常使用的操做,咱们根本没想到会出问题。blog

结果却在2分多钟内连踩2个坑,被坑得不轻!产品

第1个坑io

在建立新账号时所选择绑定的全部数据库,在这2分钟内,居然都没法访问。已经绑定这些数据库的现有账户访问时都被拒绝,错误信息以下:登录

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

因为建立时选择的数据库比较多,结果这个问题影响到了全站。很是之郁闷,自从使用数据库以来,从未遇到过这样的问题——建立新账号居然会影响到现有账号。权限

后来进一步发现,实际的坑比这个还要深,修改任何一个现有账户的数据库绑定,都会触发这个问题。并且修改的设置要过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左右被填平。

相关文章
相关标签/搜索