Gestire reti virtuali di Azure e macchine virtuali Windows con Azure PowerShell

Le macchine virtuali di Azure usano la rete di Azure per la comunicazione di rete interna ed esterna. In questa esercitazione vengono create più macchine virtuali (VM) in una rete virtuale e viene configurata la connettività di rete tra di esse. Si apprenderà come:

  • Crea rete virtuale
  • Creare subnet di reti virtuali
  • Controllare il traffico di rete con gruppi di sicurezza di rete
  • Visualizzare le regole del traffico applicate

Questa esercitazione richiede il modulo Azure PowerShell 3.6 o versioni successive. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.

Creare la rete virtuale

Una rete virtuale è una rappresentazione della propria rete nel cloud. È un isolamento logico del cloud di Azure dedicato alla sottoscrizione. All'interno di una rete virtuale si trovano subnet, regole per la connettività a tali subnet e connessioni dalle VM alle subnet.

Per poter creare qualsiasi altra risorsa di Azure, è necessario prima creare un gruppo di risorse con New-AzureRmResourceGroup. L'esempio seguente crea un gruppo di risorse denominato myRGNetwork nella posizione EastUS:

New-AzureRmResourceGroup -ResourceGroupName myRGNetwork -Location EastUS

Una subnet è una risorsa figlio di una rete virtuale e consente di definire i segmenti degli spazi di indirizzi all'interno di un blocco CIDR, usando i prefissi degli indirizzi IP. Le NIC possono essere aggiunte alle subnet e connesse alle macchine virtuali, fornendo connettività per diversi carichi di lavoro.

Creare una subnet con New-AzureRmVirtualNetworkSubnetConfig:

$frontendSubnet = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myFrontendSubnet `
  -AddressPrefix 10.0.0.0/24

Creare una rete virtuale denominata myVNet che usa myFrontendSubnet con New-AzureRmVirtualNetwork:

$vnet = New-AzureRmVirtualNetwork `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $frontendSubnet

Creare la VM front-end

Per comunicare in una rete virtuale, una VM deve avere un'interfaccia di rete (NIC) virtuale. myFrontendVM deve essere accessibile da Internet e deve quindi avere anche un indirizzo IP pubblico.

Creare un indirizzo IP pubblico con New-AzureRmPublicIpAddress:

$pip = New-AzureRmPublicIpAddress `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -AllocationMethod Static `
  -Name myPublicIPAddress

Creare un'interfaccia di rete con New AzureRmNetworkInterface:

$frontendNic = New-AzureRmNetworkInterface `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -Name myFrontendNic `
  -SubnetId $vnet.Subnets[0].Id `
  -PublicIpAddressId $pip.Id

Impostare il nome utente e la password necessari per l'account amministratore della macchina virtuale con Get-Credential. Usare queste credenziali per connettersi alla macchina virtuale in una procedura aggiuntiva:

$cred = Get-Credential

Creare le VM con New-AzureRmVMConfig, Set-AzureRmVMOperatingSystem, Set-AzureRmVMSourceImage, Set-AzureRmVMOSDisk, Add-AzureRmVMNetworkInterface e New-AzureRmVM.

$frontendVM = New-AzureRmVMConfig `
    -VMName myFrontendVM `
    -VMSize Standard_D1
$frontendVM = Set-AzureRmVMOperatingSystem `
    -VM $frontendVM `
    -Windows `
    -ComputerName myFrontendVM `
    -Credential $cred `
    -ProvisionVMAgent `
    -EnableAutoUpdate
$frontendVM = Set-AzureRmVMSourceImage `
    -VM $frontendVM `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest
$frontendVM = Set-AzureRmVMOSDisk `
    -VM $frontendVM `
    -Name myFrontendOSDisk `
    -DiskSizeInGB 128 `
    -CreateOption FromImage `
    -Caching ReadWrite
$frontendVM = Add-AzureRmVMNetworkInterface `
    -VM $frontendVM `
    -Id $frontendNic.Id
New-AzureRmVM `
    -ResourceGroupName myRGNetwork `
    -Location EastUS `
    -VM $frontendVM

Installare il server Web

È possibile installare IIS in myFrontendVM usando una sessione Desktop remoto. Per accedere alla VM è necessario ottenerne l'indirizzo IP pubblico.

È possibile ottenere l'indirizzo IP pubblico di myFrontendVM con Get-AzureRmPublicIPAddress. L'esempio seguente ottiene l'indirizzo IP per myPublicIPAddress creato in precedenza:

Get-AzureRmPublicIPAddress `
    -ResourceGroupName myRGNetwork `
    -Name myPublicIPAddress | select IpAddress

Prendere nota di questo indirizzo IP per poterlo usare nei passaggi successivi.

Usare il comando seguente per creare una sessione Desktop remoto con myFrontendVM. Sostituire con l'indirizzo registrato in precedenza. Quando richiesto, immettere le credenziali usate durante la creazione della VM.

mstsc /v:<publicIpAddress>

Dopo avere eseguito l'accesso a myFrontendVM, è possibile usare una singola riga di codice di PowerShell per installare IIS e abilitare la regola del firewall locale per consentire il traffico Web. Aprire un prompt PowerShell nella macchina virtuale dalla sessione RDP ed eseguire il comando seguente:

Usare Install-WindowsFeature per eseguire l'estensione di script personalizzata che installa il server Web IIS:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

È ora possibile usare l'indirizzo IP pubblico per passare alla VM e visualizzare il sito IIS.

Sito IIS predefinito

Gestire il traffico interno

Un gruppo di sicurezza di rete (NSG) contiene un elenco di regole di sicurezza che consentono o rifiutano il traffico di rete verso le risorse connesse a una rete virtuale. I gruppi di sicurezza di rete possono essere associati a subnet o singole interfacce di rete collegate a VM. Per aprire o chiudere l'accesso alle VM tramite le porte vengono usate le regole dei gruppi di sicurezza di rete. Alla creazione di myFrontendVM, la porta in ingresso 3389 è stata aperta automaticamente per la connettività RDP.

La comunicazione interna delle VM può essere configurata usando un gruppo di sicurezza di rete. Questa sezione illustra come creare una subnet aggiuntiva nella rete e assegnare un gruppo di sicurezza di rete a tale subnet per consentire una connessione da myFrontendVM a myBackendVM sulla porta 1433. La subnet viene quindi assegnata alla VM al momento della creazione.

È possibile limitare il traffico interno verso myBackendVM solo da myFrontendVM creando un gruppo di sicurezza di rete per la subnet back-end. L'esempio seguente crea una regola del gruppo di sicurezza di rete denominata myBackendNSGRule con New-AzureRmNetworkSecurityRuleConfig:

$nsgBackendRule = New-AzureRmNetworkSecurityRuleConfig `
  -Name myBackendNSGRule `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix 10.0.0.0/24 `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 1433 `
  -Access Allow

Aggiungere un gruppo di sicurezza di rete denominato myBackendNSG con New-AzureRmNetworkSecurityGroup:

$nsgBackend = New-AzureRmNetworkSecurityGroup `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -Name myBackendNSG `
  -SecurityRules $nsgBackendRule

Aggiungere la subnet back-end

Aggiungere myBackEndSubnet a myVNet con Add-AzureRmVirtualNetworkSubnetConfig:

Add-AzureRmVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -VirtualNetwork $vnet `
  -AddressPrefix 10.0.1.0/24 `
  -NetworkSecurityGroup $nsgBackend
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myRGNetwork `
  -Name myVNet

Creare la VM back-end

Il modo più semplice per creare la VM back-end consiste nell'usare un'immagine di SQL Server. Questa esercitazione si limita a creare la VM con il server di database e non include informazioni sull'accesso al database.

Creare myBackendNic:

$backendNic = New-AzureRmNetworkInterface `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -Name myBackendNic `
  -SubnetId $vnet.Subnets[1].Id

Impostare il nome utente e la password necessari per l'account amministratore della VM con Get-Credential:

$cred = Get-Credential

Creare myBackendVM:

$backendVM = New-AzureRmVMConfig `
  -VMName myBackendVM `
  -VMSize Standard_D1
$backendVM = Set-AzureRmVMOperatingSystem `
  -VM $backendVM `
  -Windows `
  -ComputerName myBackendVM `
  -Credential $cred `
  -ProvisionVMAgent `
  -EnableAutoUpdate
$backendVM = Set-AzureRmVMSourceImage `
  -VM $backendVM `
  -PublisherName MicrosoftSQLServer `
  -Offer SQL2016SP1-WS2016 `
  -Skus Enterprise `
  -Version latest
$backendVM = Set-AzureRmVMOSDisk `
  -VM $backendVM `
  -Name myBackendOSDisk `
  -DiskSizeInGB 128 `
  -CreateOption FromImage `
  -Caching ReadWrite
$backendVM = Add-AzureRmVMNetworkInterface `
  -VM $backendVM `
  -Id $backendNic.Id
New-AzureRmVM `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -VM $backendVM

L'immagine, in cui è installato SQL Server, non viene usata in questa esercitazione. È inclusa per illustrare come è possibile configurare una VM per il traffico Web e una VM per la gestione di database.

Passaggi successivi

In questa esercitazione sono state create e protette reti di Azure in relazione a macchine virtuali.

  • Crea rete virtuale
  • Creare subnet di reti virtuali
  • Controllare il traffico di rete con gruppi di sicurezza di rete
  • Visualizzare le regole del traffico applicate

Passare all'esercitazione successiva per informazioni sul monitoraggio della protezione dei dati nelle macchine virtuali con Backup di Azure. .