當(dāng)需要用遠(yuǎn)程服務(wù)器數(shù)據(jù)庫和本地進(jìn)行數(shù)據(jù)交互的時候(例如導(dǎo)數(shù)據(jù)等),我們通常會在本地創(chuàng)建一個遠(yuǎn)程服務(wù)器的數(shù)據(jù)庫鏈接,關(guān)于創(chuàng)建創(chuàng)建鏈接服務(wù)器可以參考:SQL Server 創(chuàng)建鏈接服務(wù)器,但是我們很少去關(guān)注鏈接服務(wù)器的安全性問題。
為了控制鏈接服務(wù)器的安全性,我們采取的方法是:控制只有某個用戶能使用這個鏈接服務(wù)器,實(shí)現(xiàn)的效果就如Figure1和Figure2所示,TestLink用戶能看到并使用鏈接服務(wù)器:[192.168.1.5],而sa用戶卻無法看到鏈接服務(wù)器。另外一種安全模式如Figure14和Figure15所示。
(Figure1:sa用戶看到的鏈接服務(wù)器)
(Figure2:TestLink用戶看到的鏈接服務(wù)器)
對于鏈接服務(wù)器的安全,可以實(shí)現(xiàn)兩種效果:
1) 用戶A能看見能使用,B用戶不能看見這個鏈接服務(wù)器;
2) 用戶A能看見能使用,B用戶能看見但是沒有權(quán)限使用;
(一) 實(shí)現(xiàn)效果:用戶A能看見能使用,B用戶不能看見這個鏈接服務(wù)器;
1) 首先我們填寫遠(yuǎn)程服務(wù)器的地址,如果有端口就加入端口,不填表示端口默認(rèn)是1433
(Figure3:創(chuàng)建鏈接服務(wù)器)
2) 在不考慮安全性的問題的情況下,我通常是使用Figure4的做法來設(shè)置賬號和密碼的。
(Figure4:通常設(shè)置賬號密碼的做法)
3) 如果要實(shí)現(xiàn)鏈接服務(wù)器的安全,那就選擇【不建立連接】,再點(diǎn)擊【添加】按鈕,這樣就可以為“本地服務(wù)器登錄到遠(yuǎn)程服務(wù)器登錄的映射”添加本地A用戶與服務(wù)器B用戶的一個映射關(guān)系。
(Figure5:未定義的登錄)
4) 本地登錄設(shè)置sa這個用戶登錄,與之對應(yīng)的是遠(yuǎn)程服務(wù)器的用戶sa和密碼****進(jìn)行遠(yuǎn)程服務(wù)器的登錄驗證,如下圖所示:
(Figure6:登錄映射)
5) 通過上面幾個步驟的設(shè)置,現(xiàn)在這個鏈接服務(wù)器就只有sa用戶能夠使用了,為了看到效果,我們創(chuàng)建一個TestLink的用戶,創(chuàng)建界面操作如Figure7、Figure8,為了真實(shí)反應(yīng)生產(chǎn)環(huán)境的賬號權(quán)限管理,我們另外為TestLink分配一個數(shù)據(jù)庫權(quán)限,如Figure9圖所示。
(Figure7:創(chuàng)建TestLink用戶)
(Figure8:設(shè)置TestLink服務(wù)器角色)
(Figure9:設(shè)置TestLink用戶身份)
6) 分別使用sa和TestLink進(jìn)行登錄就能很直觀的看出效果了:sa擁有[192.168.1.5]這個鏈接服務(wù)器的使用權(quán)限,而TestLink連看到的機(jī)會都沒有。效果如Figure1和Figure2所示。
(二) 實(shí)現(xiàn)效果:用戶A能看見能使用,B用戶能看見但是沒有權(quán)限使用;
1) 假設(shè)我們需要在TestLink用戶上創(chuàng)建一個鏈接服務(wù)器,但是想sa沒有權(quán)限使用,如果直接在TestLink用戶下創(chuàng)建鏈接服務(wù)器會出現(xiàn)下面Figure10的錯誤,因為沒有權(quán)限,權(quán)限可以使用Figure11圖進(jìn)行修改。
(Figure10:TestLink用戶創(chuàng)建鏈接服務(wù)器錯誤)
(Figure11:修改TestLink的角色)
2) 現(xiàn)在我們創(chuàng)建一個[192.168.1.48]的鏈接服務(wù)器,設(shè)置如Figure12和Figure13所示。
(Figure12:創(chuàng)建新鏈接服務(wù)器)
(Figure13:設(shè)置TestLink登錄映射)
3) 我們使用sa和TestLink用戶登錄查看服務(wù)器鏈接,下圖 Figure13和Figure14中看到的列表都是一樣,那是否沒有區(qū)別呢?
(Figure14:sa用戶看到的鏈接服務(wù)器)
(Figure15:TestLink用戶看到的鏈接服務(wù)器)
4) 首先我們從使用上來看看是否有區(qū)別,在sa和TestLink用戶下使用鏈接服務(wù)器[192.168.1.48]的情況:
(Figure16:sa用戶使用鏈接服務(wù)器)
(Figure17:TestLink用戶使用鏈接服務(wù)器)
(三) 總結(jié):
1) 用戶能不能看到鏈接服務(wù)器是由sysadmin角色來決定的,在為一個用戶分配角色的時候就應(yīng)該注意這點(diǎn);
2) 如果兩個用戶都在sysadmin角色下,即使他們看到的鏈接服務(wù)器列表是一樣的,但是也是可以控制鏈接服務(wù)器的權(quán)限的,如Figure16和Figure17所示;
3) 如果sa用戶知道192.168.1.48的賬號和密碼,他也可以自己在[192.168.1.48]鏈接服務(wù)器添加自己的用戶登錄映射,一樣可以使用這個遠(yuǎn)程鏈接服務(wù)器,前提是sa用戶知道賬號和密碼;這樣只要控制192.168.1.48賬號的安全就可以了;
4) 如果想在用戶登錄映射的時候使用模擬,那么你設(shè)置的這個用戶必須與遠(yuǎn)程鏈接服務(wù)器的用戶名和密碼要相同才可以使用;
5) 如果鏈接服務(wù)器是 SQL Server 的實(shí)例,若要獲取所有可用的統(tǒng)計,用戶必須擁有該表或者是鏈接服務(wù)器上 sysadmin 固定服務(wù)器角色、db_owner 固定數(shù)據(jù)庫角色或者 db_ddladmin 固定數(shù)據(jù)庫角色的成員。