快速入門:使用 Azure PowerShell 建立私人端點
藉由建立並使用私人端點來安全地連線到 Azure App Service Web 應用程式,以開始使用 Azure Private Link。
在本快速入門中,建立 Azure App Service Web 應用程式的私人端點,然後建立並部署虛擬機器 (VM) 來測試私人連線。
您可以為各種 Azure 服務建立私人端點,例如 Azure SQL 和 Azure 儲存體。
必要條件
具有有效訂用帳戶的 Azure 帳戶。 如果您尚未擁有 Azure 帳戶,請建立免費帳戶。
在 Azure 訂用帳戶中部署具有 PremiumV2 層 或更高層級 App Service 方案的 Azure Web 應用程式。
如需詳細資訊和範例,請參閱快速入門:在 Azure 中建立 ASP.NET Core Web 應用程式。
本文中的範例 webapp 名為 webapp-1。 將範例取代為您的 webapp 的名稱。
Azure Cloud Shell 或 Azure PowerShell。
本快速入門中的步驟會在 Azure Cloud Shell 中以互動方式執行 Azure PowerShell Cmdlet。 若要在 Cloud Shell 中執行命令,請選取程式碼區塊右上角的 [開啟 Cloudshell]。 選取 [複製] 以複製程式碼,然後將其貼入 Cloud Shell 以執行。 您也可以從 Azure 入口網站內執行 Cloud Shell。
您也可以在本機安裝 Azure PowerShell 來執行 Cmdlet。 本文中的步驟需要 Azure PowerShell 模組 5.4.1 版或更新版本。 執行
Get-Module -ListAvailable Az
來了解您安裝的版本。 如果您需要升級,請參閱更新 Azure PowerShell 模組。如果您在本機執行 PowerShell,請執行
Connect-AzAccount
以連線至 Azure。
建立資源群組
Azure 資源群組是一種邏輯容器,您會在其中部署與管理 Azure 資源。
使用 New-AzResourceGroup 建立資源群組:
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
建立虛擬網路
使用 New-AzVirtualNetwork 在 test-rg 資源群組和 eastus2 位置中建立具有位址前置詞 10.0.0.0/16、名為 vnet-1 的虛擬網路。
$vnet = @{ Name = 'vnet-1' ResourceGroupName = 'test-rg' Location = 'eastus2' AddressPrefix = '10.0.0.0/16' } $virtualNetwork = New-AzVirtualNetwork @vnet
Azure 會將資源部署到虛擬網路內的子網路。 使用 Add-AzVirtualNetworkSubnetConfig 來建立具有位址前置詞 10.0.0.0/24、名為 subnet-1 的子網路設定。
$subnet = @{ Name = 'subnet-1' VirtualNetwork = $virtualNetwork AddressPrefix = '10.0.0.0/24' } $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
然後使用 Set-AzVirtualNetwork 將子網路設定與虛擬網路建立關聯。
$virtualNetwork | Set-AzVirtualNetwork
部署 Azure Bastion
Azure Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至您的虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需 Azure Bastion 的詳細資訊,請參閱 Azure Bastion。
注意
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要將 Bastion 部署為教學課程或測試的一部分,建議您在完成使用之後刪除此資源。
為您的虛擬網路設定 Azure Bastion 子網路。 此子網路專門保留用於 Azure Bastion 資源,且必須命名為 AzureBastionSubnet。
$subnet = @{ Name = 'AzureBastionSubnet' VirtualNetwork = $virtualNetwork AddressPrefix = '10.0.1.0/26' } $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
設定組態。
$virtualNetwork | Set-AzVirtualNetwork
為 Azure Bastion 建立公用 IP 位址。 堡壘主機會使用公用 IP,透過連接埠 443 存取安全殼層 (SSH) 和遠端桌面通訊協定 (RDP)。
$ip = @{ ResourceGroupName = 'test-rg' Name = 'public-ip' Location = 'eastus2' AllocationMethod = 'Static' Sku = 'Standard' Zone = 1,2,3 } New-AzPublicIpAddress @ip
使用 New-AzBastion 命令,在 AzureBastionSubnet 中建立新的標準 SKU Azure Bastion 主機。
$bastion = @{ Name = 'bastion' ResourceGroupName = 'test-rg' PublicIpAddressRgName = 'test-rg' PublicIpAddressName = 'public-ip' VirtualNetworkRgName = 'test-rg' VirtualNetworkName = 'vnet-1' Sku = 'Basic' } New-AzBastion @bastion
Bastion 資源部署需要幾分鐘的時間。
建立私人端點
需要支援私人端點的 Azure 服務,才能設定私人端點和虛擬網路的連線。 針對本文中的範例,我們會使用來自必要條件的 Azure App Service WebApp。 如需支援私人端點的 Azure 服務的詳細資訊,請參閱 Azure Private Link 可用性。
私人端點可以有靜態或動態指派的 IP 位址。
重要
您必須擁有先前部署的 Azure App Service WebApp,才能繼續進行本文中的步驟。 如需詳細資訊,請參閱必要條件。
在本節中,您將會:
使用 New-AzPrivateLinkServiceConnection 建立私人連結服務連線。
使用 New-AzPrivateEndpoint 建立私人端點。
選擇性地使用 New-AzPrivateEndpointIpConfiguration 建立私人端點靜態 IP 組態。
## Place the previously created webapp into a variable. ##
$webapp = Get-AzWebApp -ResourceGroupName test-rg -Name webapp-1
## Create the private endpoint connection. ##
$pec = @{
Name = 'connection-1'
PrivateLinkServiceId = $webapp.ID
GroupID = 'sites'
}
$privateEndpointConnection = New-AzPrivateLinkServiceConnection @pec
## Place the virtual network you created previously into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'
## Create the private endpoint. ##
$pe = @{
ResourceGroupName = 'test-rg'
Name = 'private-endpoint'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
PrivateLinkServiceConnection = $privateEndpointConnection
}
New-AzPrivateEndpoint @pe
設定私人 DNS 區域
私人 DNS 區域可用來解析虛擬網路中私人端點的 DNS 名稱。 在此範例中,我們會使用 Azure App Service Web 應用程式的 DNS 資訊,如需私人端點的 DNS 組態的詳細資訊,請參閱 Azure 私人端點 DNS 組態。
在本節中,您將會:
使用 New-AzPrivateDnsZone 建立新的私人 Azure DNS 區域
使用 New-AzPrivateDnsVirtualNetworkLink 將 DNS 區域連結至您先前建立的虛擬網路
使用 New-AzPrivateDnsZoneConfig 建立 DNS 區域組態
使用 New-AzPrivateDnsZoneGroup 建立 DNS 區域群組
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'
## Create the private DNS zone. ##
$zn = @{
ResourceGroupName = 'test-rg'
Name = 'privatelink.azurewebsites.net'
}
$zone = New-AzPrivateDnsZone @zn
## Create a DNS network link. ##
$lk = @{
ResourceGroupName = 'test-rg'
ZoneName = 'privatelink.azurewebsites.net'
Name = 'dns-link'
VirtualNetworkId = $vnet.Id
}
$link = New-AzPrivateDnsVirtualNetworkLink @lk
## Configure the DNS zone. ##
$cg = @{
Name = 'privatelink.azurewebsites.net'
PrivateDnsZoneId = $zone.ResourceId
}
$config = New-AzPrivateDnsZoneConfig @cg
## Create the DNS zone group. ##
$zg = @{
ResourceGroupName = 'test-rg'
PrivateEndpointName = 'private-endpoint'
Name = 'zone-group'
PrivateDnsZoneConfig = $config
}
New-AzPrivateDnsZoneGroup @zg
建立測試虛擬機器
若要驗證靜態 IP 位址和私人端點的功能,需要連線到您虛擬網路的測試虛擬機器。
在本節中,您將會:
使用 Get-Credential 來建立虛擬機器的登入認證
使用 New-AzNetworkInterface 建立虛擬機器的網路介面
使用 New-AzVMConfig、Set-AzVMOperatingSystem、Set-AzVMSourceImage 和 Add-AzVMNetworkInterface 建立虛擬機器組態
使用 New-AzVM 來建立虛擬機器
## Create the credential for the virtual machine. Enter a username and password at the prompt. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name vnet-1 -ResourceGroupName test-rg
## Create a network interface for the virtual machine. ##
$nic = @{
Name = 'nic-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create the configuration for the virtual machine. ##
$vm1 = @{
VMName = 'vm-1'
VMSize = 'Standard_DS1_v2'
}
$vm2 = @{
ComputerName = 'vm-1'
Credential = $cred
}
$vm3 = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2022-Datacenter'
Version = 'latest'
}
$vmConfig =
New-AzVMConfig @vm1 | Set-AzVMOperatingSystem -Windows @vm2 | Set-AzVMSourceImage @vm3 | Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine. ##
New-AzVM -ResourceGroupName 'test-rg' -Location 'eastus2' -VM $vmConfig
注意
虛擬網路中的虛擬機器 (具有 Bastion 主機) 不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從裝載了 Bastion 的虛擬網路中,移除任何 VM 的公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯。
注意
無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。
發生下列其中一個事件時,會停用預設輸出存取 IP:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
- Azure NAT 閘道資源會指派給 VM 的子網。
您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。
如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設輸出存取與針對輸出連線,使用來源網路位址轉譯 (SNAT)。
測試對私人端點的連線能力
使用您稍早建立的虛擬機器,跨私人端點連線到 Web 應用程式。
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 選取 [虛擬機器]。
選取 [vm-1]。
在 vm-1 的概觀頁面上,選取 [連線],再選取 [Bastion] 索引標籤。
選取 [使用 Bastion]。
輸入您在建立 VM 時所使用的使用者名稱和密碼。
選取 Connect。
連線之後,請在伺服器上開啟 PowerShell。
輸入
nslookup webapp-1.azurewebsites.net
。 您會收到類似以下範例的訊息:Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: webapp-1.privatelink.azurewebsites.net Address: 10.0.0.10 Aliases: webapp-1.azurewebsites.net
針對 Web 應用程式名稱,會傳回 10.0.0.10 的私人 IP 位址 (如果您在先前的步驟中選擇靜態 IP 位址的話)。 此位址位於您先前所建立虛擬網路的子網路中。
在與 vm-1 的堡壘連線中,開啟網頁瀏覽器。
輸入 Web 應用程式的 URL:
https://webapp-1.azurewebsites.net
。如果尚未部署 Web 應用程式,您會收到下列預設 Web 應用程式頁面:
清除資源
當不再需要時,您可以使用 Remove-AzResourceGroup 命令來移除資源群組、虛擬網路和其餘資源。
Remove-AzResourceGroup -Name 'test-rg'
下一步
如需支援私人端點的服務詳細資訊,請參閱: