Guida introduttiva: Creare un endpoint privato con Azure PowerShell
Iniziare a usare collegamento privato di Azure creando e usando un endpoint privato per connettersi in modo sicuro a un'app Web app Azure Services.
In questa guida di avvio rapido, creare un endpoint privato per un'app Web di Servizi app di Azure, quindi creare e distribuire una macchina virtuale per testare la connessione privata.
È possibile creare endpoint privati per vari servizi di Azure, ad esempio Azure SQL e Archiviazione di Azure.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Se non si ha già un account Azure, è possibile crearne uno gratuitamente.
Un'app Web di Azure con un piano di servizio app PremiumV2 o superiore, distribuito nella sottoscrizione di Azure.
Per altre informazioni e per trovare un esempio, vedere Avvio rapido: Creare un'app Web ASP.NET Core in Azure.
L'app Web di esempio in questo articolo è denominata webapp-1. Sostituire l'esempio con il nome dell'app Web.
Azure Cloud Shell o Azure PowerShell.
I passaggi descritti in questa guida introduttiva eseguono i cmdlet di Azure PowerShell in modo interattivo in Azure Cloud Shell. Per eseguire i comandi in Cloud Shell, selezionare Apri Cloud Shell nell'angolo superiore destro di un blocco di codice. Selezionare Copia per copiare il codice e incollarlo in Cloud Shell per eseguirlo. È anche possibile eseguire Cloud Shell dal portale di Azure.
È anche possibile installare Azure PowerShell in locale per eseguire i cmdlet. I passaggi di questo articolo richiedono il modulo Azure PowerShell versione 5.4.1 o successiva. Eseguire
Get-Module -ListAvailable Az
per trovare la versione installata. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.Se si esegue PowerShell in locale, eseguire
Connect-AzAccount
per connettersi ad Azure.
Creare un gruppo di risorse
Un gruppo di risorse di Azure è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure.
Creare un gruppo di risorse con New-AzResourceGroup:
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
Creare una rete virtuale
Usare New-AzVirtualNetwork per creare una rete virtuale denominata vnet-1 con prefisso indirizzo IP 10.0.0.0/16 nel gruppo di risorse test-rg e nella località eastus2.
$vnet = @{ Name = 'vnet-1' ResourceGroupName = 'test-rg' Location = 'eastus2' AddressPrefix = '10.0.0.0/16' } $virtualNetwork = New-AzVirtualNetwork @vnet
Azure distribuisce le risorse in una subnet all'interno di una rete virtuale. Usare Add-AzVirtualNetworkSubnetConfig per creare una configurazione della subnet denominata subnet-1 con prefisso indirizzo 10.0.0.0/24.
$subnet = @{ Name = 'subnet-1' VirtualNetwork = $virtualNetwork AddressPrefix = '10.0.0.0/24' } $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Associare quindi la configurazione della subnet alla rete virtuale con Set-AzVirtualNetwork.
$virtualNetwork | Set-AzVirtualNetwork
Distribuire Azure Bastion
Azure Bastion usa il browser per connettersi alle VM nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando i relativi indirizzi IP privati. Le VM non necessitano di indirizzi IP pubblici, software client o configurazione speciale. Per altre informazioni su Azure Bastion, vedere Azure Bastion.
Nota
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata.
Configurare una subnet di Azure Bastion per la rete virtuale. Questa subnet è riservata esclusivamente alle risorse di Azure Bastion e deve essere denominata AzureBastionSubnet.
$subnet = @{ Name = 'AzureBastionSubnet' VirtualNetwork = $virtualNetwork AddressPrefix = '10.0.1.0/26' } $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Impostare la configurazione.
$virtualNetwork | Set-AzVirtualNetwork
Creare un indirizzo IP pubblico per Azure Bastion. L'host bastion usa l'indirizzo IP pubblico per accedere alla shell sicura (SSH) e al protocollo RDP (Remote Desktop Protocol) sulla porta 443.
$ip = @{ ResourceGroupName = 'test-rg' Name = 'public-ip' Location = 'eastus2' AllocationMethod = 'Static' Sku = 'Standard' Zone = 1,2,3 } New-AzPublicIpAddress @ip
Usare il comando New-AzBastion per creare un nuovo host Azure Bastion SKU Standard in AzureBastionSubnet.
$bastion = @{ Name = 'bastion' ResourceGroupName = 'test-rg' PublicIpAddressRgName = 'test-rg' PublicIpAddressName = 'public-ip' VirtualNetworkRgName = 'test-rg' VirtualNetworkName = 'vnet-1' Sku = 'Basic' } New-AzBastion @bastion
La distribuzione delle risorse Bastion richiede alcuni minuti.
Creare un endpoint privato
Per configurare l'endpoint privato e la connessione alla rete virtuale, è necessario un servizio di Azure che supporta gli endpoint privati. Per gli esempi di questo articolo, viene usata un'app Web di servizi app Azure dai prerequisiti. Per altre informazioni sui servizi di Azure che supportano un endpoint privato, vedere collegamento privato di Azure disponibilità.
Un endpoint privato può avere un indirizzo IP statico o assegnato dinamicamente.
Importante
Per procedere con i passaggi descritti in questo articolo, è necessario disporre di un'app Web di servizi app Azure distribuita in precedenza. Per altre informazioni, consulta Prerequisiti.
In questa sezione verranno visualizzate le informazioni seguenti:
Creare una connessione al servizio collegamento privato con New-AzPrivateLinkServiceConnection.
Creare l'endpoint privato con New-AzPrivateEndpoint.
Facoltativamente, creare la configurazione IP statica dell'endpoint privato con New-AzPrivateEndpointIpConfiguration.
## 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
Configurare la zona DNS privato
Una zona DNS privata viene usata per risolvere il nome DNS dell'endpoint privato nella rete virtuale. Per questo esempio si usano le informazioni DNS per un'app Web app Azure Services. Per altre informazioni sulla configurazione DNS degli endpoint privati, vedere Configurazione DNS dell'endpoint privato di Azure.
In questa sezione verranno visualizzate le informazioni seguenti:
Creare una nuova zona DNS di Azure privata con New-AzPrivateDnsZone
Collegare la zona DNS alla rete virtuale creata in precedenza con New-AzPrivateDnsVirtualNetworkLink
Creare una configurazione della zona DNS con New-AzPrivateDnsZoneConfig
Creare un gruppo di zone DNS con New-AzPrivateDnsZoneGroup
## 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
Creare una macchina virtuale di test
Per verificare l'indirizzo IP statico e la funzionalità dell'endpoint privato, è necessaria una macchina virtuale di test connessa alla rete virtuale.
In questa sezione verranno visualizzate le informazioni seguenti:
Creare credenziali di accesso per la macchina virtuale con Get-Credential
Creare un'interfaccia di rete per la macchina virtuale con New-AzNetworkInterface
Creare una configurazione di macchina virtuale con New-AzVMConfig, Set-AzVMOperatingSystem, Set-AzVMSourceImage e Add-AzVMNetworkInterface
Creare la macchina virtuale con 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
Nota
Le macchine virtuali in una rete virtuale con un host Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli indirizzi IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate da Bastion. Per altre informazioni, vedere Annullare l'associazione di un indirizzo IP pubblico da una macchina virtuale di Azure.
Nota
Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.
L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:
- Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
- La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
- Una risorsa del gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.
Le macchine virtuali create usando set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno l'accesso in uscita predefinito.
Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.
Testare la connettività con l'endpoint privato
Usare la macchina virtuale creata in precedenza per connettersi all'app Web tramite l'endpoint privato.
Nella casella di ricerca, nella parte superiore del portale, immettere Macchina virtuale. Selezionare Macchine virtuali.
Selezionare vm-1.
Nella pagina di panoramica di vm-1 selezionare Connetti, quindi selezionare la scheda Bastion.
Selezionare Usa Bastion.
Immettere il nome utente e la password usati al momento della creazione della macchina virtuale.
Selezionare Connetti.
Dopo aver stabilito la connessione, aprire PowerShell nel server.
Immetti
nslookup webapp-1.azurewebsites.net
. Verrà visualizzato un messaggio simile all’esempio seguente: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
Viene restituito un indirizzo IP privato di 10.0.0.10 per il nome dell'app Web se è stato scelto l'indirizzo IP statico nei passaggi precedenti. Questo indirizzo si trova nella subnet della rete virtuale creata in precedenza.
Nella connessione bastion a vm-1, aprire il Web browser.
Immettere l'URL dell'app Web,
https://webapp-1.azurewebsites.net
.Se l'app Web non è stata distribuita, viene visualizzata la seguente pagina dell'app Web predefinita:
Pulire le risorse
Quando non è più necessario, è possibile usare il comando Remove-AzResourceGroup per rimuovere il gruppo di risorse, la rete virtuale e le risorse rimanenti.
Remove-AzResourceGroup -Name 'test-rg'
Passaggi successivi
Per altre informazioni sui servizi che supportano endpoint privati, vedere: