阿里云RDS for SQL Server的賬號管理有不少小Bug,而且有一個很嚴重的Bug:任何普通賬號,都能創建資料庫,注意,我這里是說任意普通賬號,任意任意普通賬號!任意任意普通賬號!重要的事情說三遍,
例如,下面測驗環境所示,RDS for SQL Server的資料庫版本為SQL Server 2016 WEB,我們在控制平臺的“賬號管理”界面,創建一個資料庫賬號test2,如下所示,只授予“只讀”權限,
、
我們使用腳本get_login_rights_script.sql 獲取資料庫賬號test2的具體權限如下所示:

使用test2賬號登錄資料庫,執行下面腳本就能創建一資料庫,如下所示,根據個人的測驗,這個賬號可以為任意普通賬號,即使取消服務器角色setupamin與processadmin,依然是可以創建資料庫的,
CREATE DATABASE [MyDB]
CONTAINMENT = NONEON PRIMARY
( NAME = N'MyDB', FILENAME = N'E:\SQLDATA\DATA\MyDB.mdf' , SIZE = 5120KB , FILEGROWTH = 10%)
LOG ON ( NAME = N'MyDB_log', FILENAME = N'E:\SQLDATA\DATA\MyDB_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
如果可以創建資料庫,當然也可以洗掉資料庫,當然,只能洗掉它自己創建的資料庫,不能洗掉其它資料庫,
DROP DATABASE MyDB;
洗掉不是這個賬號創建的資料庫時就會報錯,如下所示:
DROP DATABASE test4;
Msg 3701, Level 11, State 2, Line 15
Cannot drop the database 'test4', because it does not exist or you do not have permission.
是否很神奇?傳統資料庫需要有服務器角色dbcreator(當然,sysadmin角色肯定也可以) 或者授予CREATE ANY DATABASE、 CREATE DATABASE, ALTER ANY DATABASE其中一個權限才能創建資料庫,但是RDS for SQL Server的普通賬號沒有授予這些權限,卻依然可以創建資料庫,實在是想不明白它為什么有這樣一個Bug, RDS for SQL Server的高權限賬號有權限限制,所以很多事情也無法更深入的去探究,目前,我們也提交、報告了這個問題,暫時還沒有得到官方回復!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234681.html
標籤:其他
上一篇:mysql 無法連接提示 Authentication plugin 'caching_sha2_password' cannot be loaded
下一篇:資料庫&MySQL
