你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

允许通过专用终结点访问 Azure 服务总线命名空间

使用 Azure 专用链接服务,可以通过虚拟网络中的专用终结点访问 Azure 服务(例如 Azure 服务总线、Azure 存储和 Azure Cosmos DB)以及 Azure 托管的客户服务/合作伙伴服务。

专用终结点是一个网络接口,可以通过专用且安全的方式将你连接到 Azure 专用链接支持的服务。 专用终结点使用 VNet 中的专用 IP 地址将服务有效接入 VNet 中。 发往服务的所有流量都可以通过专用终结点路由,因此不需要网关、NAT 设备、ExpressRoute 或 VPN 连接或公共 IP 地址。 虚拟网络与服务之间的流量将通过 Microsoft 主干网络,因此不会从公共 Internet 泄露。 可以连接到 Azure 资源的实例,从而获得最高级别的访问控制粒度。

有关详细信息,请参阅什么是 Azure 专用链接?

要点

  • 通过 Azure 服务总线高级层支持此功能。 有关高级层的详细信息,请参阅服务总线高级和标准消息传送层

  • 实施专用终结点可以阻止其他 Azure 服务与服务总线进行交互。 例外情况是,可以允许从某些受信任的服务访问服务总线资源,即使启用了专用终结点也是如此。 有关受信任服务的列表,请参阅受信任服务

    以下 Microsoft 服务必须在虚拟网络中

    • Azure 应用服务
    • Azure Functions
  • 为命名空间指定至少一个 IP 规则或虚拟网络规则,以便仅允许来自虚拟网络的指定 IP 地址或子网的流量。 如果没有 IP 和虚拟网络规则,则可以通过公共 Internet(使用访问密钥)访问命名空间。

使用 Azure 门户添加专用终结点

先决条件

若要将事件中心命名空间与 Azure 专用链接集成,需要以下实体或权限:

  • 服务总线命名空间。
  • 一个 Azure 虚拟网络。
  • 虚拟网络中的子网。 可以使用默认子网。
  • 对服务总线命名空间和虚拟网络拥有所有者或参与者权限。

专用终结点和虚拟网络必须位于同一区域。 使用门户选择专用终结点的区域时,只会自动筛选该区域中的虚拟网络。 服务总线命名空间可以位于不同的区域中。 并且,专用终结点使用虚拟网络中的专用 IP 地址。

步骤

如果已有现有命名空间,可按以下步骤创建专用终结点:

  1. 登录 Azure 门户

  2. 在搜索栏中键入“服务总线”。

  3. 从列表中选择要将专用终结点添加到的“命名空间”。

  4. 在左侧菜单上,选择“设置”下的“网络”选项 。

    注意

    只会为“高级”命名空间显示“网络”选项卡 。

  5. 在“网络”页上,对于“公共网络访问”,可以设置以下三个选项之一。 如果希望仅通过专用终结点访问命名空间,请选择“禁用”。

    • “禁用”。 此选项禁用对命名空间的任何公共访问。 将只能通过专用终结点访问命名空间。

      “网络”页 - “公共访问”选项卡 - 禁用公共网络访问。

    • 选定网络。 此选项允许使用选定网络的访问密钥对命名空间进行公共访问。

      重要

      如果选择“选定网络”,请添加至少一个 IP 防火墙规则或有权访问命名空间的虚拟网络。 如果希望仅通过专用终结点限制流向此命名空间的所有流量,请选择“禁用”。

      选择了“所选网络”选项的网络页面。

    • 所有网络(默认)。 此选项允许使用访问密钥从所有网络进行公共访问。 如果选择“所有网络”选项,则服务总线命名空间接受来自任何 IP 地址的连接(使用访问密钥)。 此设置等效于一个接受 0.0.0.0/0 IP 地址范围的规则。

      Azure 门户中“网络”页面的屏幕截图。在“防火墙和虚拟网络”选项卡上选择了允许从所有网络访问的选项。

  6. 若要允许通过专用终结点访问命名空间,请选择页面顶部的“专用终结点连接”选项卡

  7. 在页面顶部选择“+ 专用终结点”按钮。

    “添加专用终结点”按钮

  8. 在“基本信息”页上执行以下步骤:

    1. 选择要在其中创建专用终结点的 Azure 订阅。

    2. 选择专用终结点资源的资源组。

    3. 输入专用终结点的名称。

    4. 为网络接口输入一个名称。

    5. 专用终结点选择“区域”。 专用终结点必须与虚拟网络位于同一区域,但可以与要连接的专用链接资源位于不同的区域。

    6. 选择页面底部的“下一步: 资源 ”。

      该屏幕截图显示了创建专用终结点向导的“基本信息”页。

  9. 在“资源”页上,查看设置,然后选择该页底部的“下一步: 虚拟网络”。

    该屏幕截图显示了创建专用终结点向导的“资源”页。

  10. 在“虚拟网络”页上,选择要在其中部署专用终结点的虚拟网络中的子网。

    1. 选择一个虚拟网络。 下拉列表中仅列出了当前所选订阅和位置中的虚拟网络。
    2. 在所选的虚拟网络中选择一个“子网”。
    3. 请注意,“专用终结点的网络策略”已禁用。 如果要启用它,请选择“编辑”,更新设置,然后选择“保存”。
    4. 对于专用 IP 配置,默认情况下会选中“动态分配 IP 地址”选项。 如果要分配静态 IP 地址,请选择“静态分配 IP 地址”*。
    5. 对于应用程序安全组,选择现有应用程序安全组或创建一个与专用终结点相关联的安全组。
    6. 选择页面底部的“下一步: DNS >”按钮。

    该屏幕截图显示了创建专用终结点向导的“虚拟网络”页。

  11. 在“DNS”页上,选择是否要将专用终结点与专用 DNS 区域集成,然后选择“下一步: 标记”。

    该屏幕截图显示了创建专用终结点向导的“DNS”页。

  12. 在“标记”页上,创建要与专用终结点资源关联的任何标记(名称和值)。 然后选择页面底部的“查看 + 创建”按钮。

  13. 在“查看 + 创建”页上查看所有设置,然后选择“创建”以创建专用终结点 。

    该屏幕截图显示了创建专用终结点向导的“查看和创建”页。

  14. 确认已创建专用终结点。 如果你是资源的所有者,并且已选择“连接到我的目录中的 Azure 资源”选项作为连接方法,则应已“自动批准”终结点连接。 如果它处于“挂起”状态,请参阅使用 Azure 门户管理专用终结点部分。

    已创建专用终结点

受信任的 Microsoft 服务

启用“允许受信任的 Microsoft 服务绕过此防火墙”设置时,将授权以下服务访问你的服务总线资源。

受信服务 支持的使用方案
Azure 事件网格 允许 Azure 事件网格将事件发送到服务总线命名空间中的队列或主题。 还需要执行以下步骤:
  • 为主题或域启用系统分配的标识
  • 为服务总线命名空间中的“Azure 服务总线数据发送方”角色添加标识
  • 然后,将使用服务总线队列或主题的事件订阅配置为终结点,以使用系统分配的标识。

有关详细信息,请参阅使用托管标识进行事件传递

Azure API 管理

API 管理服务允许你向服务总线命名空间中的服务总线队列/主题发送消息。

Azure IoT Central

允许 IoT Central 将数据导出到服务总线命名空间中的服务总线队列或主题。 还需要执行以下步骤:

Azure IoT 中心 允许 IoT 中心将消息发送到服务总线命名空间中的队列或主题。 还需要执行以下步骤:

使用 PowerShell 添加专用终结点

以下示例演示如何使用 Azure PowerShell 创建与服务总线命名空间的专用终结点连接。

专用终结点和虚拟网络必须位于同一区域。 服务总线命名空间可以位于不同的区域中。 并且,专用终结点使用虚拟网络中的专用 IP 地址。


$rgName = "<RESOURCE GROUP NAME>"
$vnetlocation = "<VNET LOCATION>"
$vnetName = "<VIRTUAL NETWORK NAME>"
$subnetName = "<SUBNET NAME>"
$namespaceLocation = "<NAMESPACE LOCATION>"
$namespaceName = "<NAMESPACE NAME>"
$peConnectionName = "<PRIVATE ENDPOINT CONNECTION NAME>"

# create resource group
New-AzResourceGroup -Name $rgName -Location $vnetLocation 

# create virtual network
$virtualNetwork = New-AzVirtualNetwork `
                    -ResourceGroupName $rgName `
                    -Location $vnetlocation `
                    -Name $vnetName `
                    -AddressPrefix 10.0.0.0/16

# create subnet with endpoint network policy disabled
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
                    -Name $subnetName `
                    -AddressPrefix 10.0.0.0/24 `
                    -PrivateEndpointNetworkPoliciesFlag "Disabled" `
                    -VirtualNetwork $virtualNetwork

# update virtual network
$virtualNetwork | Set-AzVirtualNetwork

# create premium service bus namespace
$namespaceResource = New-AzResource -Location $namespaceLocation -ResourceName $namespaceName -ResourceGroupName $rgName -Sku @{name = "Premium"; capacity = 1} -Properties @{} -ResourceType "Microsoft.ServiceBus/namespaces" -

# create a private link service connection
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
                                -Name $peConnectionName `
                                -PrivateLinkServiceId $namespaceResource.ResourceId `
                                -GroupId "namespace"

# get subnet object that you will use in the next step                                
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $rgName -Name $vnetName
$subnet = $virtualNetwork | Select -ExpandProperty subnets `
                                | Where-Object  {$_.Name -eq $subnetName}  
   
# now, create private endpoint   
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgName  `
                                -Name $vnetName   `
                                -Location $vnetlocation `
                                -Subnet  $subnet   `
                                -PrivateLinkServiceConnection $privateEndpointConnection

(Get-AzResource -ResourceId $namespaceResource.ResourceId -ExpandProperties).Properties


使用 Azure 门户管理专用终结点

创建专用终结点时,必须批准连接。 如果要为其创建专用终结点的资源位于你的目录中,在拥有足够权限的前提下,你可以批准连接请求。 如果要连接到另一个目录中的 Azure 资源,必须等待该资源的所有者批准你的连接请求。

有四种预配状态:

服务操作 服务使用者专用终结点状态 说明
挂起的 连接是手动创建的,正等待专用链接资源所有者批准。
审批 已批准 连接已自动或手动批准,随时可供使用。
拒绝 已拒绝 连接已被专用链接资源所有者拒绝。
删除 已断开连接 连接已被专用链接资源所有者删除,专用终结点仅供参考,应将其删除以清理资源。

批准、拒绝或删除专用终结点连接

  1. 登录到 Azure 门户。
  2. 在搜索栏中键入“服务总线”。
  3. 选择要管理的“命名空间”。
  4. 选择“网络”选项卡。
  5. 根据要执行的操作(批准、拒绝或删除),转到下面的相应部分。

批准专用终结点连接

  1. 如果有任何挂起的连接,则会看到预配状态为“挂起”的连接被列出。

  2. 选择要批准的专用终结点

  3. 选择“批准”按钮。

    批准专用终结点

  4. 在“批准连接”页上输入可选注释,然后选择“是” 。 如果选择“否”,则不会执行任何操作。

    “批准连接”页

  5. 应会看到,列表中连接的状态已更改为“已批准”。

    连接状态 - 已批准

拒绝专用终结点连接

  1. 如果要拒绝任何专用终结点连接(不管是挂起的请求还是已批准的现有连接),请选择该终结点连接并单击“拒绝”按钮。

    “拒绝”按钮

  2. 在“拒绝连接”页上输入可选注释,然后选择“是” 。 如果选择“否”,则不会执行任何操作。

    “拒绝连接”页

  3. 应会看到,列表中连接的状态已更改为“已拒绝”。

    已拒绝终结点

删除专用终结点连接

  1. 若要删除某个专用终结点连接,请在列表中选择它,然后在工具栏上选择“删除”。

    “删除”按钮

  2. 在“删除连接”页上,选择“是”以确认删除该专用终结点。 如果选择“否”,则不会执行任何操作。

    “删除连接”页

  3. 应会看到,状态已更改为“已断开连接”。 然后,终结点将会从列表中消失。

应该验证专用终结点的虚拟网络中的资源是否可以通过专用 IP 地址连接到服务总线命名空间,以及它们是否具有正确的专用 DNS 区域集成。

首先,遵循在 Azure 门户中创建 Windows 虚拟机中的步骤创建一个虚拟机。

在“网络”选项卡中:

  1. 指定虚拟网络和子网 。 必须选择已将专用终结点部署到的虚拟网络。
  2. 指定一个公共 IP 资源。
  3. 对于“NIC 网络安全组”,请选择“无” 。
  4. 对于“负载均衡”,请选择“否”。

连接到 VM,打开命令行并运行以下命令:

nslookup <service-bus-namespace-name>.servicebus.windows.net

应会看到如下所示的结果。

Non-authoritative answer:
Name:    <service-bus-namespace-name>.privatelink.servicebus.windows.net
Address:  10.0.0.4 (private IP address associated with the private endpoint)
Aliases:  <service-bus-namespace-name>.servicebus.windows.net

限制和设计注意事项

定价:有关定价信息,请参阅 Azure 专用链接定价

限制:此功能可在所有 Azure 公共区域中使用。

每个服务总线命名空间的最大专用终结点数目:120。

有关详细信息,请参阅 Azure 专用链接服务:限制

后续步骤