由于防火墙,无法从VM到Azure Blob存储

时间:2020-10-05 13:05:51

标签: azure networking

我有一个Powershell脚本,该脚本在连接到Azure Blob存储和Azure SQL的Azure VM中运行。 Blob存储和SQL均受防火墙保护,Blob存储是VNet的一部分。 VM在自己的VNet上。我在Azure存储和sql Azure中都插入了VM的IP地址。对SQL Azure的访问权限很好,但是当我尝试连接到Blob存储时,会收到错误消息

“ Get-AzStorageContainer:该请求无权执行 此操作。 HTTP状态码:403-HTTP错误消息:此 请求无权执行此操作。错误代码: AuthorizationFailure”。

我正在使用连接字符串来访问Blob存储。如果从PC连接(其IP地址已在防火墙中输入),则可以正常访问。如果我使用azure Storage Explorer中的连接字符串从VM访问blob存储,则会收到相同的错误消息。

如果我禁用了Blob存储上的防火墙,则可以使用Powershell和Storage Explorer在VM上正常访问它。

不确定这是否相关,但是如果我在VM上执行Get-NetIPAddress | Format-Table,则会得到报告的Ipv6 ip地址,而不是我在防火墙和其他任何地方使用的IPv4。

这可能是相关的,但不知道如何以另一种方式证明它:Azure Storage account firewall rules work for table but break blob storage

有人可以提出这种奇怪行为的原因吗?如何在不禁用防火墙的情况下从VM获得对Blob存储的可靠访问?

1 个答案:

答案 0 :(得分:1)

不确定您说过“ blob存储是VNet的一部分。”。但是在这种情况下,您可以在VNet(位于VM)中为Azure存储启用Service endpoint,并将其子网添加到Blob存储的虚拟网络中。您无需将虚拟机的IP地址添加到存储帐户的防火墙中。

enter image description here

参考:http://techtalk.cloud/azure-vnet-integration-service-endpoints-for-azure-storage/

更新

如果存储帐户和VM位于相同区域,则流量将通过Azure骨干网传输。我在其他区域的VM上进行了尝试,然后将Azure VM的静态公共IP白名单添加到存储帐户的防火墙中,可以正常工作!

注意

IP网络规则对源自相同的请求不起作用 Azure区域作为存储帐户。使用虚拟网络规则来 允许相同区域的请求。

与存储帐户使用情况部署在相同区域中的服务 用于通信的私有Azure IP地址。因此,您不能 限制对特定Azure服务的公共访问 出站IP地址范围。

参考:https://docs.microsoft.com/en-us/azure/storage/common/storage-network-security#grant-access-from-an-internet-ip-range