如何仅允许特定公共 IP 地址(白名单)远程连接到 SQL Server 实例?
例如,从 SSMS 登录到托管在 Windows 专用服务器上的 SQL Server 实例,仅允许从特定的公共 IP 访问。
此外,需要限制对所有其他 IP 的访问,即防止从 SSMS 登录。
以下是源触发器:我可以更改为 remotehost 以允许特定的公共 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。