Azure 虚拟网络服务终结点通过 Azure 主干网络通过优化路由提供与 Azure 服务的安全直接连接。 通过这些终结点,可以完全保护虚拟网络的关键 Azure 服务资源,使专用 IP 地址能够访问 Azure 服务,而无需公共 IP 地址。 本指南介绍如何配置服务终结点、其优点和实现的最佳做法。
注意
建议使用 Azure 专用链接和专用终结点来保护和专用访问 Azure 平台上托管的服务。 Azure 专用链接将网络接口部署到为 Azure 存储或 Azure SQL 等 Azure 服务选择的虚拟网络中。 有关详细信息,请参阅 Azure 专用链接和什么是专用终结点?。
服务终结点适用于以下 Azure 服务和区域。 括号中是 Microsoft.* 资源。 在为服务配置服务终结点时,请从子网端启用此资源:
通常可用
Azure 存储 (Microsoft.Storage):通常可用于所有 Azure 区域。
Azure 存储跨区域服务终结点 (Microsoft.Storage.Global):已在所有 Azure 区域中正式发布。
Azure SQL 数据库 (Microsoft.Sql):通常可用于所有 Azure 区域。
Azure Synapse Analytics ( Microsoft.Sql):通常适用于所有 Azure 区域中的专用 SQL 池(以前称为 SQL DW)。
Azure Database for PostgreSQL 服务器 (Microsoft.Sql):在可以使用数据库服务的 Azure 区域中通常可用。
Azure Database for MySQL 服务器 (Microsoft.Sql):在可以使用数据库服务的 Azure 区域中通常可用。
Azure Database for MariaDB (Microsoft.Sql):在可以使用数据库服务的 Azure 区域中通常可用。
Azure Cosmos DB (Microsoft.AzureCosmosDB):在所有 Azure 区域已推出正式版。
Azure Key Vault (Microsoft.KeyVault):在所有 Azure 区域已推出正式版。
Azure 服务总线 (Microsoft.ServiceBus):在所有 Azure 区域已推出正式版。
Azure 应用服务 (Microsoft.Web):通常可在应用服务可用的所有 Azure 区域中使用。
主要优点
服务终结点提供以下优势:
改进了 Azure 服务资源的安全性:虚拟网络专用地址空间可能会重叠。 不能使用重叠空格来唯一标识源自虚拟网络的流量。 服务终结点通过将虚拟网络标识扩展到服务,实现对 Azure 服务资源的保护,使得这些资源能够被安全地连接到虚拟网络。 在虚拟网络中启用服务终结点后,可以添加虚拟网络规则,以在虚拟网络中保护 Azure 服务资源。 添加规则可以完全消除通过公共 Internet 对资源进行访问的可能性,并仅允许来自自己虚拟网络的流量,从而提高了安全性。
来自虚拟网络的 Azure 服务流量的最佳路由:目前,虚拟网络中强制 Internet 流量发往本地和/或虚拟设备的任何路由也会强制 Azure 服务流量采用与 Internet 流量相同的路由。 服务终结点为 Azure 流量提供最佳路由。
终结点始终将直接来自虚拟网络的服务流量转发到 Azure 主干网络上的服务。 将流量保留在 Azure 主干网络上可以通过强制隧道持续审核和监视来自虚拟网络的出站 Internet 流量,而不会影响服务流量。 有关用户定义的路由和强制隧道的详细信息,请参阅 Azure 虚拟网络流量路由。
设置简单,管理开销更少:不再需要使用虚拟网络中的保留公共 IP 地址通过 IP 防火墙保护 Azure 资源。 没有设置服务终结点所需的网络地址转换(NAT)或网关设备。 只需选择一下子网,即可配置服务终结点。 不会产生维护终结点的额外开销。
限制
该功能仅适用于使用 Azure 资源管理器部署模型部署的虚拟网络。
终结点在 Azure 虚拟网络中配置的子网上启用。 终结点不可用于从本地服务发往 Azure 服务的流量。 有关详细信息,请参阅保护从本地进行的 Azure 服务访问
对于 Azure SQL,服务终结点仅适用于虚拟网络区域中的 Azure 服务流量。
在虚拟网络中保护 Azure 服务
虚拟网络服务终结点为 Azure 服务提供虚拟网络的标识。 在虚拟网络中启用服务终结点后,可以添加虚拟网络规则,以在虚拟网络中保护 Azure 服务资源。
当前,来自虚拟网络的 Azure 服务流量使用公共 IP 地址作为源 IP 地址。 使用服务终结点时,服务流量会在通过虚拟网络访问 Azure 服务时改用虚拟网络专用地址作为源 IP 地址。 通过这种切换,无需 IP 防火墙中使用的保留公共 IP 地址即可访问服务。
注意
使用服务终结点时,服务流量的子网中虚拟机的源 IP 地址将从公共 IPv4 地址改为专用 IPv4 地址。 使用 Azure 公共 IP 地址的现有 Azure 服务防火墙规则停止使用此交换机。 在设置服务终结点之前,请确保 Azure 服务防火墙规则允许这样的切换。 在配置服务终结点时,可能会遇到来自此子网的服务流量出现暂时性中断的情况。
保护从本地进行的 Azure 服务访问
默认情况下,无法从本地网络访问在虚拟网络中保护的 Azure 服务资源。 要允许来自本地的流量,还必须允许来自本地或 ExpressRoute 的公共(通常为 NAT)IP 地址。 可通过 Azure 服务资源的 IP 防火墙配置添加这些 IP 地址。
ExpressRoute:如果在本地使用 ExpressRoute 进行 Microsoft 对等互连,则需标识所用的 NAT IP 地址。 NAT IP 地址由客户或服务提供商提供。 若要允许访问服务资源,必须在资源 IP 防火墙设置中允许这些公共 IP 地址。 要详细了解 ExpressRoute Microsoft 对等互连的 NAT,请参阅 ExpressRoute NAT 要求。
配置
在虚拟网络中的子网上配置服务终结点。 终结点可以处理该子网中运行的任何类型的计算实例。
可以针对子网中的所有受支持 Azure 服务(例如 Azure 存储或 Azure SQL 数据库)配置多个服务终结点。
对于 Azure SQL 数据库,虚拟网络必须与 Azure 服务资源位于同一区域。 对于所有其他服务,可在任何区域的虚拟网络中保护 Azure 服务资源。
配置了终结点的虚拟网络可与 Azure 服务资源位于相同或不同的订阅中。 有关设置终结点和保护 Azure 服务时所需的权限的详细信息,请参阅预配。
对于受支持的服务,可以使用服务终结点在虚拟网络中保护新的或现有的资源。
注意事项
服务终结点部署后,源 IP 地址从使用公共 IPv4 地址切换到从该子网与服务通信时使用其专用 IPv4 地址。 在进行这种切换的过程中,与服务建立的所有现有打开的 TCP 连接将会关闭。 针对子网的服务启用或禁用服务终结点时,请确保未运行任何关键任务。 此外,请确保在完成 IP 地址切换后,应用程序可以自动连接到 Azure 服务。
IP 地址切换只会影响自己的虚拟网络发出的服务流量, 对进出分配给虚拟机的公共 IPv4 地址的任何其他流量没有任何影响。 对于 Azure 服务,如果现有的防火墙规则使用 Azure 公共 IP 地址,这些规则会阻止切换到虚拟网络专用地址。
使用服务终结点时,Azure 服务的 DNS 条目会保持不变,继续解析为分配给 Azure 服务的公共 IP 地址。
使用服务终结点的网络安全组 (NSG):
默认情况下,NSG 允许出站的 Internet 流量,也允许从虚拟网络到 Azure 服务的流量。 此流量继续按原有方式使用服务终结点。
如果你想要拒绝所有出站 Internet 流量并只允许发往特定 Azure 服务的流量,可以在 NSG 中使用服务标记来实现此目的。 可以在 NSG 规则中将受支持的 Azure 服务指定为目标,Azure 还会对每个标记下面的 IP 地址提供维护。 有关详细信息,请参阅 NSG 的 Azure 服务标记。
方案
对等互连或连接的虚拟网络或多个虚拟网络:要将 Azure 服务保护到虚拟网络中的多个子网或跨多个虚拟网络保护它,请在每个子网上独立启用服务终结点。 此过程将 Azure 服务资源保护到所有子网。
筛选从虚拟网络发往 Azure 服务的出站流量:若要检查或筛选从虚拟网络发送到 Azure 服务的流量,可在该虚拟网络中部署网络虚拟设备。 然后,可将服务终结点应用到部署了网络虚拟设备的子网,只在该子网中保护 Azure 服务资源。 如果你想要使用网络虚拟设备筛选将从虚拟网络发起的 Azure 服务访问限制到特定的 Azure 资源,此方案可能很有帮助。
在直接部署到虚拟网络的服务中保护 Azure 资源:可将各种 Azure 服务直接部署到虚拟网络中的特定子网。 可以通过在托管服务子网上设置服务终结点,在托管服务子网中保护 Azure 服务资源。
来自 Azure 虚拟机的磁盘流量:Azure 存储的服务终结点路由更改不会影响托管和非托管磁盘的虚拟机磁盘流量。 此流量包括磁盘 IO 和装载和卸载操作。 可以使用服务终结点和 Azure 存储网络规则 来将对页 Blob 的 REST 访问限制到特定网络。
日志记录和故障排除
为特定的服务配置服务终结点后,请通过以下方式验证服务终结点路由是否生效:
验证服务诊断中任何服务请求的源 IP 地址。 使用服务终结点的所有新请求会将请求的源 IP 地址显示为分配给从虚拟网络发出请求的客户端的虚拟网络专用地址。 如果不使用终结点,此地址是 Azure 公共 IP 地址。
查看子网中任何网络接口上的有效路由。 通往服务的路径:
显示更具体的默认路由用于寻址每个服务的前缀范围
nextHopType 为 VirtualNetworkServiceEndpoint
指示与任何强制隧道路由相比,一条与服务之间的更直接的连接已生效
注意
服务终结点路由会替代任何 BGP 或用户定义的路由 (UDR),以实现 Azure 服务的地址前缀匹配。 有关详细信息,请参阅排查有效路由问题。
设置
对虚拟网络具有写入访问权限的用户可以在虚拟网络上独立配置服务终结点。 若要保护虚拟网络的 Azure 服务资源,用户必须具有已添加子网的 Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action 权限。 默认情况下,内置服务管理员角色包括此权限,但可以通过创建自定义角色对其进行修改。
有关内置角色的详细信息,请参阅 Azure 内置角色。 有关将特定权限分配给自定义角色的详细信息,请参阅 Azure 自定义角色。
虚拟网络和 Azure 服务资源可以位于相同或不同的订阅中。 某些 Azure 服务(并非所有)(如 Azure 存储和 Azure Key Vault)也支持跨不同 Microsoft Entra ID 租户的服务终结点。 虚拟网络和 Azure 服务资源可以位于不同的Microsoft Entra ID 租户中。 请查看各个服务文档,了解更多详细信息。
定价和限制
使用服务终结点不会产生额外费用。 目前,Azure 服务(Azure 存储、Azure SQL 数据库等)的当前定价模型按原样应用。
虚拟网络中的服务终结点总数没有限制。
某些 Azure 服务(如 Azure 存储帐户)可能会对用于保护资源的子网数量实施限制。 有关详细信息,请参阅后续步骤部分中列出的各种服务的文档。
虚拟网络服务终结点策略
虚拟网络服务终结点策略允许筛选发到 Azure 服务的虚拟网络流量。 此筛选器仅允许在服务终结点上使用特定的 Azure 服务资源。 服务终结点策略针对发往 Azure 服务的虚拟网络流量提供精细的访问控制。 有关详细信息,请参阅虚拟网络服务终结点策略。
常见问题
有关常见问题的解答,请参阅虚拟网络服务终结点常见问题解答。