只讓指定的機器連接SQLServer服務器

背景

只想使某個IP的計算機才能連接到SQL Server服務器,不允許其他客戶端連接。

解決方法

可以直接在防火牆中做限制,只允許與指定的IP地址建立1433的通訊。當然,從更爲安全的角度來考慮,應該把1433端口改成其他的端口。

其他解決方法1(限從指定IP接入的客戶端)

如果使用SQL Server 2005,還可以通過端點限制的方法來實現,此方法要求一塊專門的網卡,所有可以連接SQL Server的客戶端均通過此網卡接入(假設此網卡的IP192.168.1.1):

1.      “SQL Server 配置管理器的“SQL Server 2005網絡配置中”,禁止除TCP/IP之外的所有協議;

2.      使用如下的T-SQL禁止默認的TCP端點

ALTER ENDPOINT [TSQL Default TCP]

STATE = STOPPED

3.      使用如下的T-SQL建立新的TCP端點和授權

USE master

GO

-- 建立一個新的端點

CREATE ENDPOINT [TSQL User TCP]

STATE = STARTED

AS TCP(

   LISTENER_PORT = 1433,

   LISTENER_IP = (192.168.1.1)  -- 偵聽的網絡地址

)

FOR TSQL()

GO

 

-- 授予所有登錄(或者指定登錄)使用此端點的連接權限

GRANT CONNECT ON ENDPOINT::[TSQL User TCP]

TO [public]

完成上述配置之後,只有通過網絡地址配置爲192.168.1.1的網卡接入的客戶端才能訪問SQL Server;另外,如果只授予指定登錄對端點的連接權限,則只有指定的登錄才能接入SQL Server實例。

其他解決方法2(限指定IP的客戶端接入)

SQL Server 2005升級到SP2或者更高的版本的時候,還可以通過新增的觸發器來實現控制。

執行下面的T-SQL後,將使除IP地址爲192.168.1.1之外的客戶端連接失敗。

USE master

GO

CREATE TRIGGER tr_LoginCheck

ON ALL SERVER

FOR LOGON

AS

IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.1'

    ROLLBACK TRAN

GO

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章