Wie lasse ich eine Remoteverbindung zur SQL Server-Instanz nur für bestimmte öffentliche IP-Adressen (Whitelist) zu?
Melden Sie sich beispielsweise von SSMS bei einer SQL Server-Instanz an, die auf einem dedizierten Windows-Server gehostet wird und den Zugriff nur von einer bestimmten öffentlichen IP-Adresse aus zulässt.
Außerdem muss der Zugriff auf alle anderen IPs beschränkt werden, d. h. die Anmeldung über SSMS muss verhindert werden.
Unten ist ein Quelltrigger: Kann ich zu Remotehost wechseln, um bestimmten öffentlichen IP-Zugriff zu ermöglichen?
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
Antwort1
Klingt nach etwas, das Sie mit der Windows-Firewall tun würden (Sie können die SQL Server-Ports blockieren und Ausnahmen für bestimmte IP-Adressen zulassen).
Sie können dies beispielsweise mit einemAnmeldetriggerdas die IP-Adresse mit sys.dm_exec_connections überprüft hat, aber ich denke, das ist eine weitaus weniger wünschenswerte Option, als den Datenverkehr direkt zu blockieren.
Auf Datenbankebene ist dies sicherlich viel schwieriger.
Antwort2
Nicht.
Wirklich, bitte nicht.
Installieren Sie ein VPN.