Azure Service Endpoints 概念和定义

Azure Service Endpoints(Azure 服务终结点)是 Azure Virtual Network (VNet) 的一项安全功能,它允许你将你的 VNet 与受支持的 Azure 服务(如 Azure Storage、Azure SQL Database、Azure Cosmos DB 等)直接连接,并通过 Azure 骨干网络路由流量,而不是通过公共互联网。

核心概念:

  1. VNet 的扩展: 服务终结点实际上是将一个或多个 Azure 服务直接“扩展”到你的 VNet 中,使其看起来像是你的 VNet 的一部分。
  2. 私有路由: 启用服务终结点后,发往该 Azure 服务实例的流量将不再通过公共 IP 地址和公共互联网进行路由,而是通过 Azure 的内部骨干网络进行路由。
  3. 增强安全性:
    • 移除公共 IP 暴露: 服务实例的公共 IP 地址仍然存在,但你的 VNet 中的资源不再通过该公共 IP 访问它,从而减少了暴露面。
    • VNet 限制: 启用服务终结点后,你可以在目标 Azure 服务(如存储账户或 SQL 数据库)上配置网络规则 (Network Rules),仅允许来自特定 VNet 和子网的流量访问。这意味着即使你的服务仍然有公共 IP,也只有你指定的 VNet 能够访问它,大大限制了未经授权的访问。
  4. 无额外费用: 使用服务终结点本身不收取额外费用,但你仍然需要支付底层 Azure 服务的费用。

Service Endpoints vs. Private Link (专用链路):

在讨论服务终结点时,常常会将其与 Azure Private Link 进行比较。虽然它们都是为了安全地访问 Azure 服务,但它们有几个关键区别:

特性 Azure Service Endpoints Azure Private Link
工作方式 将服务扩展到 VNet,流量通过 Azure 骨干网路由。 将服务的私有 IP 地址映射到你的 VNet 中。
访问方式 你的 VNet 子网直接访问服务的公共终结点(但流量是私有的)。 通过服务的私有 IP 地址和私有 DNS 区域访问服务。
防火墙配置 在服务防火墙上配置 VNet 和子网规则。 无需在服务防火墙上配置,因为流量默认只来自你的 VNet。
暴露面 服务的公共 IP 终结点仍然存在,但只接受来自指定 VNet 的流量。 服务的公共 IP 终结点可以完全禁用,或从未创建。
跨区域访问 通常只适用于同一区域或配对区域的服务。 支持跨区域访问服务。
与本地连接 无法直接从本地网络通过 ExpressRoute/VPN 网关访问。 可以从本地网络通过 ExpressRoute/VPN 网关访问。
支持服务 Azure Storage, SQL DB, Cosmos DB, Key Vault, Event Hubs, 等。 更多服务,包括你自己的应用程序(通过 Private Link Service)。
复杂性 配置相对简单。 配置稍微复杂,涉及到私有 DNS 区域。
费用 无额外费用。 有额外费用(按小时和处理的数据量计费)。

何时使用 Service Endpoints:

  • 你希望加强 VNet 内资源与 Azure 平台服务之间的安全性。
  • 你的应用程序和 Azure 服务都在同一个 Azure 区域
  • 你不需要从本地网络通过私有连接访问 Azure 服务。
  • 你更注重成本效益,不需要 Private Link 提供的更高级别的隔离和功能。
  • 你的安全模型允许 Azure 服务的公共 IP 存在,但只接受来自你 VNet 的流量。

使用步骤示例(以 Azure Storage 为例):

假设你有一个存储账户和一个部署在 VNet 中的虚拟机,你想让虚拟机安全地访问存储账户,并阻止其他公共访问。

  1. 创建一个 VNet 和一个子网。

    • 例如:MyVNetAppSubnet
  2. 创建一个 Azure 存储账户。

  3. 在 VNet 的子网中启用服务终结点:

    • 导航到你的 MyVNet子网 (Subnets) → 选择 AppSubnet
    • 在子网的配置页面,找到“服务终结点 (Service endpoints)”。
    • 点击“服务 (Services)”下拉菜单,选择 Microsoft.Storage
    • 点击“保存 (Save)”。
    • `