Il provisioning di una macchina virtuale in Azure richiede componenti aggiuntivi oltre alla macchina virtuale stessa, incluse le risorse di rete e archiviazione. Questo articolo illustra le procedure consigliate per l'esecuzione di una macchina virtuale Linux sicura in Azure.
Architettura
Scaricare un file di Visio di questa architettura.
Workflow
Gruppo di risorse
Un gruppo di risorse è un contenitore logico di risorse correlate di Azure. È generalmente necessario raggruppare le risorse in base alla loro durata e alle persone che le gestiranno.
Inserire nello stesso gruppo di risorse le risorse strettamente associate che condividono lo stesso ciclo di vita. I gruppi di risorse consentono di distribuire e monitorare le risorse come gruppo, tenendo traccia dei costi per ogni gruppo di risorse. È anche possibile eliminare un intero set di risorse, operazione molto utile nelle distribuzioni di prova. Assegnare nomi di risorsa significativi per semplificare l'individuazione di una risorsa specifica e comprenderne il ruolo. Per altre informazioni, vedere Convenzioni di denominazione.
Macchina virtuale
È possibile eseguire il provisioning di una macchina virtuale da un elenco di immagini pubblicate, da un'immagine gestita personalizzata o da un file del disco rigido virtuale (VHD) caricato nell'archivio BLOB di Azure. supporto tecnico di Azure che eseguono varie distribuzioni Linux comuni, tra cui Debian, Red Hat Enterprise Linux (RHEL) e Ubuntu. Per altre informazioni, vedere Azure e Linux.
Azure offre macchine virtuali di diverse dimensioni. Per altre informazioni, vedere Dimensioni delle macchine virtuali in Azure. Se si sposta un carico di lavoro esistente in Azure, iniziare con le dimensioni della macchina virtuale più vicine ai server locali. Misurare quindi le prestazioni del carico di lavoro effettivo in relazione alla CPU, alla memoria e alle operazioni di input/output al secondo (IOPS) del disco e regolare le dimensioni in base alle necessità.
È in genere consigliabile scegliere l'area di Azure più vicina agli utenti interni o ai clienti. Non tutte le dimensioni di macchina virtuale sono disponibili in tutte le aree. Per altre informazioni, vedere i servizi disponibili in base all'area. Per un elenco delle dimensioni delle macchine virtuali disponibili in un'area specifica, eseguire il comando seguente dall'interfaccia della riga di comando di Azure:
az vm list-sizes --location <location>
Per informazioni sulla scelta di un'immagine di macchina virtuale pubblicata, vedere Come trovare immagini di macchine virtuali Linux.
Dischi
Per ottimizzare le prestazioni I/O del disco, si consiglia di usare Archiviazione Premium, che archivia i dati in unità SSD (Solid State Drive). I costi dipendono dalla capacità del disco sottoposto a provisioning. Anche IOPS e velocità effettiva, ovvero la velocità di trasferimento dati, dipendono dalle dimensioni del disco. Quando si effettua il provisioning di un disco è quindi consigliabile tenere in considerazione tutti e tre i fattori, ovvero capacità, IOPS e velocità effettiva. L'archiviazione Premium offre anche bursting gratuito, combinati con una comprensione dei modelli di carico di lavoro, offre una scelta efficace degli SKU e una strategia di ottimizzazione dei costi per l'infrastruttura IaaS, consentendo prestazioni elevate senza un provisioning eccessivo e riducendo al minimo il costo della capacità inutilizzata.
Managed Disks semplifica la gestione del disco gestendo automaticamente l'archiviazione. I dischi gestiti non richiedono un account di archiviazione. Si specificano le dimensioni e il tipo di disco e viene distribuito come risorsa a disponibilità elevata. I dischi gestiti offrono anche l'ottimizzazione dei costi offrendo prestazioni desiderate senza la necessità di over-provisioning, tenendo conto dei modelli di carico di lavoro fluttuanti e riducendo al minimo la capacità di provisioning inutilizzata.
Il disco del sistema operativo è un disco rigido virtuale archiviato in Archiviazione di Azure, dove viene conservato anche quando il computer host è inattivo. Il disco rigido virtuale può essere collegato localmente a NVMe o dispositivi simili disponibili in molti SKU di macchine virtuali.
I dischi temporanei offrono prestazioni ottimali senza costi aggiuntivi, ma presentano gli svantaggi significativi dell'essere non persistenti, con capacità limitata ed essere limitati solo all'uso del sistema operativo e del disco temporaneo. Per le macchine virtuali Linux, il disco del sistema operativo è /dev/sda1
. Si consiglia anche di creare uno o più dischi dati, ovvero dischi rigidi virtuali usati per i dati dell'applicazione.
Quando si crea un VHD, il disco non è formattato. Accedere alla VM per formattare il disco. Nella shell di Linux, i dischi dati vengono visualizzati come /dev/sdc
, /dev/sdd
e così via. È possibile eseguire lsblk
per elencare i dispositivi a blocchi, ad esempio i dischi. Per usare un disco dati, creare una partizione e un file system, quindi montare il disco. Ad esempio:
# Create a partition.
sudo fdisk /dev/sdc # Enter 'n' to partition, 'w' to write the change.
# Create a file system.
sudo mkfs -t ext3 /dev/sdc1
# Mount the drive.
sudo mkdir /data1
sudo mount /dev/sdc1 /data1
Quando si aggiunge un disco dati, al disco viene assegnato un ID numero di unità logica (LUN). Facoltativamente, è possibile specificare l'ID LUN, ad esempio se si sostituisce un disco e si vuole mantenere lo stesso ID LUN oppure si dispone di un'applicazione che cerca un ID LUN specifico. Tuttavia, tenere presente che gli ID LUN devono essere univoci per ogni disco.
È possibile modificare l'utilità di pianificazione I/O per ottimizzare le prestazioni nelle unità SSD, dato che i dischi delle VM negli account di archiviazione Premium sono SSD. Normalmente si consiglia di usare l'utilità di pianificazione NOOP per le unità SSD, ma è necessario usare uno strumento come iostat per monitorare le prestazioni di I/O del disco relative al proprio carico di lavoro.
La VM viene creata con un disco temporaneo. Questo disco viene archiviato in un'unità fisica nel computer host. Non viene salvato nell'Archiviazione di Azure ed è possibile che venga eliminato durante i riavvii e altri eventi del ciclo di vita della macchina virtuale. Usare questo disco solo per dati temporanei, ad esempio file di paging o di scambio. Per le macchine virtuali Linux, il disco temporaneo è /dev/disk/azure/resource-part1
ed è montato in /mnt/resource
o /mnt
.
Rete
I componenti di rete includono le risorse seguenti:
Rete virtuale. Ogni macchina virtuale viene distribuita in una rete virtuale che viene segmentata in subnet.
Interfaccia di rete (NIC). La scheda di interfaccia di rete consente alla VM di comunicare con la rete virtuale. Se sono necessarie più schede di interfaccia di rete per la macchina virtuale, viene definito un numero massimo di schede di interfaccia di rete per ogni dimensione della macchina virtuale.
Indirizzo IP pubblico. È necessario un indirizzo IP pubblico per comunicare con la macchina virtuale, ad esempio tramite Remote Desktop Protocol (RDP). L'indirizzo IP pubblico può essere dinamico o statico. Per impostazione predefinita, è dinamico.
- Riservare un indirizzo IP statico se è necessario un indirizzo IP fisso che non cambia, ad esempio se è necessario creare un record DNS "A" o aggiungere l'indirizzo IP a un elenco sicuro.
- È inoltre possibile creare un nome di dominio completo (FQDN) per l'indirizzo IP. È quindi possibile registrare un record CNAME nel DNS che punta al nome FQDN. Per altre informazioni, vedere Creare un nome di dominio completo nel portale di Azure.
Gruppo di sicurezza di rete. I gruppi di sicurezza di rete vengono usati per consentire o negare il traffico di rete verso le macchine virtuali. I gruppi di sicurezza di rete possono essere associati a subnet o singole istanze di macchina virtuale.
- Tutti i gruppi di sicurezza di rete contengono un set di regole predefinite, inclusa una regola che blocca tutto il traffico Internet in ingresso. Le regole predefinite non possono essere eliminate, ma altre regole possono eseguirne l'override. Per abilitare il traffico Internet, creare regole che consentano il traffico in ingresso verso porte specifiche, ad esempio la porta 80 per HTTP. Per abilitare Secure Shell (SSH), aggiungere una regola del gruppo di sicurezza di rete che consenta il traffico in ingresso verso la porta TCP 22.
Gateway NAT di Azure. I gateway NAT (Network Address Translation) consentono a tutte le istanze di una subnet privata di connettersi in uscita a Internet pur rimanendo completamente private. Solo i pacchetti che arrivano come pacchetti di risposta a una connessione in uscita possono passare attraverso un gateway NAT. Le connessioni in ingresso non richieste da Internet non sono consentite.
Azure Bastion. Azure Bastion è una soluzione distribuita come servizio completamente gestita che fornisce accesso sicuro alle macchine virtuali tramite indirizzi IP privati. Con questa configurazione, le macchine virtuali non necessitano di un indirizzo IP pubblico che li espone a Internet, aumentando così il comportamento di sicurezza. Azure Bastion offre connettività RDP o SSH sicura alle macchine virtuali direttamente tramite Transport Layer Security (TLS) tramite vari metodi, tra cui i portale di Azure client SSH o SSH nativi o NATIVI.
Operazioni
SSH. Prima di creare una VM Linux, generare una coppia di chiavi RSA pubblica/privata a 2.048 bit. Quando si crea la VM, utilizzare il file di chiave pubblica. Per altre informazioni, vedere Come usare SSH con Linux e Mac in Azure.
Diagnostica. Abilitare il monitoraggio e la diagnostica, tra cui le metriche di base sull'integrità, i log relativi all'infrastruttura di diagnostica e la diagnostica di avvio. La diagnostica di avvio permette di diagnosticare gli errori di avvio quando la VM passa a uno stato non avviabile. Creare un account di archiviazione di Azure per archiviare i log. Un account di archiviazione con ridondanza locale standard è sufficiente per i log di diagnostica. Per altre informazioni, vedere Abilitare il monitoraggio e la diagnostica.
Disponibilità. La macchina virtuale potrebbe essere interessata dalla manutenzione pianificata o dal tempo di inattività non pianificato. È possibile usare i log di riavvio della VM per determinare se un riavvio della VM è stato provocato da attività di manutenzione pianificata. Per una disponibilità più elevata, distribuire più macchine virtuali in un set di disponibilità o tra zone di disponibilità in un'area. Entrambe queste configurazioni offrono un contratto di servizio (SLA) superiore.
Backup Per proteggersi da perdite di dati accidentali, usare il servizio Backup di Azure per eseguire il backup delle macchine virtuali in un archivio con ridondanza geografica. Backup di Azure fornisce backup coerenti con le applicazioni.
Arresto di una VM. Azure distingue tra gli stati "Arrestato" e "Deallocato". L'addebito avviene quando lo stato della VM viene arrestato, ma non quando la VM viene deallocata. Anche il pulsante Arresta nel portale di Azure consente di deallocare la VM. Se l'arresto viene effettuato tramite il sistema operativo ad accesso eseguito, la VM viene arrestata ma non deallocata, quindi gli addebiti continueranno a essere effettuati.
Eliminazione di una VM. Se si elimina una macchina virtuale, è possibile eliminare o conservarne i dischi. È quindi possibile eliminare in modo sicuro la macchina virtuale senza perdere dati. Tuttavia, verranno comunque addebitati i costi per i dischi. È possibile eliminare i dischi gestiti esattamente come qualsiasi altra risorsa di Azure. Per impedire l'eliminazione accidentale, usare un blocco di risorsa per bloccare l'intero gruppo di risorse o le singole risorse, ad esempio una macchina virtuale.
Considerazioni
Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Microsoft Azure Well-Architected Framework.
Ottimizzazione dei costi
L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.
Sono disponibili diverse opzioni per le dimensioni delle macchine virtuali a seconda dell'utilizzo e del carico di lavoro. La gamma include l'opzione più economica della serie Bs alle macchine virtuali GPU più recenti ottimizzate per l'apprendimento automatico. Per informazioni sulle opzioni disponibili, vedere Prezzi delle macchine virtuali Linux di Azure.
Per i carichi di lavoro prevedibili, usare prenotazioni di Azure e piano di risparmio di Azure per il calcolo con un contratto di un anno o tre anni e ottenere risparmi significativi sui prezzi con pagamento in base al consumo. Per i carichi di lavoro senza tempi prevedibili di completamento o consumo di risorse, prendere in considerazione l'opzione Pagamento in base al consumo .
Usare le macchine virtuali spot di Azure per eseguire i carichi di lavoro che possono essere interrotti e non richiedono il completamento entro un intervallo di tempo predeterminato o un contratto di servizio. Azure distribuisce macchine virtuali spot se è disponibile capacità e rimuove quando è necessaria la capacità. I costi associati alle macchine virtuali spot sono notevolmente inferiori. Prendere in considerazione le macchine virtuali spot per questi carichi di lavoro:
- Scenari HPC (High-Performance Computing), processi di elaborazione batch o applicazioni di rendering visivo.
- Ambienti di test, tra cui l'integrazione continua e i carichi di lavoro di recapito continuo.
- Applicazioni senza stato su larga scala.
Usare il Calcolatore prezzi di Azure per stimare i costi.
Per altre informazioni, vedere la sezione sui costi in Microsoft Azure Well-Architected Framework.
Sicurezza
La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Panoramica del pilastro della sicurezza.
Usare Microsoft Defender per il cloud per ottenere una visualizzazione centrale dello stato di sicurezza delle risorse di Azure. Defender for Cloud monitora potenziali problemi di sicurezza e offre un quadro completo sullo stato della sicurezza della distribuzione. Defender for Cloud viene configurato per ogni sottoscrizione di Azure. Abilitare la raccolta dei dati di sicurezza come descritto in Eseguire l'onboarding della sottoscrizione di Azure per Defender per il cloud Standard. Quando la raccolta dati è abilitata, Defender per il cloud analizza automaticamente tutte le macchine virtuali create in tale sottoscrizione.
Gestione delle patch. Se abilitata, Defender per il cloud verifica se mancano aggiornamenti critici e di sicurezza.
Antimalware. Se abilitata, Defender per il cloud controlla se è installato il software antimalware. È anche possibile usare Defender per il cloud per installare software antimalware dall'interno del portale di Azure.
Controllo dell'accesso. Usare il controllo degli accessi in base al ruolo di Azure per controllare l'accesso alle risorse di Azure. Il controllo degli accessi in base al ruolo di Azure consente di assegnare ruoli di autorizzazione ai membri del team DevOps. Ad esempio, il ruolo di lettura permette di visualizzare le risorse di Azure, ma non di crearle, gestirle o eliminarle. Alcune autorizzazioni sono specifiche di un tipo di risorsa di Azure. Ad esempio, il ruolo di Collaboratore Macchina virtuale consente di riavviare o deallocare una VM, reimpostare la password di amministratore, creare una nuova VM e così via. Altri ruoli predefiniti che possono essere utili per questa architettura includono l'utente di DevTest Labs e collaboratore alla rete.
Nota
Il controllo degli accessi in base al ruolo di Azure non limita le azioni che un utente ha eseguito in una macchina virtuale. Le autorizzazioni sono determinate dal tipo di account sul sistema operativo guest.
Log di controllo. Per verificare le azioni di provisioning e altri eventi della VM, usare i log di controllo.
Crittografia dei dati. Se è necessario crittografare i dischi del sistema operativo e i dischi dati, usare Crittografia dischi di Azure.
Eccellenza operativa
L'eccellenza operativa copre i processi operativi che distribuiscono un'applicazione e la mantengono in esecuzione nell'ambiente di produzione. Per altre informazioni, vedere Panoramica del pilastro dell'eccellenza operativa.
Usare un singolo modello di Azure Resource Manager per il provisioning delle risorse di Azure e delle relative dipendenze. Poiché tutte le risorse si trovano nella stessa rete virtuale, sono isolate nello stesso carico di lavoro di base. Semplifica l'associazione delle risorse specifiche del carico di lavoro a un team DevOps, in modo che il team possa gestire in modo indipendente tutti gli aspetti di tali risorse. Questo isolamento consente al team DevOps di eseguire l'integrazione continua e il recapito continuo (CI/CD).
È anche possibile usare modelli di Azure Resource Manager diversi e integrarli con Azure DevOps Services per effettuare il provisioning di ambienti diversi in pochi minuti, ad esempio per replicare ambienti di produzione come scenari o ambienti di test di carico solo quando necessario, risparmiando i costi.
Per un'architettura di disponibilità più elevata, vedere Applicazione a più livelli Linux in Azure con Apache Cassandra, l'architettura di riferimento include più macchine virtuali e ogni macchina virtuale è inclusa in un set di disponibilità.
Valutare se usare Monitoraggio di Azure per analizzare e ottimizzare le prestazioni dell'infrastruttura, monitorare e diagnosticare i problemi di rete senza accedere alle macchine virtuali.
Passaggi successivi
- Per creare una macchina virtuale Linux, vedere Avvio rapido: Creare una macchina virtuale Linux nel portale di Azure
- Per installare un driver NVIDIA in una macchina virtuale Linux, vedere Installare i driver GPU NVIDIA in macchine virtuali serie N che eseguono Linux
- Per effettuare il provisioning di una macchina virtuale Linux, vedere Creare e gestire VM Linux con l'interfaccia della riga di comando di Azure.
- Accesso in uscita predefinito in Azure