%EB%A1%9C%EB%A7%8C%20SQL%20Server%20%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%9B%90%EA%B2%A9%20%EC%97%B0%EA%B2%B0%EC%9D%84%20%ED%97%88%EC%9A%A9%ED%95%98%EA%B3%A0%20%EB%8B%A4%EB%A5%B8%20%EB%AA%A8%EB%93%A0%20IP%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%95%A1%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%A0%9C%ED%95%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
특정 공용 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을 설치하세요.