如何僅允許遠端連線到特定公用 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。