我创建了一个 SQL Server,然后使用私有 IP 创建了与我的 TESTVNET/SUBNET1 的私有链接10.1.1.4
。我现在已禁用 SQL 服务器的公共访问。
I have an Azure function running on App Service which I've VNET Integrated with VNET/SUBNET2.
Subnet 2 shows it's delegated to server farms. (also if someone can explain what does delegate to means, I found I cannot create any VM in that subnet as well, probably it's just can't be useful for any other purpose)
现在,当我的天蓝色函数尝试连接到数据库时。它失败并出现以下错误:
2020-08-30T15:25:45.216 [Error] Unhandled rejection SequelizeAccessDeniedError: Cannot open server "10.1.1.4" requested by the login. The login failed.
但是,如果我提供公共 FQDN,则会出现以下错误。
2020-08-30T15:29:43.654 [Error] Unhandled rejection SequelizeAccessDeniedError: Reason: An instance-specific error occurred while establishing a connection to SQL Server. The public network interface on this server is not accessible. To connect to this server, use the Private Endpoint from inside your virtual network.
这里,私有端点创建的私有 DNS 应该理想地用于获取 SQL 数据库的私有 IP,但似乎该函数没有使用私有 DNS,可能是因为不是在隔离环境中运行。
现在,在我的 Azure 功能应用程序设置中,我添加了WEBSITE_VNET_ROUTE_ALL =1
这意味着所有请求都应路由到 VNET。所以现在如果我启用公共访问互联网,并允许Azure服务访问数据库(我认为azure默认添加了公共IP)。该函数连接到数据库。
现在我想了解哪里出了问题以及为什么专用端点连接不起作用。任何帮助表示赞赏。
In the DB firewall settings, I've allowed traffic from below to subnets:
Network Configuration
TESTVNET
: 10.1.0.0/16
SUBNET 1
: 10.1.1.0/24
SUBNET 2
: 10.1.2.0/24
我已在 SUBNET 1 和 SUBNET 2 中禁用 SQL 的服务端点。我的 NSG 具有默认设置,即
允许 VnetInBound、允许 AzureLoadBalancerInBound、DenyAllInBound
允许 VnetOutBound、允许 InternetOutBound、DenyAllOutBound。
由于我的专用链接在同一 VNET 中具有专用 IP,因此我认为 NSG 不会产生任何影响。
Azure 新手,正在测试。感谢您的耐心等待。