共用方式為


將 Azure 轉送與 Azure Private Link 整合

Azure Private Link 服務可讓您透過虛擬網路中的私人端點,存取各 Azure 服務 (例如 Azure 轉送、Azure 服務匯流排、Azure 事件中樞、Azure 儲存體和 Azure Cosmos DB),以及 Azure 裝載的客戶/合作夥伴服務。 如需詳細資訊,請參閱何謂 Azure Private Link?

私人端點是一種網路介面,其允許您在虛擬網路中執行的工作負載,透過私密又安全的方式,連線到具有 Private Link 資源的服務 (例如,「轉送」命名空間)。 私人端點會使用您虛擬網路中的私人 IP 位址,有效地將服務帶入您的虛擬網路中。 服務的所有流量都可以透過私人端點路由傳送,因此不需要閘道、NAT 裝置、ExpressRoute、VPN 連線或公用 IP 位址。 虛擬網路和服務間的流量會在通過 Microsoft 骨幹網路時隨之減少,降低資料在網際網路中公開的風險。 您可以允許連線到特定 Azure 轉送命名空間,在存取控制中提供細微性層級。

注意

如果您透過私人連結使用轉送接聽程式,請開啟連接埠 9400-9599,以便搭配標準轉送連接埠進行傳出通訊。 請注意,您只需要針對轉送接聽程式執行此步驟。

必要條件

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

  • Azure 轉送命名空間。
  • Azure 虛擬網路。
  • 虛擬網路中的子網路。
  • 虛擬網路的擁有者或參與者權限。

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

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

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

設定轉送命名空間的私人存取

下列程序的逐步指示會說明如何停用轉送命名空間的公用存取,接著將私人端點新增至該命名空間。

  1. 登入 Azure 入口網站

  2. 在搜尋列中,輸入 [轉送]

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

  4. 在左側功能表上,選取 [設定] 底下的 [網路] 索引標籤。

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

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

    [公用網路存取] 處於 [已停用] 的 [網路] 頁面螢幕擷取畫面。

  7. 選取頁面頂端的 [私人端點連線] 索引標籤

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

    顯示 [網络] 頁面 [私人端點連線] 索引標籤上 [新增私人端點] 按鈕選取項目的螢幕快照。

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

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

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

    3. 輸入私人端點名稱

    4. 輸入網路介面名稱

    5. 選取私人端點的區域。 您的私人端點必須與虛擬網路位於相同的區域,但可與您要連線的目的地 Azure 轉送命名空間位於不同的區域。

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

      顯示 [建立私人端點精靈] 之 [基本] 頁面的螢幕快照。

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

    顯示 [建立私人端點精靈] 之 [資源] 頁面的螢幕快照。

  11. 在 [虛擬網路] 頁面上,選取您要在其中部署私人端點的虛擬網路子網路。 下拉式清單只會列出目前所選訂閱與位置中的虛擬網路。

    顯示 [建立私人端點精靈] 虛擬網絡 頁面的螢幕快照。

    針對私人端點,您可以設定要動態配置 IP 位址,或以靜態方式配置 IP 位址

    您也可以將新的或現有應用程式安全群組關聯至私人端點。

  12. 選取 [下一步:DNS] 以瀏覽至精靈的 [DNS] 頁面。 在 [DNS] 頁面上,系統會預設啟用 [與私人 DNS 區域整合] 設定(建議)。 您可以選擇將其停用。

    顯示 [建立私人端點精靈] 之 [DNS] 頁面的螢幕快照。

    若要私下與您的私人端點連接,您需要 DNS 記錄。 我們建議將私人端點與私人 DNS 區域整合。 您也可以利用自己的 DNS 伺服器,或使用虛擬機器上的主機檔案來建立 DNS 記錄。 如需詳細資訊,請參閱<Azure 私人端點 DNS 設定>

  13. 選取頁面底部的 [下一步: 標籤 >]

  14. 在 [標記] 頁面上,建立您想要與私人端點與私人 DNS 區域 (如果您已啟用此選項) 相關聯的任何標記 (名稱和值)。 然後選取頁面底部的 [檢閱 + 建立] 按鈕。

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

  16. 在 [私人端點] 頁面中,您可以看見私人端點連線的狀態。 如果您是轉送命名空間的擁有者,或具備其管理存取權,且已針對 [連線方法] 選取 [連線至我目錄中的 Azure 資源] 選項,則端點連線應該為 [自動核准]。 如果其處於 [擱置] 狀態,請參閱<使用 Azure 入口網站管理私人端點>一節。

    顯示 Azure 入口網站 中私人端點頁面的螢幕快照。

  17. 導覽回 命名空間的 [網路] 頁面,然後切換至 [私人端點連線] 索引標籤。您應該會看見您建立的私人端點。

    此螢幕快照顯示 [網络] 頁面的 [私人端點連線] 索引標籤,其中包含您剛才建立的私人端點。

使用 PowerShell 新增私人端點

下列範例會示範如何使用 Azure PowerShell 來建立對 Azure 轉送命名空間的私人端點連線。

您的私人端點和虛擬網路必須位於相同區域。 您的 Azure 轉送命名空間可以位於不同區域。 此外,私人端點會使用虛擬網路中的私人 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 a relay namespace
$namespaceResource = New-AzResource -Location $namespaceLocation -ResourceName $namespaceName -ResourceGroupName $rgName -Properties @{} -ResourceType "Microsoft.Relay/namespaces" 

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

# get subnet object that you'll 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 入口網站管理私人端點

當您建立私人端點時,必須核准連線。 如果您要建立的資源 (轉送命名空間) 位於您的目錄中,在您對轉送命名空間具有管理權限的情況下,便可以核准連線要求。 如果您要連線到您沒有管理存取權的轉送命名空間,則必須等候該資源的擁有者核准您的連線要求。

佈建狀態有四種:

服務動作 服務取用者私人端點狀態 描述
None 待定 連線會手動建立並等待 Azure 轉送命名空間擁有者進行核准。
核准 核准 已自動或手動核准連線並可供使用。
拒絕​​ 已拒絕 Azure 轉送命名空間擁有者拒絕連線。
移除 已中斷連接 Azure 轉寄命名空間擁有者已移除連線。 私人端點變得富含資訊,應刪除以進行清除。

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

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

核准私人端點連線

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

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

  3. 選取 [核准] 按鈕。

    顯示所選私人端點命令列上 [核准] 按鈕的螢幕快照。

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

    顯示 [核准連線] 頁面的螢幕快照,要求您確認。

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

拒絕私人端點連線

  1. 如果想拒絕任何私人端點連線 (不論是暫止要求還是稍早核准的現有連線),請選取端點連線,然後選取 [拒絕] 按鈕。

    顯示所選私人端點命令行上 [拒絕] 按鈕的螢幕快照。

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

    顯示 [拒絕連線] 頁面的螢幕快照,要求您確認。

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

移除私人端點連線

  1. 若要移除私人端點連線,請在清單中加以選取,然後選取工具列上的 [移除]

    顯示所選私人端點命令列上 [移除] 按鈕的螢幕快照。

  2. 在 [刪除連線] 頁面上,選取 [是] 以確認刪除私人端點。 如果您選取 [否],則不會發生任何事。

    顯示 [刪除連線] 頁面的螢幕快照,要求您確認。

  3. 您應該會看見狀態變更為 [已中斷連線]。 然後,您就不會在清單中看到端點。

您應該驗證私人端點的虛擬網路內的資源,是否透過其私人 IP 位址連線到您的 Azure 轉送命名空間。

對於此測試,依照在 Azure 入口網站中建立 Windows 虛擬機器中的步驟,建立虛擬機器

在 [網路] 索引標籤中:

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

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

nslookup <your-relay-namespace-name>.servicebus.windows.net

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

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

限制和設計考量

設計考量

限制

  • 每個 Azure 轉送命名空間的私人端點數目上限:64。
  • 每個訂閱具有私人端點的 Azure 轉送命名空間數目上限:64。
  • 網路安全性群組 (NSG) 規則和使用者定義的路由不適用於私人端點。 如需詳細資訊,請參閱 Azure Private Link 服務:限制

受信任的 Microsoft 服務

啟用 [允許信任的 Microsoft 服務略過此防火牆] 設定時,下列服務會獲授與 Azure 轉送資源的存取權:

信任的服務 支援的使用方式情節
Azure Machine Learning AML Kubernetes 會使用 Azure 轉送來促進 AML 服務與 Kubernetes 叢集之間的通訊。 Azure 轉送是完全受控的服務,可為裝載於不同網路上的應用程式之間提供安全的雙向通訊。 這項功能非常適合用於私人鏈接環境,其中 Azure 資源與內部部署資源之間的通訊會受到限制。
Azure Arc 與資源提供者相關聯的 Azure Arc 啟用服務,可以連線到 Azure 轉送命名空間中的混合式連線作為傳送者,而不會受到 Azure 轉送命名空間上設定的 IP 防火牆規則封鎖。 Microsoft.Hybridconnectivity 服務會在 Azure 轉送命名空間中建立混合式連線,並根據情況提供相關 Arc 服務的連線資訊。 如果您使用 Azure Arc,這些服務只會與 Azure 轉送命名空間通訊,並搭配下列 Azure 服務:

- Azure Kubernetes
- Azure Machine Learning
- Microsoft Purview

Azure 轉寄的其他受信任服務如下:

  • 事件格線
  • Azure IoT 中樞
  • Azure 串流分析
  • Azure 監視器
  • Azure API 管理
  • Azure Synapse
  • Azure 資料總管
  • Azure IoT Central
  • Azure 健康資料服務
  • Azure Digital Twins

注意

2021-11-01 版或更新版本的 Microsoft 轉寄 SDK 中,Microsoft.Relay/namespaces/networkRuleSets 屬性中提供 “trustedServiceAccessEnabled” 属性,以啟用信任的服務存取。

若要允許 Azure Resource Manager 範本中的受信任服務,請在範本中包含此屬性:

"trustedServiceAccessEnabled": "True"

例如,根據提供的 ARM 範本,您可以修改它以包含啟用受信任服務的此網路規則集屬性:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "namespaces_name": {
            "defaultValue": "contosorelay0215",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Relay/namespaces",
            "apiVersion": "2021-11-01",
            "name": "[parameters('namespaces_name')]",
            "location": "East US",
            "sku": {
                "name": "Standard",
                "tier": "Standard"
            },
            "properties": {}
        },
        {
            "type": "Microsoft.Relay/namespaces/authorizationrules",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/RootManageSharedAccessKey')]",
            "location": "eastus",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "rights": [
                    "Listen",
                    "Manage",
                    "Send"
                ]
            }
        },
        {
            "type": "Microsoft.Relay/namespaces/networkRuleSets",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/default')]",
            "location": "East US",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "trustedServiceAccessEnabled": "True",
                "publicNetworkAccess": "Enabled",
                "defaultAction": "Deny",
                "ipRules": [
                    {
                        "ipMask": "172.72.157.204",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "10.1.1.1",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "11.0.0.0/24",
                        "action": "Allow"
                    }
                ]
            }
        }
    ]
}