基于 IP 范围的对来自 Azure 上不同存储帐户的其他资源的访问控制

Posted

技术标签:

【中文标题】基于 IP 范围的对来自 Azure 上不同存储帐户的其他资源的访问控制【英文标题】:IP range based access control to additional resources from different storage account on Azure 【发布时间】:2020-06-21 13:51:46 【问题描述】:

目标是让单个地址 (static.example.com) 通过动态访问控制(基于 IP 范围)从多个存储帐户访问静态资源。

static.example.com/resource-1/... - accessible to all users and served via CDN
static.example.com/resource-2/... - accessible to all users and served via CDN
static.example.com/resource-3/... - accessible only to internal users
static.example.com/resource-4/... - accessible only to internal users
static.example.com/resource-5/... - accessible only to internal users
static.example.com/resource-6/... - accessible only to internal users

约束:

必须为来自内部网络的用户提供可用资源 在相同的主机名下 static.example.com 可供用户使用的资源 来自内部网络的必须存储在不同的存储帐户中

下图中突出显示的区域标记了要使用 Azure Service(-es) 的位置。 问题是可以使用哪些 Azure 服务(以及如何)来实现所描述的要求?

感谢任何帮助或建议。

【问题讨论】:

我可能会尝试 API 管理或函数代理 serverless360.com/blog/azure-function-proxies @silent 感谢您的想法,我将研究这些选项。我只是想知道 Function Proxy 是否会使 CDN 过时。基本上,用户总是从托管函数的位置下载资源,而不是从地理位置接近的 POP 下载资源。考虑到这一点和要求,是否有可能拥有这种类型的带有访问控制的路由,并且仍然可以获得 CDN 的好处。 嗯可能不会。进一步考虑这一点,您也许可以使用 Azure Frontdoor。内置缓存(在边缘节点上)。您需要检查这是否适用于您的文件大小 谢谢@silent。 AFD 看起来很有前途,我会试一试,如果我设法通过 AFD 达到预期的要求,我会用答案更新主题。 【参考方案1】:

您可以使用 Azure 应用程序网关 (AAGW) 轻松实现所需的场景。

我做过一个类似的场景,比这个复杂一点。前面还有一个 Azure 流量管理器。您可以使用 AAGW 中的 URL 路由和重定向来实现结果。

https://docs.microsoft.com/en-us/azure/application-gateway/url-route-overview

https://docs.microsoft.com/en-us/azure/application-gateway/redirect-overview

【讨论】:

【参考方案2】:

你需要 Azure CDN :)

Azure CDN 可以进行基于路径的路由: https://docs.microsoft.com/en-us/previous-versions/azure/mt757336(v=azure.100)?redirectedfrom=MSDN#url

Azure CDN 可以做 IP 过滤: https://docs.microsoft.com/en-us/previous-versions/azure/mt757336(v=azure.100)?redirectedfrom=MSDN#match-conditions

【讨论】:

以上是关于基于 IP 范围的对来自 Azure 上不同存储帐户的其他资源的访问控制的主要内容,如果未能解决你的问题,请参考以下文章

限制来自 Blob 存储中静态网站的 Azure 函数调用?

Azure 功能:访问存储帐户时出现 403 错误

基于国家/地区的基于IP的内容[重复]

Azure Load Balancer : 简介

适用于来自 Azure 云服务的流量的 Azure NSG 规则

来自 Azure Functions 的莫名其妙的存储事务