利用 Azure Front Door 将文件上传到 Azure 存储提供了许多好处,包括增强复原能力、可伸缩性和额外的安全措施。 这些措施包括使用 Web 应用程序防火墙 (WAF) 扫描上传的内容,以及对存储帐户使用自定义传输层安全性 (TLS) 证书。
Architecture
在此参考体系结构中,部署了具有各种原点的多个 Azure 存储帐户和 Azure Front Door 配置文件。 利用多个存储帐户进行内容上传可以提高性能和可靠性,并通过让不同的客户端按不同的顺序使用存储帐户来促进负载分布。 同时部署 Azure 应用服务以托管 API,以及 Azure 服务总线队列。
Dataflow
此方案中的数据流如下所示:
- 客户端应用启动基于 Web 的 API,检索多个上传位置的列表。 对于客户端上传的每个文件,该 API 会生成一个可能的上传位置的列表,每个现有的存储帐户中都有一个。 每个 URL 都包含共享访问签名 (SAS),确保将 URL 完全用于上传到指定的 Blob URL。
- 客户端应用程序会尝试使用 API 返回的列表中第一个 URL 来上传 Blob。 客户端使用自定义域名和自定义 TLS 证书来与 Azure Front Door 建立安全连接。
- Azure Front Door WAF 扫描请求。 如果 WAF 确定请求的风险级别过高,则它会阻止请求,并且 Azure Front Door 会返回 HTTP 403 错误响应。 否则,请求将被路由到所需的存储帐户。
- 文件上传到 Azure 存储帐户。 如果此请求失败,则客户端应用程序将使用 API 返回的列表中下一个 URL 来尝试上传到备用存储帐户。
- 客户端应用程序通知 API 文件上传已完成。
- API 将一个项置于 Azure 服务总线队列中,以便进一步处理上传的文件。
Components
- Azure 应用服务负责生成 Blob 的上传 URL 和 SAS。
- Azure Front Door 处理客户端连接,使用 WAF 扫描它们,并将上传请求路由到 Azure 存储帐户。
- Azure 存储用于将上传的文件存储在 Blob 中。
- Azure 服务总线充当队列,以触发对上传的内容的进一步处理。
Scenario details
文件上传的责任通常分配给 API 或后端系统。 但是,通过使客户端应用程序能够将 JSON 文件直接上传到 Blob 存储,我们可确保计算资源(处理来自客户端的上传的 API 层)不会成为瓶颈。 此方法还会降低总体成本,因为 API 不再在文件上传上花费计算时间。
该 API 负责确保跨存储帐户均匀分发文件。 这意味着你必须定义一个逻辑,以确定要让客户端应用程序使用的默认存储帐户。
Azure Front Door 和 Azure 存储帐户的组合为内容上传提供了单一入口点(单个域)。
具有多个存储帐户原点的 Azure Front Door 配置
对于每个存储帐户,Azure Front Door 的配置包括以下步骤:
- Origin configuration
- Route configuration
- 规则集配置
In the origin configuration, you need to define the origin type as a blob storage account and select the appropriate storage account available within your subscription.
在“原点组路由”中,你必须定义要在原点组中进行处理的路径。 确保选择新创建的原点组,并指定存储帐户中容器的路径。
最后,需要创建新的规则集配置。 配置“保留不匹配的路径”设置非常重要,这会允许将源模式之后的剩余路径追加到新路径。
Considerations
伸缩性和性能
建议的体系结构让你可以使用多个存储帐户进行内容上传,从而实现水平可伸缩性。
Resiliency
Azure Front Door 具有全球分布式体系结构,是一项高度可用的服务,它具有对单个 Azure 区域和状态点 (PoP) 的故障的复原力。 此体系结构在不同区域中部署多个存储帐户,可提高复原能力,并通过让不同的客户端按不同顺序使用存储帐户来实现负载分布。
Cost optimization
Azure 存储的成本结构允许根据需要创建任意数量的存储帐户,而不会增加解决方案的成本。 存储的文件的数量和大小会影响成本。
安全性
通过使用 Azure Front Door,可以从 DDoS 防护等安全功能中受益。 默认的 Azure 基础结构 DDoS 防护,它通过使用 Azure Front Door 网络的全球规模和容量实时监视和缓解网络层攻击。 使用 Web 应用程序防火墙 (WAF) 可以保护 Web 服务免受常见攻击和漏洞的侵害。 如果你的应用程序需要这些功能,则还可以使用 Azure Front Door WAF 执行速率限制和地区筛选。
还可以使用专用链接来保护 Azure 存储帐户。 存储帐户可以配置为拒绝来自 Internet 的直接访问,并且仅允许通过 Azure Front Door 使用的专用终结点连接的请求。 此配置可确保每个请求都由 Front Door 处理,并避免将存储帐户的内容直接公开给 Internet。 但是,此配置需要 Azure Front Door 的高级层。 如果使用标准层,则存储帐户必须可公开访问。
自定义域名
Azure Front Door 支持自定义域名,并可为这些域颁发和管理 TLS 证书。 使用自定义域可以确保客户端从受信任且熟悉的域名接收文件,并且 TLS 会加密与 Front Door 的每个连接。 当 Front Door 管理 TLS 证书时,你可以避免因 TLS 证书无效或过时而导致的中断和安全问题。
Azure 存储还支持自定义域名,但在使用自定义域时不支持 HTTPS。 Front Door 是将自定义域名与存储帐户一起使用的最佳方法。
部署此方案
若要使用 Bicep 部署此方案,请参阅部署具有 Blob 原点和专用链接的 Azure Front Door Premium。
Next steps
了解如何创建 Front Door 配置文件。