无法从在存储帐户的允许子网中创建的 Azure 虚拟机下载 blob

Posted

技术标签:

【中文标题】无法从在存储帐户的允许子网中创建的 Azure 虚拟机下载 blob【英文标题】:Unable to download blob from Azure Virtual Machine created in the allowed subnet of the Storage Account 【发布时间】:2020-05-26 10:11:55 【问题描述】:

我已将我的存储帐户配置为允许从子网访问。我在子网内创建了一个虚拟机。然后,我从我的存储帐户为该 blob 生成了一个有效的 SAS url。我使用 Azure Cloud Shell 中的 PS Remoting 登录到虚拟机。在那个 powershell 会话中,我输入了以下命令: curl 。我收到了 403 Forbidden 错误。

请注意,子网的端点状态显示为已启用。当我查看子网服务端点时,存储已启用。子网配置了具有默认值的网络安全组。唯一的补充是允许访问 PS Remoting 端口。

为什么我无法从虚拟机访问 blob?

【问题讨论】:

你能显示完整的 curl 命令吗?或者您可以尝试在该 Azure VM 上使用 Get-AzureStorageBlobContent 下载 blob?view=azurermps-6.13.0)?见more example @NancyXiong 我在 VM 上安装了 Az.Account 和 Az.Storage 的 PS 模块。我执行了一个成功的 Connect-AzAccount -UseDeviceAuthentication。然后我执行了 Get-AzStorageAccount。它没有返回任何存储帐户,这让我怀疑它无法连接到存储帐户。我使用正确的上下文执行了以下操作,也得到了 403: Get-AzStorageBlobContent -Blob "ConfigureServer.ps1" -Container "deploy" -Context $ctx 【参考方案1】:

来自document,

当网络规则生效时访问存储帐户的应用程序 实际上仍然需要对该请求进行适当的授权。 Azure Active Directory (Azure AD) 支持授权 blob 和队列的凭据,具有有效的帐户访问密钥,或 使用 SAS 令牌。

当您在授权的 vNet 中访问存储帐户时,您仍然需要为请求提供适当的授权。请在你身边检查。此外,您可以在该异常中允许受信任的 Microsoft 服务

【讨论】:

以上是关于无法从在存储帐户的允许子网中创建的 Azure 虚拟机下载 blob的主要内容,如果未能解决你的问题,请参考以下文章

限制从 Azure 函数子网访问存储帐户

从 Azure Function App 访问带有防火墙的 Azure Blob 存储

无法访问在 vpc 的子网 cidr 范围为 100.0.0.0/26 的私有子网中创建的 mysql

如何将标签添加到在 Microsoft Azure 中创建的文件存储、队列存储和表存储

如何在 ARM 模板中引用在 Azure 门户中创建的现有存储账户?

Azure Web App VNet 与具有专用链接的存储帐户集成