Azure Service Endpoints(Azure 服务终结点)是 Azure Virtual Network (VNet) 的一项安全功能,它允许你将你的 VNet 与受支持的 Azure 服务(如 Azure Storage、Azure SQL Database、Azure Cosmos DB 等)直接连接,并通过 Azure 骨干网络路由流量,而不是通过公共互联网。
核心概念:
- VNet 的扩展: 服务终结点实际上是将一个或多个 Azure 服务直接“扩展”到你的 VNet 中,使其看起来像是你的 VNet 的一部分。
- 私有路由: 启用服务终结点后,发往该 Azure 服务实例的流量将不再通过公共 IP 地址和公共互联网进行路由,而是通过 Azure 的内部骨干网络进行路由。
- 增强安全性:
- 移除公共 IP 暴露: 服务实例的公共 IP 地址仍然存在,但你的 VNet 中的资源不再通过该公共 IP 访问它,从而减少了暴露面。
- VNet 限制: 启用服务终结点后,你可以在目标 Azure 服务(如存储账户或 SQL 数据库)上配置网络规则 (Network Rules),仅允许来自特定 VNet 和子网的流量访问。这意味着即使你的服务仍然有公共 IP,也只有你指定的 VNet 能够访问它,大大限制了未经授权的访问。
- 无额外费用: 使用服务终结点本身不收取额外费用,但你仍然需要支付底层 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 中的虚拟机,你想让虚拟机安全地访问存储账户,并阻止其他公共访问。
-
创建一个 VNet 和一个子网。
- 例如:
MyVNet和AppSubnet。
- 例如:
-
创建一个 Azure 存储账户。
-
在 VNet 的子网中启用服务终结点:
- 导航到你的
MyVNet→子网 (Subnets)→ 选择AppSubnet。 - 在子网的配置页面,找到“服务终结点 (Service endpoints)”。
- 点击“服务 (Services)”下拉菜单,选择
Microsoft.Storage。 - 点击“保存 (Save)”。
- `
- 导航到你的