標籤:style blog http ar os 使用 sp strong 資料
原文:SQL Server 連結的伺服器的安全
一.本文所涉及的內容(Contents)
- 本文所涉及的內容(Contents)
- 背景(Contexts)
- 安全設定(Security Settings)
- 實現效果:使用者A能看見能使用,B使用者不能看見這個連結的伺服器;
- 實現效果:使用者A能看見能使用,B使用者能看見但是沒有許可權使用;
- 總結
- 參考文獻(References)
二.背景(Contexts)
當需要用遠程伺服器資料庫和本地進行資料互動的時候(例如導資料等),我們通常會在本地建立一個遠程伺服器的資料庫連結,關於建立建立連結的伺服器可以參考:SQL Server 建立連結的伺服器,但是我們很少去關注連結的伺服器的安全性問題。
為了控制連結的伺服器的安全性,我們採取的方法是:控制只有某個使用者能使用這個連結的伺服器,實現的效果就如Figure1和Figure2所示,TestLink使用者能看到並使用連結的伺服器:[192.168.1.5],而sa使用者卻無法看到連結的伺服器。另外一種安全模式如Figure14和Figure15所示。
(Figure1:sa使用者看到的連結的伺服器)
(Figure2:TestLink使用者看到的連結的伺服器)
三.安全設定(Security Settings)
對於連結的伺服器的安全,可以實現兩種效果:
1) 使用者A能看見能使用,B使用者不能看見這個連結的伺服器;
2) 使用者A能看見能使用,B使用者能看見但是沒有許可權使用;
(一) 實現效果:使用者A能看見能使用,B使用者不能看見這個連結的伺服器;
1) 首先我們填寫遠程伺服器的地址,如果有連接埠就加入連接埠,不填表示連接埠預設是1433
(Figure3:建立連結的伺服器)
2) 在不考慮安全性的問題的情況下,我通常是使用Figure4的做法來設定帳號和密碼的。
(Figure4:通常設定帳號密碼的做法)
3) 如果要實現連結的伺服器的安全,那就選擇【不建立串連】,再點擊【添加】按鈕,這樣就可以為“本機伺服器登入到遠程伺服器登入的映射”添加本地A使用者與伺服器B使用者的一個映射關係。
(Figure5:未定義的登入)
4) 本地登入設定sa這個使用者登入,與之對應的是遠程伺服器的使用者sa和密碼****進行遠程伺服器的登入驗證,如所示:
(Figure6:登入映射)
5) 通過上面幾個步驟的設定,現在這個連結的伺服器就只有sa使用者能夠使用了,為了看到效果,我們建立一個TestLink的使用者,建立介面操作如Figure7、Figure8,為了真實反應生產環境的帳號許可權管理,我們另外為TestLink分配一個資料庫許可權,如Figure9圖所示。
(Figure7:建立TestLink使用者)
(Figure8:設定TestLink伺服器角色)
(Figure9:設定TestLink使用者身份)
6) 分別使用sa和TestLink進行登入就能很直觀的看出效果了:sa擁有[192.168.1.5]這個連結的伺服器的使用許可權,而TestLink連看到的機會都沒有。效果如Figure1和Figure2所示。
(二) 實現效果:使用者A能看見能使用,B使用者能看見但是沒有許可權使用;
1) 假設我們需要在TestLink使用者上建立一個連結的伺服器,但是想sa沒有許可權使用,如果直接在TestLink使用者下建立連結的伺服器會出現下面Figure10的錯誤,因為沒有許可權,許可權可以使用Figure11圖進行修改。
(Figure10:TestLink使用者建立連結的伺服器錯誤)
(Figure11:修改TestLink的角色)
2) 現在我們建立一個[192.168.1.48]的連結的伺服器,設定如Figure12和Figure13所示。
(Figure12:建立新連結的伺服器)
(Figure13:設定TestLink登入映射)
3) 我們使用sa和TestLink使用者登入查看伺服器連結, Figure13和Figure14中看到的列表都是一樣,那是否沒有區別呢?
(Figure14:sa使用者看到的連結的伺服器)
(Figure15:TestLink使用者看到的連結的伺服器)
4) 首先我們從使用上來看看是否有區別,在sa和TestLink使用者下使用連結的伺服器[192.168.1.48]的情況:
(Figure16:sa使用者使用連結的伺服器)
(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)
SQL Server 連結的伺服器的安全