我已经设置了一个带有弹性池的 Azure SQL Server,并在其中创建了一个测试数据库。
我还设置了 Azure 虚拟网络和点到站点 VPN。虚拟网络有 2 个子网 - 一个用于 GatewaySubnet,另一个用于放置 Windows 虚拟机。
我已成功配置对 VM 的远程桌面访问,并已验证当我连接到 VPN 时只能使用服务器的内部 IP 连接到远程桌面(我还禁止通过外部 IP 进行 RDP 访问 - 但这与我的问题无关)。
我想尽可能地限制和控制对 SQL Server 的访问。我已将“允许访问 Azure 服务”设置为“关闭”。我还将我的两个虚拟网络子网添加到 SQL Server 的防火墙设置中,并启用了“Microsoft.Sql”端点。
我已经验证我可以从虚拟机上安装的 SQL Server Management Studio 副本连接到 SQL Server。
但是 - 我无法使用 SQL Server Management Studio 从我的台式机进行连接,即使我通过 VPN 连接也是如此。我希望能够在不将我的客户端 IP 直接添加到防火墙的情况下执行此操作。我们有许多远程开发人员(均使用动态 IP)需要访问服务器,我不想承担管理这些防火墙规则的开销。我宁愿只给他们 VPN 客户端。
提前致谢...
答案1
我刚刚收到 Azure 支持部门关于此问题的回复(2018 年 3 月 3 日),他们确认我尝试实现的目标目前是不可能的。
答案2
与使用 VPN 网关相比,这更像是一种解决方法。
您可以尝试在您的 VM 上设置一个带有 NAT 的 VPN 服务器,在 Azure SQL 上允许 VM IP 地址,然后您的开发人员将连接到 VM 上的 VPN 服务器。
NAT 将欺骗 Azure SQL 认为客户端就是 VM。
答案3
Azure SQL 使用网关来确定客户端想要连接哪些集群:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-connectivity-architecture。
由于网关具有固定的 IP 地址,因此我只需在 VPN 接口中为特定的 sql gw 添加一条静态路由。
例如,如果您从 192.168.1.0/24 的 VPN 获取 IP 地址范围,并且需要连接到澳大利亚东部地区的 SQL,请执行以下命令:
add route 191.238.66.109 mask 255.255.255.255 192.168.1.1
add route 13.75.149.87 mask 255.255.255.255 192.168.1.1
在 powershell 中使用 可以完成同样的操作Add-VpnConnectionRoute
,它将添加一条静态路由。
它目前正在为我服务于澳大利亚东部和东南亚地区