虚拟网络服务终结点
通过在 Azure 主干网络上实现经过优化的路由,虚拟网络 (VNet) 服务终结点可为 Azure 服务提供安全的直接连接。 使用终结点可以保护关键的 Azure 服务资源,只允许在客户自己的虚拟网络中对其进行访问。 服务终结点使 VNet 中的专用 IP 地址能够到达 Azure 服务的终结点,且无需在 VNet 中使用公共 IP 地址。
注意
Microsoft 建议使用 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 服务资源的安全性:VNet 专用地址空间可能重叠。 不能使用重叠的空间来唯一标识源自 VNet 的流量。 服务终结点通过将 VNet 标识扩展到服务来保护虚拟网络中的 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 流量,并允许来自 VNet 的流量发往 Azure 服务。 此流量继续按原有方式使用服务终结点。
- 如果你想要拒绝所有出站 Internet 流量并只允许发往特定 Azure 服务的流量,可以在 NSG 中使用服务标记来实现此目的。 可以在 NSG 规则中将受支持的 Azure 服务指定为目标,Azure 还会对每个标记下面的 IP 地址提供维护。 有关详细信息,请参阅 NSG 的 Azure 服务标记。
方案
对等互连的、连接的或多个虚拟网络:若要在一个虚拟网络中的多个子网内或者跨多个虚拟网络保护 Azure 服务,可以针对每个子网单独启用服务终结点,在所有子网中保护 Azure 服务资源。
筛选从虚拟网络发往 Azure 服务的出站流量:若要检查或筛选从虚拟网络发送到 Azure 服务的流量,可在该虚拟网络中部署网络虚拟设备。 然后,可将服务终结点应用到部署了网络虚拟设备的子网,只在该子网中保护 Azure 服务资源。 如果你想要使用网络虚拟设备筛选将从虚拟网络发起的 Azure 服务访问限制到特定的 Azure 资源,此方案可能很有帮助。
在直接部署到虚拟网络的服务中保护 Azure 资源:可将各种 Azure 服务直接部署到虚拟网络中的特定子网。 可以通过在托管服务子网上设置服务终结点,在托管服务子网中保护 Azure 服务资源。
来自 Azure 虚拟机的磁盘流量:托管和非托管磁盘的虚拟机磁盘流量不受 Azure 存储的服务终结点路由更改的影响。 此流量包括 diskIO 以及装载和卸载。 可以通过服务终结点和 Azure 存储网络规则限制对页 blob 的 REST 访问以选择网络。
日志记录和故障排除
为特定的服务配置服务终结点后,请通过以下方式验证服务终结点路由是否生效:
- 验证服务诊断中任何服务请求的源 IP 地址。 使用服务终结点的所有新请求会将请求的源 IP 地址显示为分配给从虚拟网络发出请求的客户端的虚拟网络专用地址。 如果不使用终结点,此地址是 Azure 公共 IP 地址。
- 查看子网中任何网络接口上的有效路由。 服务的路由:
- 显示更具体的默认路由用于寻址每个服务的前缀范围
- nextHopType 为 VirtualNetworkServiceEndpoint
- 指示与任何强制隧道路由相比,一条与服务之间的更直接的连接已生效
注意
服务终结点路由会替代所有 BGP 路由,以实现 Azure服务的地址前缀匹配。 有关详细信息,请参阅排查有效路由问题。
设置
对虚拟网络拥有写入访问权限的用户可在虚拟网络上独立配置服务终结点。 若要在 VNet 中保护 Azure 服务资源,用户必须对所添加的子网拥有“Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action”权限。 内置的服务管理员角色默认包括此权限。 可以通过创建自定义角色来修改权限。
有关内置角色的详细信息,请参阅 Azure 内置角色。 有关将特定权限分配给自定义角色的详细信息,请参阅 Azure 自定义角色。
虚拟网络和 Azure 服务资源可以位于相同或不同的订阅中。 Azure 存储和 Azure Key Vault 等部分 Azure 服务(并非全部)还支持跨不同 Active Directory (AD) 租户的服务终结点。 这意味着虚拟网络和 Azure 服务资源可以位于不同的 Active Directory (AD) 租户中。 请查看各个服务文档,了解更多详细信息。
定价和限制
使用服务终结点不会产生额外费用。 目前,Azure 服务(Azure 存储、Azure SQL 数据库等)的当前定价模型按原样应用。
虚拟网络中的服务终结点总数没有限制。
某些 Azure 服务(例如 Azure 存储帐户)可能会对用于保护资源的子网数目施加限制。 有关详细信息,请参阅后续步骤部分中列出的各种服务的文档。
VNet 服务终结点策略
使用 VNet 服务终结点策略,你可以筛选到 Azure 服务的虚拟网络流量。 此筛选器仅允许在服务终结点上使用特定的 Azure 服务资源。 服务终结点策略针对发往 Azure 服务的虚拟网络流量提供精细的访问控制。 有关详细信息,请参阅虚拟网络服务终结点策略。
常见问题
有关常见问题的解答,请参阅虚拟网络服务终结点常见问题解答。