New*_*DBA 4 security sql-server sql-server-2014
我们正在尝试解决其中一个应用程序的连接问题,该应用程序试图从防火墙后面非常安全的 SQL 服务器提取数据。我不是安全方面的专业知识,但需要有关如何继续打开该应用程序的端口以从安全域后面的 SQL Server 提取数据的帮助。
\n我们\xe2\x80\x99已经打开了sql server正在侦听的端口,比如说12345,但仍然没有运气。
\n我如何知道可能需要打开哪些其他端口(例如 udp 1434 默认 1433 或镜像(例如 5022))?我们有什么办法可以找到这些信息吗?
\n如果您使用独立的 SQL Server 实例,答案非常简单。如果您有一个可用性组,并且正在使用 AG 侦听器进行连接,那么您需要为 AG 侦听器执行其他防火墙规则。
如果 SQL Server 在 1433 以外的端口上运行,您需要告诉您的应用程序要连接哪个端口。
实现此目的的一种方法是让SQL Server Browser Service广播该信息。鉴于您将其描述为“非常安全”的环境,此选项可能不是最好的。但是,如果您确实希望采用此方法,则需要允许 UDP 1434。
第二个选项就是在连接字符串中包含端口号。ServerName,port
在 SSMS 中,您只需以MySecureServer,12345
或 等格式输入服务器名称MySecureServer.am2.co,12345
。同样,在应用程序连接字符串中,您可以使用相同的参数格式Server
,例如Server=MySecureServer,12345;Database=myDataBase;Trusted_Connection=Yes
.
如果您要连接到可用性组侦听器而不是(或除了)服务器名称,那么您需要让防火墙允许访问侦听器 IP 和端口而不是(或除了)服务器名称,您将在连接字符串中使用侦听器名称和端口。
作为 DBA,我通常需要连接到实例本身和AG侦听器,因此我会为实例 IP 及其端口、AG IP 和关联端口配置防火墙规则。但是,根据您的环境和安全限制,您可能不需要/不想同时执行这两项操作。
您可以使用以下查询确定 AG 侦听器使用的 IP 和端口的完整列表:
SELECT l.dns_name, l.port, i.ip_address
FROM sys.availability_group_listeners AS l
JOIN sys.availability_group_listener_ip_addresses AS i
ON i.listener_id = l.listener_id
Run Code Online (Sandbox Code Playgroud)