僅允許指定的機器連接SQLServer服務器

字號:

問題:希望僅僅允許某個指定IP的計算機連接到SQL Server服務器,但不允許其他的客戶端進行連接。
    解決方法如下:
    你可以直接在防火墻中做限制,只允許與指定的IP地址建立1433的通訊。(注:從安全的角度來考慮,應該把1433端口改成其他的端口。)
    其他的解決方法:
    一、限從指定IP接入的客戶端:
    如果使用SQL Server 2005,還可以通過端點限制的方法來實現(xiàn),此方法要求一塊專門的網(wǎng)卡,所有可以連接SQL Server的客戶端均通過此網(wǎng)卡接入(假設此網(wǎng)卡的IP是192.168.1.1):
    1.在“SQL Server 配置管理器”的“SQL Server 2005網(wǎng)絡配置中”,禁止除TCP/IP之外的所有協(xié)議;
    2.使用如下的T-SQL禁止默認的TCP端點
    ALTER ENDPOINT [TSQL Default TCP]
     STATE = SPED
    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) -- 偵聽的網(wǎng)絡地址
    )
    FOR TSQL()
    GO
    -- 授予所有登錄(或者指定登錄)使用此端點的連接權限
    GRANT CONNECT ON ENDPOINT::[TSQL User TCP]
     TO [public]
    完成以上的配置之后,只有通過網(wǎng)絡地址配置為192.168.1.1的網(wǎng)卡接入的客戶端才能訪問SQL Server;此外,假如只授予指定登錄對端點的連接權限,則只有指定的登錄才能接入SQL Server實例。
    二、限指定IP的客戶端接入
    當SQL Server 2005升級到SP2或者更高的版本的時候,你還可以通過新增的觸發(fā)器來實現(xiàn)控制。
    執(zhí)行一下的T-SQL后,IP地址為192.168.1.1以外的客戶端連接將會出現(xiàn)失敗的現(xiàn)象。
    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