將 Azure 轉送與 Azure Private Link 整合
Azure Private Link 服務可讓您透過虛擬網路中的私人端點,存取各 Azure 服務 (例如 Azure 轉送、Azure 服務匯流排、Azure 事件中樞、Azure 儲存體和 Azure Cosmos DB),以及 Azure 裝載的客戶/合作夥伴服務。 如需詳細資訊,請參閱何謂 Azure Private Link?
私人端點是一種網路介面,其允許您在虛擬網路中執行的工作負載,透過私密又安全的方式,連線到具有 Private Link 資源的服務 (例如,「轉送」命名空間)。 私人端點會使用您 VNet 中的私人 IP 位址,有效地將服務帶入您的 VNet 中。 服務的所有流量都可以透過私人端點路由傳送,因此不需要閘道、NAT 裝置、ExpressRoute、VPN 連線或公用 IP 位址。 虛擬網路和服務間的流量會在通過 Microsoft 骨幹網路時隨之減少,降低資料在網際網路中公開的風險。 您可以允許連線到特定 Azure 轉送命名空間,在存取控制中提供細微性層級。
注意
如果您透過私人連結使用轉送接聽程式,請開啟連接埠 9400-9599,以便搭配標準轉送連接埠進行傳出通訊。 請注意,您只需要針對轉送接聽程式執行此步驟。
使用 Azure 入口網站新增私人端點
必要條件
若要將 Azure 轉送命名空間與 Azure Private Link 整合,您需要下列實體或權限:
- Azure 轉送命名空間。
- Azure 虛擬網路。
- 虛擬網路中的子網路。
- 虛擬網路的擁有者或參與者權限。
您的私人端點和虛擬網路必須位於相同區域。 當您使用入口網站選取私人端點的區域時,其只會自動篩選該區域中的虛擬網路。 您的命名空間可以位於不同區域。
您的私人端點會使用您虛擬網路中的私人 IP 位址。
設定轉送命名空間的私人存取
下列程序的逐步指示會說明如何停用轉送命名空間的公用存取,接著將私人端點新增至該命名空間。
登入 Azure 入口網站。
在搜尋列中,輸入 [轉送]。
從清單中選取您要新增私人端點的命名空間。
在左側功能表上,選取 [設定] 底下的 [網路] 索引標籤。
如果您想要讓命名空間只能透過私人端點來存取,請在 [網路] 頁面上,針對 [公用網路存取] 選取 [已停用]。
如果您想要允許受信任的 Microsoft 服務略過此防火牆,針對 [允許受信任的 Microsoft 服務略過此防火牆],選取 [是]。
選取頁面頂端的 [私人端點連線] 索引標籤
選取頁面頂端的 [+ 私人端點] 按鈕。
在 [基本] 頁面上,遵循下列步驟:
選取您要在其中建立私人端點的 Azure 訂閱。
選取私人端點資源的資源群組。
輸入私人端點的名稱。
輸入網路介面的名稱。
選取私人端點的區域。 您的私人端點必須與虛擬網路位於相同的區域,但可與您要連線的目的地 Azure 轉送命名空間位於不同的區域。
選取頁面底部的 [下一步: 資源 >]。
檢閱 [資源] 頁面上的設定,然後選取 [下一步: 虛擬網路]。
在 [虛擬網路] 頁面上,選取您要在其中部署私人端點的虛擬網路和子網路。 下拉式清單只會列出目前所選訂閱與位置中的虛擬網路。
針對私人端點,您可以設定要動態配置 IP 位址,或以靜態方式配置 IP 位址
您也可以將新的或現有應用程式安全群組關聯至私人端點。
選取 [下一步:DNS] 以瀏覽至精靈的 [DNS] 頁面。 在 [DNS] 頁面上,系統會預設啟用 [與私人 DNS 區域整合] 設定(建議)。 您可以選擇將其停用。
若要私下與您的私人端點連接,您需要 DNS 記錄。 我們建議將私人端點與私人 DNS 區域整合。 您也可以利用自己的 DNS 伺服器,或使用虛擬機器上的主機檔案來建立 DNS 記錄。 如需詳細資訊,請參閱<Azure 私人端點 DNS 設定>。
選取頁面底部的 [下一步: 標籤 >]。
在 [標記] 頁面上,建立您想要與私人端點與私人 DNS 區域 (如果您已啟用此選項) 相關聯的任何標記 (名稱和值)。 然後選取頁面底部的 [檢閱 + 建立] 按鈕。
在 [檢閱 + 建立] 上,檢閱所有設定,然後選取 [建立] 來建立私人端點。
在 [私人端點] 頁面中,您可以看見私人端點連線的狀態。 如果您是轉送命名空間的擁有者,或具備其管理存取權,且已針對 [連線方法] 選取 [連線至我目錄中的 Azure 資源] 選項,則端點連線應該為 [自動核准]。 如果其處於 [擱置] 狀態,請參閱<使用 Azure 入口網站管理私人端點>一節。
導覽回 命名空間的 [網路] 頁面,然後切換至 [私人端點連線] 索引標籤。您應該會看見您建立的私人端點。
使用 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 轉送命名空間擁有者已移除連線,而私人端點變成參考性,且應該刪除以進行清除。 |
核准、拒絕或移除私人端點連線
- 登入 Azure 入口網站。
- 在搜尋列中,輸入 [轉送]。
- 選取您要管理的命名空間。
- 選取 [網路] 索引標籤。
- 根據您想要執行的作業 (核准、拒絕或移除),移至下列適當的小節。
核准私人端點連線
如果有任何暫止的連線,您會看到佈建狀態為 [擱置中] 的連線列出。
選取您想要核准的私人端點
選取 [核准] 按鈕。
在 [核准連線] 頁面上,輸入選擇性的註解,然後選取 [是]。 如果您選取 [否],則不會發生任何事。
您應該會看見清單中連線的狀態變更為 [已核准]。
拒絕私人端點連線
如果想拒絕任何私人端點連線 (不論是暫止要求還是稍早核准的現有連線),請選取端點連線,然後選取 [拒絕] 按鈕。
在 [拒絕連線] 頁面上,輸入選擇性的註解,然後選取 [是]。 如果您選取 [否],則不會發生任何事。
您應該會看見清單中連線的狀態變更為 [已拒絕]。
移除私人端點連線
若要移除私人端點連線,請在清單中加以選取,然後選取工具列上的 [移除]。
在 [刪除連線] 頁面上,選取 [是] 以確認刪除私人端點。 如果您選取 [否],則不會發生任何事。
您應該會看見狀態變更為 [已中斷連線]。 然後,您就不會在清單中看到端點。
驗證私人連結連線是否正常運作
您應該驗證私人端點的虛擬網路內的資源,是否透過其私人 IP 位址連線到您的 Azure 轉送命名空間。
對於此測試,依照在 Azure 入口網站中建立 Windows 虛擬機器中的步驟,建立虛擬機器
在 [網路] 索引標籤中:
- 指定 [虛擬網路] 和 [子網路]。 選取您已在其上方部署私人端點的虛擬網路。
- 指定公用 IP 資源。
- 針對 [NIC 網路安全性群組],選取 [無]。
- 針對 [負載平衡],選取 [否]。
連線到 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 私人連結定價。
限制
- 每個 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"
}
]
}
}
]
}
後續步驟
- 深入了解 Azure Private Link
- 深入了解 Azure 轉送