允許透過私人端點來存取 Azure 事件中樞命名空間

Azure Private Link 服務可讓您透過虛擬網路中的私人端點存取各 Azure 服務 (例如 Azure 事件中樞、Azure 儲存體和 Azure Cosmos DB),以及 Azure 裝載的客戶/合作夥伴服務。

私人端點是一種網路介面,其可以私人且安全的方式連線至 Azure Private Link 所支援服務。 私人端點會使用您虛擬網路中的私人 IP 位址,有效地將服務帶入您的虛擬網路中。 服務的所有流量都可以透過私人端點路由傳送,因此不需要閘道、NAT 裝置、ExpressRoute 或 VPN 連線或公用 IP 位址。 虛擬網路和服務間的流量會在通過 Microsoft 骨幹網路時隨之減少,降低資料在網際網路中公開的風險。 您可以連線至 Azure 資源的執行個體,以提供您存取控制中最高層級的細微性。

如需詳細資訊,請參閱何謂 Azure Private Link?

重點

  • 基本層中不支援此功能。
  • 啟用私人端點可防止其他 Azure 服務與事件中樞互動。 封鎖的要求包括來自其他 Azure 服務、Azure 入口網站及記錄與計量服務等等的要求。 例外狀況是,即使在啟用私人端點時,您也可以允許從某些信任的服務存取事件中樞資源。 如需信任的服務清單,請參閱信任的服務
  • 為命名空間指定至少一個 IP 規則或虛擬網路規則,只允許來自虛擬網路的指定 IP 位址或子網路的流量。 如果沒有 IP 和虛擬網路規則,可透過公用網際網路 (使用存取金鑰) 來存取命名空間。

使用 Azure 入口網站新增私人端點

必要條件

若要將事件中樞命名空間與 Azure Private Link 整合,您需要下列實體或權限:

  • 事件中樞命名空間。
  • Azure 虛擬網路。
  • 虛擬網路中的子網路。 您可以使用預設子網路。
  • 命名空間和虛擬網路的擁有者或參與者權限。

您的私人端點和虛擬網路必須位於相同區域。 當您使用入口網站選取私人端點的區域時,其只會自動篩選該區域中的虛擬網路。 您的命名空間可以位於不同區域。

您的私人端點會使用您虛擬網路中的私人 IP 位址。

建立命名空間時設定私人存取

建立命名空間時,您可以允許僅限公用 (來自所有網路) 或僅限私人 (僅透過私人端點) 存取命名空間。

如果您在命名空間建立精靈的 [網路] 頁面上選取 [私人存取] 選項,您可以選取 [+ 私人端點] 按鈕,在頁面上新增私人端點。 如需新增私人端點的詳細步驟,請參閱下一節。

Screenshot showing the Networking page of the Create namespace wizard with Private access option selected.

設定現有命名空間的私人存取

如果您已經有事件中樞命名空間,您可以遵循下列步驟來建立私人連結連線:

  1. 登入 Azure 入口網站

  2. 在搜尋列中輸入事件中樞

  3. 從清單中選取您要新增私人端點的命名空間

  4. 如果您想要讓命名空間只能透過私人端點來存取,請在 [網路] 頁面上,針對 [公用網路存取] 選取 [已停用]

  5. 如果您想要允許 [受信任的 Microsoft 服務] 略過此防火牆,針對 [允許受信任的 Microsoft 服務略過此防火牆嗎?],選取 [是]

    Screenshot of the Networking page with public network access as Disabled.

  6. 切換至 [私人端點連線] 索引標籤。

  7. 選取頁面頂端的 [+ 私人端點] 按鈕。

    Networking page - Private endpoint connections tab - Add private endpoint link.

  8. 在 [基本] 頁面上,遵循下列步驟:

    1. 選取您要在其中建立私人端點的 Azure 訂閱

    2. 選取私人端點資源的資源群組

    3. 輸入私人端點的名稱

    4. 輸入網路介面的名稱

    5. 選取私人端點的區域。 私人端點必須位於與虛擬網路相同的區域,但可與將要連線的目的地私人連結資源位於不同區域。

    6. 選取頁面底部的 [下一步: 資源 >]

      Screenshot showing the Basics page of the Create private endpoint wizard.

  9. 在 [資源] 頁面上檢閱設定,然後選取 [下一步: 虛擬網路]

    Screenshot showing the Resource page of the Create private endpoint wizard.

  10. 在 [虛擬網路] 頁面上,您會選取虛擬網路中要部署私人端點的子網路。

    1. 選取虛擬網路。 下拉式清單只會列出目前所選訂閱與位置中的虛擬網路。

    2. 選取您所選虛擬網路中的子網路

    3. 請注意,已停用私人端點的網路原則。 如果想要啟用此原則,請選取 [編輯]、更新設定,然後選取 [儲存]

    4. 在 [私人 IP 設定] 中,預設會選取 [動態配置 IP 位址]。 如果想要指派靜態的 IP 位址,請選取 [靜態配置 IP 位址]*。

    5. 針對 [應用程式安全性群組],選取現有的應用程式安全性群組,或建立要與私人端點建立關聯的安全性群組。

    6. 選取頁面底部的 [下一步: DNS >] 按鈕。

      Screenshot showing the Virtual Network page of the Create private endpoint wizard.

  11. 在 [DNS] 頁面上,選取是否要整合私人端點與私人 DNS 區域,然後選取 [下一步: 標記]

  12. 在 [標記] 頁面上,建立想要與私人端點資源建立關聯的任何標記 (名稱和值)。 然後選取頁面底部的 [檢閱 + 建立] 按鈕。

  13. 在 [檢閱 + 建立] 上,檢閱所有設定,然後選取 [建立] 來建立私人端點。

    Create Private Endpoint - Review and Create page

  14. 確認您可以在端點清單中看見您所建立的私人端點連線。 在此範例中,系統會自動核准私人端點,因為您是連線到您目錄中的 Azure 資源,且您具有足夠的權限。

    Private endpoint created

受信任的 Microsoft 服務

啟用 [允許信任的 Microsoft 服務略過此防火牆] 設定時,相同租用戶內的下列服務會獲授與事件中樞資源的存取權。

信任的服務 支援的使用方式情節
事件格線 允許 Azure 事件方格將事件傳送至事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:
  • 為主題或網域啟用系統指派的身分識別
  • 將身分識別新增至事件中樞命名空間上的 Azure 事件中樞資料寄件者角色
  • 然後,將使用事件中樞作為端點的事件訂用帳戶設定為使用系統指派的身分識別。

如需詳細資訊,請參閱使用受控識別傳遞事件

Azure 串流分析 允許 Azure 串流分析作業從事件中樞命名空間中的事件中樞讀取資料 (輸入),或將資料寫入至其中 (輸出)。

重要:串流分析作業應設定為使用受控識別來存取事件中樞。 如需詳細資訊,請參閱使用受控識別從 Azure 串流分析作業存取事件中樞 (預覽)

Azure IoT 中樞 允許 IoT 中樞將訊息傳送至事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:
  • 為您的 IoT 中樞啟用系統指派的身分識別
  • 將身分識別新增至事件中樞命名空間上的 Azure 事件中樞資料寄件者角色。
  • 然後,將使用事件中樞的 IoT 中樞設定為自訂端點,以使用以身分識別為基礎的驗證。
Azure API 管理

API 管理服務可讓您將事件傳送至事件中樞命名空間中的事件中樞。

Azure 監視器 (診斷設定和動作群組) 允許 Azure 監視器將診斷資訊和警示通知傳送至事件中樞命名空間中的事件中樞。 Azure 監視器可以從事件中樞讀取資料,也可以將資料寫入至事件中樞。
Azure Synapse 允許 Azure Synapse 使用 Synapse 工作區受控識別連線至事件中樞。 將 Azure 事件中樞資料傳送者、接收者或擁有者角色新增至事件中樞命名空間上的身分識別。
Azure 資料總管 允許 Azure 資料總管使用叢集的受控識別,從事件中樞接收事件。 您需要執行下列步驟:
  • 在 Azure 資料總管上設定受控識別
  • 在事件中樞上,將 Azure 事件中樞資料接收者角色授與身分識別。
 
Azure IoT Central

允許 IoT Central 將資料匯出至事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:

Azure 健康資料服務 允許醫療保健 API IoT 連接器從事件中樞命名空間擷取醫療裝置資料,並將資料保存在您設定的快速健康照護互通資源 (FHIR®) 服務中。 IoT 連接器應設定為使用受控識別來存取事件中樞。 如需詳細資訊,請參閱開始使用 IoT 連接器 - Azure 醫療保健 API
Azure Digital Twins 允許 Azure Digital Twins 將資料輸出到事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:

  • 為您的 Azure Digital Twins 執行個體啟用系統指派的身分識別。
  • 將身分識別新增至事件中樞命名空間上的 Azure 事件中樞資料寄件者角色。
  • 然後,設定使用系統指派身分識別進行驗證的 Azure Digital Twins 端點或 Azure Digital Twins 資料歷程記錄連線。 如需設定從 Azure Digital Twins 至事件中樞資源的端點和事件路由的詳細資訊,請參閱路由 Azure Digital Twins 事件在 Azure Digital Twins 中建立端點

以下是 Azure 事件中樞的其他受信任服務:

  • Azure Arc
  • Azure Kubernetes
  • Azure Machine Learning
  • Microsoft Purview

若要允許信任的服務存取您的命名空間,請切換至 [網路] 頁面上的 [公用存取] 索引標籤,然後針對 [允許受信任的 Microsoft 服務略過此防火牆嗎?],選取 [是]

使用 PowerShell 新增私人端點

下列範例會示範如何使用 Azure PowerShell 來建立私人端點連線。 其不會為您建立專用叢集。 請遵循此文章中的步驟,以建立專用的事件中樞叢集。

$rgName = "<RESOURCE GROUP NAME>"
$vnetlocation = "<VIRTUAL NETWORK 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 an event hubs namespace in a dedicated cluster
$namespaceResource = New-AzResource -Location $namespaceLocation `
                                    -ResourceName $namespaceName `
                                    -ResourceGroupName $rgName `
                                    -Sku @{name = "Standard"; capacity = 1} `
                                    -Properties @{clusterArmId = "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/clusters/<EVENT HUBS CLUSTER NAME>"} `
                                    -ResourceType "Microsoft.EventHub/namespaces" -ApiVersion "2018-01-01-preview"

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

# get subnet object that you'll use later
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $rgName -Name $vnetName
$subnet = $virtualNetwork | Select -ExpandProperty subnets `
                                | Where-Object  {$_.Name -eq $subnetName}  
   
# create a private endpoint   
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgName  `
                                -Name $vnetName   `
                                -Location $vnetlocation `
                                -Subnet  $subnet   `
                                -PrivateLinkServiceConnection $privateEndpointConnection

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


設定私人 DNS 區域

建立事件中樞網域的私人 DNS 區域,然後與虛擬網路建立關聯連結:

$zone = New-AzPrivateDnsZone -ResourceGroupName $rgName `
                            -Name "privatelink.servicebus.windows.net" 
 
$link  = New-AzPrivateDnsVirtualNetworkLink -ResourceGroupName $rgName `
                                            -ZoneName "privatelink.servicebus.windows.net" `
                                            -Name "mylink" `
                                            -VirtualNetworkId $virtualNetwork.Id  
 
$networkInterface = Get-AzResource -ResourceId $privateEndpoint.NetworkInterfaces[0].Id -ApiVersion "2019-04-01" 
 
foreach ($ipconfig in $networkInterface.properties.ipConfigurations) { 
    foreach ($fqdn in $ipconfig.properties.privateLinkConnectionProperties.fqdns) { 
        Write-Host "$($ipconfig.properties.privateIPAddress) $($fqdn)"  
        $recordName = $fqdn.split('.',2)[0] 
        $dnsZone = $fqdn.split('.',2)[1] 
        New-AzPrivateDnsRecordSet -Name $recordName -RecordType A -ZoneName "privatelink.servicebus.windows.net"  `
                                -ResourceGroupName $rgName -Ttl 600 `
                                -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $ipconfig.properties.privateIPAddress)  
    } 
}

使用 Azure 入口網站管理私人端點

當您建立私人端點時,必須核准連線。 如果正要建立私人端點的資源位於目錄中,則在具有足夠權限的情況下,即可核准連線要求。 如果正要連線到位於另一個目錄中的 Azure 資源,則必須等候該資源的擁有者核准連線要求。

佈建狀態有四種:

服務動作 服務取用者私人端點狀態 描述
None 待定 連線會手動建立並等待 Private Link 資源擁有者進行核准。
核准 核准 已自動或手動核准連線並可供使用。
拒絕​​ 已拒絕 私人連結資源擁有者已拒絕連線。
移除 已中斷連接 私人連結資源擁有者已移除連線,而私人端點變成參考性,且應該刪除以進行清除。

核准、拒絕或移除私人端點連線

  1. 登入 Azure 入口網站。
  2. 在搜尋列中輸入事件中樞
  3. 選取您要管理的命名空間
  4. 選取 [網路] 索引標籤。
  5. 根據您想要執行的作業:核准、拒絕或移除,移至下列適當的小節。

核准私人端點連線

  1. 如果有任何暫止的連線,您會在佈建狀態中看到以 [擱置中] 列出的連線。

  2. 選取您想要核准的私人端點

  3. 選取 [核准] 按鈕。

    Approve private endpoint

  4. 在 [核准連線] 頁面上,新增註解 (選擇性),然後選取 [是]。 如果您選取 [否],則不會發生任何事。

  5. 您應該會看見清單中私人端點連線的狀態變更為 [已核准]

拒絕私人端點連線

  1. 如果您想拒絕任何私人端點連線 (不論其為暫止要求或現有連線),請選取該連線,然後選取 [拒絕] 按鈕。

    Reject private endpoint

  2. 在 [拒絕連線] 頁面上,輸入註解 (選擇性),然後選取 [是]。 如果您選取 [否],則不會發生任何事。

  3. 您應該會看見清單中私人端點連線的狀態變更為 [已拒絕]

移除私人端點連線

  1. 若要移除私人端點連線,請在清單中加以選取,然後選取工具列上的 [移除]
  2. 在 [刪除連線] 頁面上,選取 [是] 以確認刪除私人端點。 如果您選取 [否],則不會發生任何事。
  3. 您應該會看見狀態變更為 [已中斷連線]。 然後,端點會從清單中消失。

您應該驗證私人端點虛擬網路內的資源是否正透過私人 IP 位址連線到您的事件中樞命名空間,而且其具有正確的私人 DNS 區域整合。

首先,依照在 Azure 入口網站中建立 Windows 虛擬機器中的步驟,建立虛擬機器。

在 [網路] 索引標籤中:

  1. 指定 [虛擬網路] 和 [子網路]。 您必須選取您已在其上方部署私人端點的虛擬網路。
  2. 指定公用 IP 資源。
  3. 針對 [NIC 網路安全性群組],選取 [無]
  4. 針對 [負載平衡],選取 [否]

連線到 VM、開啟命令列,然後執行下列命令:

nslookup <event-hubs-namespace-name>.servicebus.windows.net

您應該會看到如下所示的結果。

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

限制和設計考量

  • 如需定價資訊,請參閱 Azure 私人連結定價
  • 此功能已可在所有 Azure 公用區域中使用。
  • 每個事件中樞命名空間的私人端點數目上限:120。
  • 流量會在應用程式層封鎖,而不是在 TCP 層。 因此,即使公用存取已停用,您還是會看到對公用端點的 TCP 連線或 nslookup 作業成功。

如需詳細資訊,請參閱 Azure Private Link 服務:限制

下一步