Как разрешить удаленное подключение к экземпляру SQL Server только для определенного общедоступного IP-адреса (белый список) и ограничить доступ ко всем остальным IP-адресам
Как разрешить удаленное подключение к экземпляру SQL Server только к определенному общедоступному IP-адресу (белый список)?
Например, вход из SSMS в экземпляр SQL Server, размещенный на выделенном сервере Windows, разрешает доступ только с определенного общедоступного 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
2 ответа
Похоже, вы бы использовали брандмауэр Windows (вы можете заблокировать порт (-ы) SQL Server и разрешить исключения для определенных IP-адресов).
Вы можете сделать это с помощью чего-то вроде триггера входа в систему, который проверяет IP-адрес с помощью sys.dm_exec_connections, но я думаю, что это гораздо менее желательный вариант, чем прямая блокировка трафика.
Конечно, гораздо сложнее сделать на уровне базы данных.