Distribuire l'infrastruttura Linux e PostgreSQL
Questa unità guida l'utente attraverso la creazione delle risorse di calcolo che ospitano l'applicazione in Azure.
Esistono diversi metodi per implementare l'infrastruttura in Azure, tra cui il portale di Azure, l'interfaccia della riga di comando di Azure e i modelli Infrastructure as Code (tra cui Bicep e Terraform). In questa unità si distribuisce un modello di Bicep preconfigurato che incapsula le risorse di calcolo necessarie per l'applicazione. Le risorse principali sono:
- Una macchina virtuale che esegue Linux (Ubuntu 24.04 LTS)
- Database di Azure per Postgres che esegue Postgres 16 o versione successiva
- Identità gestita per abilitare l'accesso sicuro dalla macchina virtuale al database
- RBAC, inclusi i ruoli per accedere al database come amministratore, e ruoli più restrittivi per l'applicazione stessa
- Una rete virtuale per la macchina virtuale e il database
Poiché questo esempio è un carico di lavoro di sviluppo/test e si desidera mantenere le prestazioni convenienti ed efficienti, è stata scelta automaticamente la configurazione seguente:
La macchina virtuale è un D2s v4 standard (due vCPU, 8 GB di memoria). Ha unità SSD Premium di Azure con un massimo di 3.200 operazioni di I/O al secondo (IOPS) e 128 GB di spazio di archiviazione. Ha un disco SSD Premium P10 da 128 GB collegato, con 500 operazioni di I/O al secondo per il disco del sistema operativo. È possibile aggiornare il disco del sistema operativo in modo che corrisponda alle operazioni di I/O al secondo della macchina virtuale in base alle esigenze.
Il l database è un D2ds_v4 per utilizzo generico (due vCore, 8 GB di RAM) con massimo di 3200 operazioni di I/O al secondo. Ha un disco SSD Premium P10 da 128 GB con 500 operazioni di I/O al secondo. È possibile aggiornare il disco in modo che corrisponda alle operazioni di I/O al secondo di calcolo in base alle esigenze.
Al termine del modulo, queste risorse verranno eliminate per ottenere un risparmio sui costi. Tuttavia, è anche possibile disattivare la macchina virtuale e il database quando non sono in uso, al fine di risparmiare sui costi di calcolo e pagare solo per lo spazio di archiviazione usato. È anche possibile aumentare il carico di lavoro in base alle esigenze.
Il modello Bicep in questo modulo usa moduli verificati di Azure (AVM). AVM è un'iniziativa per standardizzare i moduli Infrastructure as Code. Microsoft gestisce questi moduli e incapsula molte procedure consigliate per la distribuzione di risorse in Azure.
Assicurarsi di avere una sottoscrizione a Azure e l'interfaccia della riga di comando di Azure
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Questo modulo richiede l'interfaccia della riga di comando di Azure 2.0.30 o versione successiva. Trovare la versione eseguendo questo comando:
az --version
Se hai bisogno di installare o aggiornare, consulta Installare l'interfaccia a riga di comando di Azure.
Accedere ad Azure tramite l'interfaccia della riga di comando di Azure
Per eseguire i comandi in Azure usando l'interfaccia della riga di comando, è prima necessario eseguire l'accesso. Accedere usando il comando az login:
az login
Creare un gruppo di risorse
Un gruppo di risorse è un contenitore per risorse correlate. Tutte le risorse devono essere posizionate in un gruppo di risorse. Usare il comando az group create per creare un gruppo di risorse:
az group create \
--name 240900-linux-postgres \
--location westus2
Distribuire il modello Bicep usando l'interfaccia della riga di comando di Azure
Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. In un file Bicep si definisce l'infrastruttura da distribuire in Azure. Usare quindi questo file nell'intero ciclo di vita dello sviluppo per distribuire ripetutamente l'infrastruttura. Le risorse vengono distribuite in modo coerente.
Il file Bicep usato per distribuire le risorse di calcolo per questa unità si trova nel repository GitHub deploy/vm-postgres.bicep . Contiene una macchina virtuale, una rete virtuale, un'identità gestita, un gruppo di sicurezza di rete (NSG) per la macchina virtuale. Per altre informazioni su Bicep, vedere Che cos'è Bicep?.
Clonare il repository di esempio nel computer locale:
git clone https://github.com/Azure-Samples/linux-postgres-migration.gitPassare alla directory
linux-postgres-migration:cd linux-postgres-migrationDistribuire il modello Bicep:
az deployment group create \ --resource-group 240900-linux-postgres \ --template-file deploy/vm-postgres.bicep
Al termine della distribuzione, l'output JSON conferma la distribuzione delle risorse.
Nelle sezioni successive verranno configurati ed esaminati i ruoli di controllo degli accessi in base al ruolo e le regole di sicurezza di rete nell'infrastruttura distribuita tramite il portale di Azure. Quando si usa il portale di Azure, è possibile codificare i ruoli e le regole nel modello Bicep. Il portale di Azure offre un'interfaccia visiva che semplifica la comprensione delle relazioni tra le risorse e le autorizzazioni assegnate.
Aprire il gruppo di risorse nel portale di Azure
Aprire il portale di Azure.
Nel menu del servizio selezionare Gruppi di risorse.
Nel riquadro Gruppi di risorse selezionare il gruppo
240900-linux-postgresdi risorse .
Nella parte superiore destra del riquadro l'area Distribuzioni mostra lo stato della distribuzione del modello Bicep. Al termine della distribuzione, viene visualizzato Riuscito quando la distribuzione è completata con successo.
Visualizzare il gruppo di sicurezza di rete della macchina virtuale
Selezionare la macchina virtuale
vm-1.Nella sezione Rete selezionare Impostazioni di rete.
Le impostazioni di rete indicano che il gruppo di sicurezza di rete (240900-linux-postgres-nsg ) è collegato alla stessa subnet della rete virtuale (240900-linux-postgres-vnet) della macchina virtuale.
Il gruppo di sicurezza di rete è visibile anche all'interno del gruppo di risorse. Contiene un set di regole di sicurezza in ingresso e in uscita che controllano il traffico da e verso la macchina virtuale.
Tornare al gruppo di risorse
Nella parte superiore della pagina, selezionare il link di navigazione per tornare al gruppo di risorse (Home > Resource groups > 240900-linux-postgres).
Si noti che l'Identità gestita assegnata dall'utente 240900-linux-postgres-identity è elencata nel gruppo di risorse.
Per altre informazioni sulle identità gestite assegnate dal sistema e assegnate dall'utente, vedere Informazioni sulle identità gestite per le risorse di Azure.
Aggiungere una regola di sicurezza in ingresso al gruppo di sicurezza di rete
Aggiungere una regola di sicurezza in ingresso al gruppo di sicurezza di rete per consentire il traffico SSH dall'indirizzo IP corrente alla macchina virtuale.
In uno scenario di produzione è spesso possibile usare l'accesso JIT, Azure Bastion o una VPN (ad esempio Azure o una VPN mesh) per limitare l'accesso alla macchina virtuale.
selezionare
240900-linux-postgres-nsg.Selezionare Impostazioni>Regole di sicurezza in ingresso.
Selezionare Aggiungi.
In Origine selezionare Indirizzo IP personale.
In Servizio selezionare SSH.
Selezionare Aggiungi.
Visualizzare l'amministratore per il server flessibile di Database di Azure per PostgreSQL
Trovare e selezionare il server flessibile di Database di Azure per PostgreSQL. È denominato
postgres-xxxxx, dovexxxxxè una stringa univoca definita dal modello Bicep. La stringa rimane coerente tra le distribuzioni nella sottoscrizione e nel gruppo di risorse.Selezionare Autenticazione di sicurezza>.
Per questo scenario si usa solo l'autenticazione Microsoft Entra. L'identità 240900-linux-postgres-identity gestita assegnata dall'utente è elencata in Microsoft Entra Admins.
L'identità gestita 240900-linux-postgres-identity è attualmente l'unico amministratore per il server. Facoltativamente, è possibile aggiungere il proprio account utente come amministratore. Per questo scenario, tuttavia, si usa l'identità gestita già presente.
In una sezione successiva si userà l'identità della macchina virtuale per amministrare il server tramite l'interfaccia della riga di comando di Azure. È anche possibile usare tale identità per fornire l'accesso al server per l'applicazione.
In uno scenario di produzione, è probabile che si usi una combinazione di identità gestite, Microsoft Entra ID e controllo degli accessi in base al ruolo con granularità fine per consentire al carico di lavoro dell'applicazione di accedere ai dati e gestire le risorse in Azure in modo sicuro. Si seguirebbe il principio dei privilegi minimi.
Per altre informazioni su questi scenari, vedere Autenticazione di Microsoft Entra con il server flessibile di Database di Azure per PostgreSQL e Usare Microsoft Entra ID per l'autenticazione con Database di Azure per PostgreSQL - Server flessibile.
Rivedere le regole del firewall del server flessibile di Database di Azure per PostgreSQL
Selezionare Impostazioni>rete.
Se si amministra il server dal computer locale, anziché dalla macchina virtuale, è necessario aggiungere l'indirizzo IP alle regole del firewall.
È possibile creare una regola del firewall per l'indirizzo IP corrente selezionando Aggiungi indirizzo IP client corrente (xxx.xxx.xxx.xxx)>Salva. Questa regola consente di accedere al server di sviluppo/test usando gli strumenti nel computer locale. Tuttavia, poiché si usa una macchina virtuale per accedere al database, al momento non si creerà una regola del firewall.
Nell'ambiente di produzione, è probabile che questo server venga isolato interamente dalla rete Internet pubblica deselezionando l'opzione Consenti l'accesso pubblico a questa risorsa tramite Internet usando un indirizzo IP pubblico .
A differenza della macchina virtuale, non è stata associata alcuna rete virtuale a Database di Azure per PostgreSQL. Si mantiene la possibilità di accedere a Database di Azure per PostgreSQL tramite la rete Internet pubblica, un'opzione utile per gli scenari di sviluppo/test.
Per garantire sicurezza e flessibilità, è possibile abilitare l'accesso dalla macchina virtuale tramite la relativa rete virtuale usando un endpoint privato. L'endpoint privato consente alla macchina virtuale di accedere al database senza esporlo alla rete Internet pubblica. Altre informazioni sugli endpoint privati in Database di Azure per PostgreSQL - Rete server flessibile con collegamento privato.
In questo caso, l'endpoint privato è stato creato per l'utente usando Bicep.
Esaminare le assegnazioni di ruolo per l'identità gestita assegnata dal sistema della macchina virtuale
Tornare al gruppo di risorse
240900-linux-postgrese selezionarevm-1.Nel menu del servizio selezionare Identità di sicurezza>.
Qui è possibile confermare che l'identità gestita assegnata dal sistema è collegata alla macchina virtuale.
In Sistema assegnato selezionare Assegnazioni di ruolo di Azure.
Qui è possibile verificare che il ruolo Lettore sia assegnato all'identità gestita assegnata dal sistema. Il ruolo ha come ambito il gruppo di risorse
240900-linux-postgres.
Le autorizzazioni in questa identità consentono di usare l'interfaccia della riga di comando di Azure all'interno della macchina virtuale per elencare le risorse nel gruppo di risorse. Con questa capacità, non è necessario specificare i dettagli delle risorse specifici del codice negli script.
In un secondo momento si assegnerà un ruolo aggiuntivo all'identità gestita della macchina virtuale in modo che la suddetta possa accedere direttamente a un account di Archiviazione BLOB di Azure.
Si procederà quindi all'esame e alla configurazione dell'infrastruttura distribuita.
Risorse
- Moduli verificati di Azure
- Installare l'interfaccia della riga di comando di Azure
- Creare un gruppo di risorse usando l'interfaccia della riga di comando di Azure
- Controllo degli accessi in base al ruolo di Azure
- Identità gestita di Azure
- Che cos'è Bicep?
- Che cosa sono le identità gestite per le risorse di Azure?
- Abilitare l'accesso JIT alla VM
- Che cos'è Azure Bastion?
- Autenticazione Microsoft Entra con Database di Azure per PostgreSQL - Server flessibile
- Usare Microsoft Entra ID per l'autenticazione con Database di Azure per PostgreSQL - Server flessibile
- Database di Azure per PostgreSQL - Rete server flessibile con collegamento privato