Architettura di sicurezza e compliance
Mettere in sicurezza la tua istanza di Azure Database for PostgreSQL è fondamentale per proteggere i dati sensibili, garantire la continuità operativa e mantenere la conformità normativa.
Azure offre funzionalità integrate e robuste che aiutano a far rispettare la gestione delle identità, la protezione dell'accesso di rete e l'allineamento agli standard di settore.
Meccanismi di autenticazione
L'autenticazione è la prima linea di difesa per proteggere l'accesso al tuo database PostgreSQL.
Integrazione con Azure Active Directory (AAD)
Azure AD ti consente di gestire centralmente gli utenti e il loro accesso alle risorse Azure, incluso PostgreSQL.
È più sicuro rispetto alla gestione di utenti locali sul server e abilita l'autenticazione a più fattori, l'accesso condizionale e la gestione del ciclo di vita degli utenti.
Vediamo un'architettura di esempio:
Puoi integrare il tuo dominio Active Directory on-premises con Azure AD per estendere nel cloud l'infrastruttura di identità esistente.
L'immagine sotto illustra una tipica architettura di identità ibrida:
Immagine che illustra un'architettura di identità ibrida che integra Active Directory on-premises con Azure Active Directory (Azure AD). Fonte: Microsoft Azure Architecture
Per abilitare l'autenticazione AAD:
01: Registra il server PostgreSQL con AAD:
- Apri l'Azure Portal.
- Vai ai tuoi Azure Database for PostgreSQL flexible servers.
- In Impostazioni, clicca su "Active Directory admin".
- Clicca su "Set admin", cerca un utente/gruppo, poi "Save".
02: Configura l'admin AAD tramite Azure CLI (opzionale):
az postgres flexible-server ad-admin create \
--resource-group <your-resource-group> \
--server-name <your-server-name> \
--display-name <aad-user-name> \
--object-id <aad-user-object-id>
03: Connettiti usando psql:
psql "host=<your-postgres-host> dbname=<your-db> user=<aad-user>@<tenant>.onmicrosoft.com sslmode=require"
Autenticazione SCRAM-SHA-256
Azure PostgreSQL supporta SCRAM-SHA-256, un meccanismo moderno e sicuro di autenticazione basata su password che supera l'obsoleto MD5.
Abilitalo nei parametri del server PostgreSQL:
- Vai alla sezione "server parameters" sotto flexible server nell'Azure portal.
- Cerca
password_encryptione impostalo suscram-sha-256. - Salva le modifiche e riavvia il server se richiesto.
Row-Level Security (RLS)
Usa RLS per definire policy di controllo degli accessi granulari, consentendo solo a determinati utenti di vedere o modificare specifiche righe di una tabella.
Come abilitare RLS:
01: Connettiti al tuo database ed esegui:
ALTER TABLE employees ENABLE ROW LEVEL SECURITY;
02: Crea una policy:
CREATE POLICY employee_policy
ON employees
USING (user_email = current_user);
Protezione di rete
Proteggere Azure Database for PostgreSQL a livello di rete è essenziale per prevenire accessi non autorizzati e ridurre la superficie di attacco.
Azure offre diverse funzionalità di rete integrate per isolare il traffico e applicare il controllo degli accessi.
01: Utilizzo di endpoint privati
Gli endpoint privati consentono di rendere accessibile il tuo server PostgreSQL solo all'interno della tua Azure Virtual Network, eliminando l'esposizione pubblica.
Per configurare un endpoint privato:
01: Vai all'Azure portal e seleziona il tuo PostgreSQL flexible server
02: In "Settings", clicca su "Networking".
03: Seleziona "Private access (VNet integration)".
04: Clicca su "Add Private Endpoint".
05: Fornisci un nome e seleziona il tuo resource group e la VNet/subnet.
06: Scegli l'integrazione con Private DNS (consigliata).
07: Rivedi e crea l'endpoint privato.
Le immagini sotto mostrano alcuni dei principali passaggi nell'Azure portal per configurare un endpoint privato.
Immagine con uno screenshot dei passaggi nell'Azure portal per configurare un endpoint privato (01).
Immagine con uno screenshot dei passaggi nell'Azure portal per configurare un endpoint privato (02).
02: Network Security Group (NSG)
Gli NSG controllano il traffico in ingresso e in uscita verso interfacce di rete e subnet. Usali per consentire la connessione solo a IP attendibili.
Per configurare gli NSG per il tuo endpoint privato:
01: Vai alla subnet in cui risiede il tuo endpoint privato.
02: Associa un NSG e definisci regole come:
- Consenti solo intervalli IP della tua organizzazione.
- Nega tutte le altre connessioni in ingresso.
03: Peering tra regioni
Per applicazioni globali, usa il peering tra VNet in diverse regioni Azure per instradare in modo sicuro il traffico tra reti virtuali.
Per configurare il peering cross-region nell'Azure portal:
01: Nell'Azure portal, vai su "Virtual networks" e seleziona "Peerings".
02: Clicca su "Add" e seleziona la virtual network (VNet) remota.
03: Abilita "Use remote gateways for cross-region connectivity".
Certificazioni di compliance
Azure Database for PostgreSQL è conforme a un'ampia gamma di standard industriali e governativi, garantendo protezione dei dati e allineamento legale:
Alcune certificazioni includono:
- GDPR
- HIPAA
- SOC 1/2/3
- ISO/IEC 27001, 27018
- FedRAMP, PCI-DSS
Puoi visualizzare lo stato di conformità sul Microsoft Trust Center e scaricare i report di compliance rilevanti per la tua regione o il tuo settore.
Ottimizzazione delle prestazioni e monitoraggio
Massimizzare prestazioni e affidabilità è fondamentale per i carichi di lavoro in produzione.
Azure fornisce strumenti per il tuning intelligente, il monitoraggio in tempo reale e gli avvisi per garantire che il tuo server PostgreSQL funzioni in modo ottimale.
Tuning intelligente
Azure consente miglioramenti proattivi delle prestazioni tramite strumenti integrati di analisi e ottimizzazione.
I casi d'uso includono scalabilità automatica, distribuzione del carico di lavoro e miglioramento delle prestazioni dello storage.
Usa Azure Advisor per raccomandazioni sulle prestazioni
Azure Advisor analizza i dati di telemetria e raccomanda best practice.
Per applicare le raccomandazioni sulle prestazioni:
01: Vai all'Azure Portal e seleziona "Azure Advisor".
02: Clicca su "Recommendations", poi "Performance".
03: Cerca il tuo PostgreSQL flexible server.
04: Applica suggerimenti come:
- Scalare i vCore
- Aumentare gli IOPS
- Usare read replica
Creare una read replica
Sposta i carichi di lavoro a lettura intensiva creando delle repliche. Per farlo:
01: Nell'Azure portal, seleziona il tuo server PostgreSQL.
02: In "Settings", scegli "Replicas".
03: Clicca su "Add Replica", seleziona la regione e crea la replica.
04: Usa gli endpoint in sola lettura nella tua applicazione.
Framework di monitoraggio
Azure Monitor offre visibilità approfondita sullo stato e l'utilizzo delle tue risorse PostgreSQL.
Metriche chiave da monitorare
- Utilizzo CPU
- Utilizzo memoria
- Disk I/O e IOPS
- Tempo di esecuzione delle query
- Connessioni attive
- Errori di connessione
Per visualizzare le metriche:
Passaggio 01: Vai all'Azure portal e apri Monitor.
Passaggio 02: Clicca su "Metrics" e seleziona il tuo PostgreSQL flexible server.
Passaggio 03: Scegli una metrica (ad es., CPU %).
Passaggio 04: Applica filtri e imposta l'aggregazione (ad es., average, max).
Passaggio 05: Crea grafici visivi o aggiungili alle dashboard.
Creazione di regole di alert
Gli avvisi ti aiutano ad agire sulle anomalie di prestazioni prima che impattino gli utenti.
Per creare un alert:
Passaggio 01: Nell'Azure portal, vai su Monitor e seleziona "Alerts".
Passaggio 02: Clicca su "New Alert Rule".
Passaggio 03: Seleziona la tua risorsa PostgreSQL.
Passaggio 04: Scegli una condizione, ad es., CPU usage > 80%.
Passaggio 05: Imposta periodo di valutazione e frequenza.
Passaggio 06: Definisci un action group (email, webhook, Logic App).
Passaggio 07: Assegna un nome e crea l'alert.
Key Performance Indicator (KPI)
Monitorare i KPI garantisce che il sistema sia in salute e rispetti le SLA:
|
KPI |
Descrizione |
|
Utilizzo CPU |
Dovrebbe restare sotto il 75% per prestazioni ottimali |
|
Utilizzo memoria |
Un utilizzo elevato può causare query lente o OOM kill |
|
Durata query |
Traccia le query lente usando i log delle prestazioni delle query |
|
Connessioni attive |
Indicano il carico utente concorrente |
|
Utilizzo storage |
Aiuta a prevedere quando potrebbe attivarsi l'auto-scaling |
Puoi visualizzare e analizzare questi KPI in Azure Monitor Metrics.
Pattern di migrazione e integrazione
La migrazione dei database ad Azure Database for PostgreSQL può essere semplice con gli strumenti e la strategia giusti.
Azure supporta migrazione online e offline, molteplici sistemi sorgente e l'integrazione con strumenti di AI e di sviluppo.
> Se vuoi un tutorial pratico per lavorare con PostgreSQL in ambienti di sviluppo reali, leggi Usare PostgreSQL in Python.
Database Migration Service (DMS)
Azure Database Migration Service (DMS) facilita migrazioni sicure e guidate da varie piattaforme database (on-premises o cloud) verso Azure PostgreSQL.
L'immagine sotto illustra scenari e piattaforme supportate per la migrazione:
Diagramma che mostra Azure Database Migration Service (DMS). Fonte: Microsoft Products
Eseguire una migrazione con DMS
01: Crea un'istanza DMS:
- Vai all'Azure portal e cerca "Database Migration Services".
- Clicca su "Create", poi scegli subscription, resource group e regione.
- Seleziona "Integration Runtime (IR)" e crea o riusa un IR esistente.
02: Crea un progetto di migrazione:
- All'interno della tua istanza DMS, clicca su "Add New Migration Project".
- Fornisci un nome e imposta:
- Tipo server sorgente: PostgreSQL
- Tipo server di destinazione: Azure Database for PostgreSQL
- Tipo di attività di migrazione: Online o Offline
03: Definisci server sorgente e destinazione:
- Inserisci i dettagli di connessione per il server PostgreSQL sorgente (on-prem, AWS RDS, ecc.).
- Inserisci le credenziali per l'Azure PostgreSQL flexible server di destinazione.
04: Esegui e monitora la migrazione:
- Scegli i database/schemi da migrare.
- Configura il mapping delle tabelle e le eventuali trasformazioni dei dati.
- Avvia la migrazione e monitora l'avanzamento nell'Azure portal.
Migrazione da on-premises o altri cloud
Per migrazioni più piccole o una tantum, puoi usare gli strumenti nativi di PostgreSQL come pg_dump e pg_restore.
Migrazione offline via CLI
Per eseguire una migrazione offline da un database PostgreSQL on-premises o su altro cloud verso Azure, segui questi passaggi:
01: Esporta il database dalla sorgente:
pg_dump -Fc --no-acl --no-owner -h <source-host> -U <source-user> dbname > db.dump
02: Importa in Azure PostgreSQL:
pg_restore -h <azure-host> -U <azure-user> -d <target-db> db.dump
Un suggerimento è usare il flag --jobs con pg_restore per prestazioni più rapide su database di grandi dimensioni.
Migrare da Oracle a PostgreSQL
Per migrare da Oracle a PostgreSQL, puoi usare Ora2Pg per convertire gli schemi Oracle in sintassi compatibile con PostgreSQL. Segui questi passaggi:
01: Installa Ora2Pg.
02: Configura il file ora2pg.conf con le tue credenziali Oracle.
03: Esegui i seguenti comandi:
ora2pg -c ora2pg.conf -o schema.sql
psql -h <azure-host> -U <user> -d <dbname> -f schema.sql
> Per rafforzare la tua capacità di gestire i database dopo la migrazione, dai un'occhiata a Gestire i database in PostgreSQL.
Capacità di integrazione AI
Azure PostgreSQL abilita carichi di lavoro di AI tramite l'estensione pgvector e può integrarsi con Azure Cognitive Services.
Per abilitare e usare pgvector:
CREATE EXTENSION IF NOT EXISTS vector;
02: Crea e usa colonne vettoriali:
CREATE TABLE embeddings (
id SERIAL PRIMARY KEY,
description TEXT,
embedding vector(1536)
);
03: Inserisci e cerca vettori:
INSERT INTO embeddings (description, embedding)
VALUES ('example', '[0.1, 0.2, 0.3, 0.4]');
SELECT * FROM embeddings
ORDER BY embedding <-> '[0.1, 0.2, 0.3, 0.4]'
LIMIT 5;
04: Integra con servizi di AI:
- Usa Azure OpenAI, Cognitive Search o Azure ML per generare embedding.
- Archiviali ed esegui query usando pgvector in PostgreSQL.
Tecniche di ottimizzazione dei costi
Azure offre diverse strategie per ridurre i costi infrastrutturali e operativi di PostgreSQL.
Prezzi del flexible server
Per ottimizzare i costi con le opzioni di prezzo del flexible server, segui queste linee guida:
01: Usa SKU burstable (ad es., B1ms) per sviluppo o carichi di lavoro a bassa CPU.
- Nell'Azure portal, vai su PostgreSQL e seleziona "Pricing tier".
- Scegli "Burstable".
02: Capacità riservata:
- Impegnati per 1 o 3 anni per ottenere fino al 60% di risparmio.
- Acquista tramite l'Azure portal andando su "Reservations", cliccando "Add" e selezionando "PostgreSQL flexible server".
Economia di Hyperscale (Citus)
Hyperscale utilizza lo sharding orizzontale per migliorare il throughput.
I vantaggi includono:
- Load balancing tra i nodi
- Migliore isolamento delle risorse
- Efficienza dello storage tramite compressione
Abilita Hyperscale andando nell'Azure portal, selezionando "Create Resource" e poi "Azure Database for PostgreSQL (Hyperscale, Citus)".
Gestione dei costi di storage e backup
Per gestire efficacemente i costi di storage e backup, considera i seguenti passaggi:
Rivedi la retention degli snapshot:
- Azure mantiene backup giornalieri per impostazione predefinita.
- Vai su "Server settings", poi "Backups", e regola il "Retention Period" (default 7–35 giorni).
Stima i costi con Azure Pricing Calculator:
- Azure Pricing Calculator.
- Aggiungi PostgreSQL flexible server, scegli regione, SKU, retention backup e IOPS.
Gestione delle versioni di PostgreSQL e upgrade
Mantieni l'ambiente sicuro e supportato applicando regolarmente gli aggiornamenti.
Versioni supportate e politica di ciclo di vita
Comprendere le versioni di PostgreSQL supportate e la loro politica di ciclo di vita è importante per mantenere un ambiente sicuro e supportato:
- Azure supporta le versioni di PostgreSQL 11–16.
- Il supporto delle versioni è allineato alla policy EOL della community PostgreSQL.
- Pianifica gli upgrade prima dell'EOL per mantenere supporto e sicurezza.
Upgrade e patching
L'aggiornamento e il patching del tuo PostgreSQL flexible server prevedono processi automatici e manuali, a seconda del tipo di update:
- Gli aggiornamenti di minor release vengono applicati automaticamente.
- Gli upgrade di major release richiedono passaggi manuali:
Passaggi per l'upgrade:
01: Esegui il backup del database corrente:
pg_dumpall -h <current-host> -U <user> > backup.sql
02: Crea un nuovo server con la versione di PostgreSQL desiderata dall'Azure Portal.
03: Ripristina il backup nel nuovo server:
psql -h <new-host> -U <user> -f backup.sql
04: Aggiorna le stringhe di connessione nella tua applicazione o nelle variabili d'ambiente.
Ecosistema di sviluppo
Azure PostgreSQL supporta moderni carichi di lavoro DevOps e geospaziali.
Infrastructure-as-Code (IaC)
Usa Terraform per un provisioning ripetibile e automatizzato. Ecco uno script Terraform di esempio per creare un Azure PostgreSQL flexible server:
resource "azurerm_postgresql_flexible_server" "example" {
name = "mypgflexserver"
resource_group_name = "myrg"
location = "East US"
administrator_login = "pgadmin"
administrator_password = "password123!"
sku_name = "Standard_B1ms"
version = "14"
}
Per creare la risorsa, esegui terraform init → terraform plan → terraform apply.
> Per saperne di più, dai un'occhiata alla nostra guida completa su come usare Terraform con Azure.
Capacità geospaziali con PostGIS
PostGIS estende PostgreSQL per query spaziali e geografiche.
Per abilitare PostGIS:
CREATE EXTENSION postgis;
Usalo per app basate sulla posizione, mapping, ottimizzazione dei percorsi e geofencing.
Estensioni e integrazioni popolari
Abilita potenti estensioni PostgreSQL per migliorare l'osservabilità e la schedulazione:
|
Estensione |
Scopo |
|
pg_stat_statements |
Traccia e analizza le prestazioni delle query |
|
uuid-ossp |
Genera UUID |
|
postgis |
Query geospaziali |
|
pg_cron |
Schedula job in background in SQL |
Per abilitare le estensioni desiderate, vai all'Azure Portal e apri il tuo PostgreSQL flexible server.
Da lì, accedi alla sezione Server Parameters, trova l'impostazione azure.extensions, aggiungi le estensioni richieste come elenco separato da virgole e salva le modifiche.
Conclusione
Azure Database for PostgreSQL ti permette di distribuire, scalare e gestire PostgreSQL con affidabilità, sicurezza e prestazioni di livello enterprise nel cloud.
Con l'evolversi delle esigenze del cloud, sfruttare il solido ecosistema di Azure e l'affidabilità comprovata di PostgreSQL garantirà che le tue applicazioni restino agili, conformi ed efficienti in termini di costi.
Se vuoi approfondire, ti consiglio vivamente di dare un'occhiata allo skill track Azure Fundamentals. Buono studio!



Con lo spostamento di sempre più carichi di lavoro nel cloud, ho scoperto che gestire PostgreSQL in modo efficiente e sicuro è diventata una competenza fondamentale per i professionisti dei dati.
PostgreSQL è da tempo uno dei miei database relazionali di riferimento. È affidabile, estensibile ed è supportato da una community open-source.
Ma eseguirlo nel cloud - soprattutto su larga scala - comporta una serie di sfide: alta disponibilità, tuning delle prestazioni, ottimizzazione dei costi e rispetto di rigorosi requisiti di sicurezza.
Azure Database for PostgreSQL risolve molti di questi problemi offrendo una piattaforma completamente gestita, scalabile e sicura. Per esperienza, semplifica il deployment e le operazioni, dandoti allo stesso tempo la flessibilità necessaria per sviluppare velocemente e adattarti a esigenze in evoluzione. Per questo, in questo tutorial, coprirò tutto ciò che devi sapere per distribuire un database PostgreSQL su Azure.
> Per familiarizzare con i fondamenti di PostgreSQL e come funziona, dai un'occhiata a Cos'è PostgreSQL? Come funziona, casi d'uso e risorse.
Panoramica di Azure Database for PostgreSQL
Azure Database for PostgreSQL è un servizio PostgreSQL cloud-native e completamente gestito fornito da Microsoft.
Progettato sia per carichi di lavoro su piccola scala che di livello enterprise, elimina la necessità di fornire, configurare, patchare e mantenere manualmente l'infrastruttura del database.
Costruito sulla piattaforma Azure, supporta tre modelli di deployment distinti, single server, flexible server e Hyperscale (Citus), per adattarsi a diversi carichi di lavoro e architetture applicative.
Alcuni dei principali vantaggi di Azure PostgreSQL includono:
Immagine che mostra i principali vantaggi di Azure PostgreSQL. Creata con Napkin AI.
Modelli di deployment e framework architetturali
Azure Database for PostgreSQL supporta diversi modelli di deployment, permettendoti di scegliere l'architettura che meglio si adatta alle esigenze di scalabilità, disponibilità e prestazioni della tua applicazione.
Deployment con flexible server
Il modello flexible server è l'opzione più versatile e offre un controllo granulare sulla configurazione delle risorse, sulla disponibilità e sul tuning delle prestazioni.
È adatto ad applicazioni mission-critical che richiedono elevati tempi di attività e prestazioni prevedibili.
Alta disponibilità (HA)
Per garantire la continuità del servizio e ridurre al minimo il downtime, considera le seguenti configurazioni di alta disponibilità:
Scalabilità e ottimizzazione
Per garantire prestazioni ed efficienza dei costi, implementa le seguenti strategie per la gestione dinamica delle risorse e l'ottimizzazione dei carichi di lavoro:
Come distribuire un flexible server con HA abilitata
Per distribuire un "flexible server" con High Availability (HA) attivata, segui questi passaggi:
01: Vai all'Azure Portal, quindi Azure Database for PostgreSQL flexible servers, e clicca su "create".
Le immagini qui sotto illustrano questo passaggio.
02: In "High availability", scegli "Same zone" oppure "Zone redundant".
L'immagine qui sotto illustra questo passaggio.
03: Configura vCore, dimensione dello storage e impostazioni IOPS.
04: Completa la configurazione di rete (ad es., VNet o accesso pubblico) e distribuisci.
Deployment single server
Il modello single server è pensato per la semplicità e la configurazione rapida.
Offre backup automatici, tuning di base delle prestazioni e un overhead di configurazione minimo.
È ideale per sviluppo, test o carichi di lavoro di produzione più piccoli.
Tier disponibili
Alcuni dei tier disponibili includono:
Come creare un single server
01: Nell'Azure Portal, vai su Azure Database for PostgreSQL servers e clicca su "create".
02: Seleziona un livello di prezzo in base ai requisiti del carico di lavoro.
Fai riferimento alla pagina prezzi di Azure per le informazioni più aggiornate su tier e prezzi disponibili.
03: Imposta le credenziali admin, configura le regole del firewall e distribuisci.
> Se sei alle prime armi con PostgreSQL, la guida per principianti a PostgreSQL è un ottimo punto di partenza per lavorare con i database prima di distribuirli nel cloud.
Estensione Hyperscale (Citus)
Il modello di deployment Hyperscale (Citus) è progettato per casi d'uso PostgreSQL distribuiti.
Trasforma un database a singolo nodo in un cluster scalabile orizzontalmente shardando i dati tra i worker node e coordinando le query in modo efficiente.
Alcuni casi d'uso chiave includono:
Come creare e distribuire una tabella
01: Crea un gruppo di server Hyperscale (Citus) nell'Azure Portal. Questo imposta un cluster PostgreSQL distribuito utilizzando l'estensione Citus.
02: Connettiti al nodo coordinator usando uno strumento come psql o Azure Data Studio.
Assicurati di connetterti al nodo coordinator (non a un worker), poiché i comandi per le tabelle distribuite devono essere eseguiti dal coordinator.
03: Crea la tabella in SQL (se non esiste già):
04: Distribuisci la tabella usando:
Sostituisci 'your_table_name' con il nome reale della tua tabella e 'distribution_column' con una colonna con buona cardinalità e spesso usata nelle query.
Scegliere il modello di deployment giusto
La tabella seguente riassume i modelli di deployment consigliati in base a casi d'uso comuni.
La scelta del modello di deployment dipende dalle caratteristiche del carico di lavoro della tua applicazione, dalle esigenze di alta disponibilità e dalle aspettative di prestazioni.
> Se non sei sicuro che PostgreSQL sia la scelta giusta per il tuo progetto, dai un'occhiata a PostgreSQL vs. MySQL: scegliere il database giusto per il tuo progetto e SQLite vs PostgreSQL: un confronto dettagliato.