限制从Azure功能子网访问存储帐户

限制从Azure功能子网访问存储帐户,azure,azure-functions,azure-storage,vnet,Azure,Azure Functions,Azure Storage,Vnet,我在(S1)应用程序服务计划中托管了azure功能。Azure功能集成到VNet子网中。此子网已启用Microsoft.Storage和Microsoft.Web服务终结点,并且它已委托给Microsoft.Web/serverFarms 另一方面,存储帐户配置为仅接受来自azure功能所属的同一子网的请求 不幸的是,这不起作用。当我尝试从Azure函数与存储帐户通信时,我得到以下错误 2020-02-18T02:03:03.505 [Error] Faliure Occured Azure.R

我在(S1)应用程序服务计划中托管了azure功能。Azure功能集成到VNet子网中。此子网已启用Microsoft.StorageMicrosoft.Web服务终结点,并且它已委托给Microsoft.Web/serverFarms

另一方面,存储帐户配置为仅接受来自azure功能所属的同一子网的请求

不幸的是,这不起作用。当我尝试从Azure函数与存储帐户通信时,我得到以下错误

2020-02-18T02:03:03.505 [Error] Faliure Occured
Azure.RequestFailedException : This request is not authorized to perform this operation.
RequestId:0b034a99-701e-002c-09ff-e5bd0a000000
Time:2020-02-18T02:03:03.1177265Z
Status: 403 (This request is not authorized to perform this operation.)
ErrorCode: AuthorizationFailure

Headers:
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 0b034a99-701e-002c-09ff-e5bd0a000000
x-ms-client-request-id: 0bbe8185-4657-47f3-8566-5bcbd16c4274
x-ms-error-code: AuthorizationFailure
Date: Tue, 18 Feb 2020 02:03:02 GMT
Content-Length: 246
Content-Type: application/xml

   at Azure.Storage.Blobs.BlobRestClient.Container.GetPropertiesAsync_CreateResponse(ClientDiagnostics clientDiagnostics,Response response)
   at async Azure.Storage.Blobs.BlobRestClient.Container.GetPropertiesAsync(ClientDiagnostics clientDiagnostics,HttpPipeline pipeline,Uri resourceUri,String version,Nullable`1 timeout,String leaseId,String requestId,Boolean async,String operationName,CancellationToken cancellationToken)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at async Azure.Storage.Blobs.BlobContainerClient.GetPropertiesInternal(BlobRequestConditions conditions,Boolean async,CancellationToken cancellationToken)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Azure.Storage.TaskExtensions.EnsureCompleted[T](Task`1 task)
   at Azure.Storage.Blobs.BlobContainerClient.GetProperties(BlobRequestConditions conditions,CancellationToken cancellationToken)
   at SharedLib.Utils.TestStorageAccountAccess() at D:\poc-code\NetworkSecurityPoc\SharedLib\Utils.cs : 13
   at async MessengerFunction.Trigger.Run(HttpRequest req,ILogger log) at D:\poc-code\NetworkSecurityPoc\MessengerFunction\Trigger.cs : 25
但当我禁用存储帐户上的vnet限制时,一切都正常

我可能做错了什么


谢谢。

以下文档可能有助于解释发生这种情况的原因: 从MS文档: 创建函数应用程序时,必须创建或链接到支持Blob、队列和表存储的通用Azure存储帐户。您当前无法在此帐户上使用任何虚拟网络限制。如果在用于功能应用程序的存储帐户上配置虚拟网络服务端点,该配置将中断应用程序。
参考资料:

我想说这是网络问题,根据这里,所以将
网站\u VNET\u ROUTE\u全部设置为1
,然后它应该可以工作。

您是否需要使用区域虚拟网络集成或网关?Azure功能应用程序是在Windows还是Linux上运行?我使用的是区域虚拟网络集成(上面写着“预览”)。功能应用程序正在Windows上运行。实际上,我的Vnet没有网关子网。除了azure功能外,集成子网中不应使用其他资源。此外,建议使用自动部署它。如果取消选中子网中启用的
Microsoft.Web
服务终结点,它是否工作?我在当前设置中已取消选中Microsoft.Web,但它仍然不工作。我也按原样部署了引用的模板,但也不起作用