天天看點

SQLServer · 最佳實踐 · RDS for SQLServer 2012權限限制提升與改善

sql server 作為一種強大的關系型資料庫,能夠提供所有場景的應用。在絕大多數雲計算公司中,都提供了sql server作為服務的雲資料庫服務,譬如阿裡雲。但既然是服務,那麼服務就需要可管理,可控制,是以,在雲計算初期,都對雲資料庫服務進行了嚴格的權限控制,好處就是可控可管理,但給使用者會帶來一些限制,某些限制實際上是可以再細粒度管控。是以,今天我們就要介紹一下阿裡雲資料庫sql server 2012在權限限制方面的提升與改善。

根據我們對使用者的了解和日常使用者的回報,最常見的需求如下:

1. 需要建立、修改和删除登入和使用者的權限

2. 需要建立、修改和删除資料庫的權限

3. 資料庫上的所有權限

4. 需要結束連接配接的權限

5. 需要友善讀取資料庫日志的權限

6. 需要連結伺服器權限

7. 需要sql server profiler的跟蹤功能

8. 需要database engine tuning advisor來調校性能

我們在sql server 2012的版本中,使用者的關注是我們改進和提升的方向,是以,經過論證與設計,會将這些權限還給使用者,讓使用者有更多的自由選擇和友善調試性能、管理自己的資料。那麼如何來使用這些功能,我這裡會将每個需求都示範一下如何使用(針對阿裡雲資料庫sql server 2012):

首先,阿裡雲資料庫sql server 2012會提供一個根帳戶,這個根帳戶也可以與你建立帳戶的權限一緻,但強烈建議你建立一個帳戶,根帳戶可以修改密碼,也可以disable掉,甚至删除掉,你還可以重置根賬号。

建立登入過程中,會将伺服器級、資料庫級别等權限授予使用者。你會在message(消息)看到下列資訊:

SQLServer · 最佳實踐 · RDS for SQLServer 2012權限限制提升與改善

你不能更改你建立的任何之外的login,否則會出現一下錯誤:

SQLServer · 最佳實踐 · RDS for SQLServer 2012權限限制提升與改善

同樣你不能删除你建立的任何之外的login,否則會出現一下錯誤:

SQLServer · 最佳實踐 · RDS for SQLServer 2012權限限制提升與改善

你隻能在自己建立的使用者資料庫建立使用者,在系統資料庫上是無法做操作的, 是以為了示範建立使用者,需要先建立一個資料庫testdb(稍後介紹具體資訊):

使用login test11登入到執行個體(假如你的密碼是123,因為剛才建立的使用者已經删除,請重新建立一下)

請注意,如果是目前使用者建立資料庫,那麼就将目前使用者設定該資料庫的一個使用者,并且角色自動配置設定為db_owner, 你也可為資料庫建立其他使用者和角色:

你可以更改user,與sql server原始的操作方式一樣,比如更改使用者映射的登入,如下:

你還可以更改user,與sql server原始的操作方式一樣,如下:

正如上面所說,如果是目前使用者建立資料庫,那麼就将目前使用者設定該資料庫的一個使用者,并且角色自動配置設定為db_owner。如下:

你會收到下列消息:

表示目前建立的登入使用者是test11,并且已經配置設定db_owner角色

注意:

在建立資料庫是,你不能随意指定檔案路徑,你可以不指定任何路徑,例如上面的sql語句,但你也可以指定正确的路徑。如果你指定錯誤的路徑,會收到錯誤提示:

你會收到下列資訊:

顯然,這個正确的路徑隻有e:\mmm\gggg\,其他任何路徑都不會建立成功。 這個隻是為了規範正确的路徑而已,沒有其他任何功能限制。

你可以更改大部分的資料庫屬性,但有幾個地方你需要注意,有些特性是不可以随便更改的,。

你會得到下列資訊:

你會得到下列錯誤資訊:

目前設定為offline時,也不必驚慌,你可以使用sp_rds_set_db_online存儲過程,讓資料庫online:

删除資料庫沒有任何特别之處,但是如果你的資料庫沒有進行過任何備份,也會提示:

資料庫我們首先設定為db_owner,但是回收了備份等必要的管控機制,現在的資料庫級别權限非常的自由,但也是有兩面性,權限更多了,那麼自己操作的時候就需要更嚴謹和更仔細,避免導緻資料庫的使用問題。

結束連接配接的權限,我們更通俗地将是kill權限,rds sql server 2012已經授予這個權限,但是使用者隻能kill自己的的連接配接,使用者不要kill其他連接配接,比如備份的連接配接。

以前你需要在控制台讀取資料庫錯誤日志,現在你可以直接使用存儲過程sp_rds_read_error_logs讀取錯誤日志,使用方法與sp_readerrorlog是一樣的:

連結伺服器現在還存在兩個問題,首先,不能用ui界面去建立連結伺服器,ui界面建立連結伺服器需要sysadmin權限,可以使用一系列的存儲過程建立。第二,由于rds的設計,不能直接通過dns和對應的ip建立,具體建立方式,暫時不能提供。但有解決方案。但我們提供了一個簡單的一鍵建立方式:

如下圖:

SQLServer · 最佳實踐 · RDS for SQLServer 2012權限限制提升與改善

message(消息):

the linked server ‘my_link_server’ has set option ‘data access’ to ‘true’.

the linked server ‘my_link_server’ has set option ‘rpc’ to ‘true’.

the linked server ‘my_link_server’ has set option ‘rpc out’ to ‘true’.

create link server ‘my_link_server’ successfully.

rds sql server 2012的 profiler功能沒有變化,但是不能生成檔案到伺服器上,因為你不能登入到rds的執行個體伺服器上。你可以放在表裡。在使用sql server profiler功能時,請注盡可能使用多的過濾條件和使用少量的列。

這個功能的使用方法沒有辦法,不過,絕大多數時,使用者不會使用這個功能。隻是提供一種可選的方式。

rds sql server在權限方面做了很多改變,能夠滿足絕大多數使用者的使用,性能調優和管理方面的需求。但是權限開放了,也需要使用者謹慎使用,比如資料庫層面,可以有更多設定了,設定不同的值會對資料庫的性能産生不同影響。