SQL Server 連接服務器的安全

一.本文所涉及的內容(Contents)

  1. 本文所涉及的內容(Contents)
  2. 背景(Contexts)
  3. 安全設置(Security Settings)
    1. 實現效果:用戶A能看見能使用,B用戶不能看見這個連接服務器;
    2. 實現效果:用戶A能看見能使用,B用戶能看見可是沒有權限使用;
    3. 總結
  4. 參考文獻(References)

二.背景(Contexts)

  當須要用遠程服務器數據庫和本地進行數據交互的時候(例如導數據等),咱們一般會在本地建立一個遠程服務器的數據庫連接,關於建立建立連接服務器能夠參考:SQL Server 建立連接服務器,可是咱們不多去關注連接服務器的安全性問題。 html

  爲了控制連接服務器的安全性,咱們採起的方法是:控制只有某個用戶能使用這個連接服務器,實現的效果就如Figure1和Figure2所示,TestLink用戶能看到並使用連接服務器:[192.168.1.5],而sa用戶卻沒法看到連接服務器。另一種安全模式如Figure14和Figure15所示。 數據庫

clip_image001_thumb

(Figure1:sa用戶看到的連接服務器) 安全

clip_image002_thumb

(Figure2:TestLink用戶看到的連接服務器) 服務器

三.安全設置(Security Settings)

對於連接服務器的安全,能夠實現兩種效果: spa

1) 用戶A能看見能使用,B用戶不能看見這個連接服務器; 3d

2) 用戶A能看見能使用,B用戶能看見可是沒有權限使用; server

(一) 實現效果:用戶A能看見能使用,B用戶不能看見這個連接服務器;htm

  1) 首先咱們填寫遠程服務器的地址,若是有端口就加入端口,不填表示端口默認是1433 blog

clip_image003_thumb

(Figure3:建立連接服務器) ip

  2) 在不考慮安全性的問題的狀況下,我一般是使用Figure4的作法來設置賬號和密碼的。

clip_image004_thumb

(Figure4:一般設置賬號密碼的作法)

  3) 若是要實現連接服務器的安全,那就選擇【不創建鏈接】,再點擊【添加】按鈕,這樣就能夠爲「本地服務器登陸到遠程服務器登陸的映射」添加本地A用戶與服務器B用戶的一個映射關係。

clip_image005_thumb

(Figure5:未定義的登陸)

  4) 本地登陸設置sa這個用戶登陸,與之對應的是遠程服務器的用戶sa和密碼****進行遠程服務器的登陸驗證,以下圖所示:

clip_image006_thumb

(Figure6:登陸映射)

  5) 經過上面幾個步驟的設置,如今這個連接服務器就只有sa用戶可以使用了,爲了看到效果,咱們建立一個TestLink的用戶,建立界面操做如Figure七、Figure8,爲了真實反應生產環境的賬號權限管理,咱們另外爲TestLink分配一個數據庫權限,如Figure9圖所示。

clip_image007_thumb

(Figure7:建立TestLink用戶)

clip_image008_thumb

(Figure8:設置TestLink服務器角色)

clip_image009_thumb

(Figure9:設置TestLink用戶身份)

  6) 分別使用sa和TestLink進行登陸就能很直觀的看出效果了:sa擁有[192.168.1.5]這個連接服務器的使用權限,而TestLink連看到的機會都沒有。效果如Figure1和Figure2所示。

(二) 實現效果:用戶A能看見能使用,B用戶能看見可是沒有權限使用;

  1) 假設咱們須要在TestLink用戶上建立一個連接服務器,可是想sa沒有權限使用,若是直接在TestLink用戶下建立連接服務器會出現下面Figure10的錯誤,由於沒有權限,權限可使用Figure11圖進行修改。

clip_image011_thumb

(Figure10:TestLink用戶建立連接服務器錯誤)

clip_image012_thumb

(Figure11:修改TestLink的角色)

  2) 如今咱們建立一個[192.168.1.48]的連接服務器,設置如Figure12和Figure13所示。

clip_image013_thumb

(Figure12:建立新連接服務器)

clip_image014_thumb

(Figure13:設置TestLink登陸映射)

  3) 咱們使用sa和TestLink用戶登陸查看服務器連接,下圖 Figure13和Figure14中看到的列表都是同樣,那是否沒有區別呢?

clip_image015_thumb

(Figure14:sa用戶看到的連接服務器)

clip_image016_thumb

(Figure15:TestLink用戶看到的連接服務器)

  4) 首先咱們從使用上來看看是否有區別,在sa和TestLink用戶下使用連接服務器[192.168.1.48]的狀況:

clip_image017_thumb

(Figure16:sa用戶使用連接服務器)

clip_image018_thumb

(Figure17:TestLink用戶使用連接服務器)

(三) 總結:

  1) 用戶能不能看到連接服務器是由sysadmin角色來決定的,在爲一個用戶分配角色的時候就應該注意這點;

  2) 若是兩個用戶都在sysadmin角色下,即便他們看到的連接服務器列表是同樣的,可是也是能夠控制連接服務器的權限的,如Figure16和Figure17所示;

  3) 若是sa用戶知道192.168.1.48的賬號和密碼,他也能夠本身在[192.168.1.48]連接服務器添加本身的用戶登陸映射,同樣可使用這個遠程連接服務器,前提是sa用戶知道賬號和密碼;這樣只要控制192.168.1.48賬號的安全就能夠了;

  4) 若是想在用戶登陸映射的時候使用模擬,那麼你設置的這個用戶必須與遠程連接服務器的用戶名和密碼要相同纔可使用;

  5) 若是連接服務器是 SQL Server 的實例,若要獲取全部可用的統計,用戶必須擁有該表或者是連接服務器上 sysadmin 固定服務器角色、db_owner 固定數據庫角色或者 db_ddladmin 固定數據庫角色的成員。

四.參考文獻(References)

連接服務器的安全性

sp_addlinkedserver (Transact-SQL)

相關文章
相關標籤/搜索