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 introduttiva creare un endpoint privato per un'app Web app Azure Services e quindi creare e distribuire una macchina virtuale (VM) per testare la connessione privata.

È possibile creare endpoint privati per vari servizi di Azure, ad esempio AZURE SQL e Archiviazione di Azure.

Diagramma delle risorse create nella guida introduttiva all'endpoint privato.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Se non si ha già un account Azure, creare gratuitamente un account.

  • Un'app Web di Azure con un piano di servizio app PremiumV2 o superiore, distribuito nella sottoscrizione di Azure.

  • 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 le risorse di Azure vengono distribuite e gestite.

Creare un gruppo di risorse con New-AzResourceGroup:

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

Creare una rete virtuale

  1. 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
    
  2. 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
    
  3. 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 macchine virtuali nella rete virtuale tramite SSH (Secure Shell) o RDP (Remote Desktop Protocol) usando gli indirizzi IP privati. Le macchine virtuali 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.

  1. 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
    
  2. Impostare la configurazione.

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. 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
    
  4. 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:

## 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:

## 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:

## 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 bastion host 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 bastion. Per altre informazioni, vedere Annullare l'dissociazione 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 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à all'endpoint privato

Usare la macchina virtuale creata in precedenza per connettersi all'app Web nell'endpoint privato.

  1. Nella casella di ricerca, nella parte superiore del portale, immettere Macchina virtuale. Selezionare Macchine virtuali.

  2. Selezionare vm-1.

  3. Nella pagina di panoramica per vm-1 selezionare Connessione e quindi selezionare la scheda Bastion.

  4. Selezionare Usa Bastion.

  5. Immettere il nome utente e la password usati durante la creazione della macchina virtuale.

  6. Selezionare Connetti.

  7. Dopo aver stabilito la connessione, aprire PowerShell nel server.

  8. Immetti nslookup webapp-1.azurewebsites.net. Viene 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 10.0.0.10 per il nome dell'app Web se si sceglie l'indirizzo IP statico nei passaggi precedenti. Questo indirizzo si trova nella subnet della rete virtuale creata in precedenza.

  9. Nella connessione bastion a vm-1 aprire il Web browser.

  10. Immettere l'URL dell'app Web, https://webapp-1.azurewebsites.net.

    Se l'app Web non è stata distribuita, viene visualizzata la pagina predefinita dell'app Web seguente:

    Screenshot della pagina predefinita dell'app Web in un browser.

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: