如何僅允許遠端連線至 SQL Server 執行個體特定的公用 IP 位址(白名單)並限制對所有其他 IP 的存取

如何僅允許遠端連線至 SQL Server 執行個體特定的公用 IP 位址(白名單)並限制對所有其他 IP 的存取

如何僅允許遠端連線到特定公用 IP 位址(白名單)的 SQL Server 執行個體?

例如,從 SSMS 登入 Windows 專用伺服器上託管的 SQL Server 實例,僅允許從特定公用 IP 進行存取。

此外,還需要限制對所有其他 IP 的訪問,即防止從 SSMS 登入。

下面是一個來源觸發器:我可以更改為遠端主機以允許特定的公共 IP 存取嗎

EXEC sp_cycle_errorlog ;  
GO  
CREATE TRIGGER trigLogon_CheckForIPAddress
ON ALL SERVER
FOR LOGON
AS
BEGIN
  IF NOT EXISTS (
    SELECT
      client_net_address AS ipaddress
    FROM sys.dm_exec_connections
    WHERE session_id = @@spid
      AND ISNULL(client_net_address ,'Named Pipes?') IN('<localhost>','Named Pipes?','192.168.0.1','192.168.0.2','192.168.0.40') )
    BEGIN
      RAISERROR('Unauthorized use of login from inpermissible machine IP.', 16, 1)
      ROLLBACK
    END
END;
GO
ENABLE TRIGGER trigLogon_CheckForIPAddress ON ALL SERVER

答案1

聽起來像是使用 Windows 防火牆所做的事情(您可以封鎖 SQL Server 端口,並允許某些 IP 位址例外)。

你可以用類似的東西來做到這一點登入觸發器使用 sys.dm_exec_connections 檢查 IP 位址,但我認為與完全封鎖流量相比,這是一個不太理想的選擇。

當然,在資料庫層級做到這一點要困難得多。

答案2

不。

真的,請不要。

安裝VPN。

相關內容