Condividi tramite


Linee guida per l'uso di Database di Azure per PostgreSQL in una soluzione multi-tenant

Molte soluzioni multi-tenant in Azure usano il sistema di gestione di database relazionali open source Database di Azure per PostgreSQL. Questo articolo descrive le funzionalità di Database di Azure per PostgreSQL utili quando si lavora con sistemi multi-tenant. L'articolo include anche collegamenti a linee guida ed esempi per l'uso di Database di Azure per PostgreSQL in una soluzione multi-tenant.

Modalità di distribuzione

Le modalità di distribuzione seguenti sono disponibili per Database di Azure per PostgreSQL e sono adatte per l'uso con applicazioni multi-tenant:

  • Il server flessibile di Database di Azure per PostgreSQL è una buona scelta per la maggior parte delle distribuzioni multi-tenant che non richiedono la scalabilità elevata fornita da Azure Cosmos DB per PostgreSQL.

  • Il server flessibile di Database di Azure per PostgreSQL con cluster elastici (anteprima) offre scalabilità orizzontale all'interno di un servizio gestito. È adatto per le applicazioni multi-tenant che devono essere ridimensionate da pochi tenant a un numero elevato di tenant. Questa funzionalità è in anteprima e non è consigliata per l'uso in produzione. Tuttavia, è possibile iniziare a valutarlo per l'implementazione futura.

  • Azure Cosmos DB per PostgreSQL è un servizio di database gestito da Azure progettato per soluzioni che richiedono un livello elevato di scalabilità, ad esempio applicazioni multi-tenant. Questo servizio fa parte della famiglia di prodotti Azure Cosmos DB.

Nota

Il server singolo di Database di Azure per PostgreSQL è nel percorso di ritiro ed è pianificato per il ritiro entro il 28 marzo 2025. Non è consigliabile per i nuovi carichi di lavoro multi-tenant.

Funzionalità di Database di Azure per PostgreSQL che supportano la multi-tenancy

Quando si usa Database di Azure per PostgreSQL per compilare un'applicazione multi-tenant, le funzionalità seguenti possono migliorare la soluzione.

Nota

Alcune funzionalità sono disponibili solo in modalità di distribuzione specifiche. Le indicazioni seguenti descrivono quali funzionalità sono disponibili.

Sicurezza a livello di riga

La sicurezza a livello di riga è utile per applicare l'isolamento a livello di tenant quando si usano tabelle condivise. In PostgreSQL si implementa la sicurezza a livello di riga applicando i criteri di sicurezza delle righe alle tabelle per limitare l'accesso alle righe in base al tenant.

L'implementazione della sicurezza a livello di riga in una tabella potrebbe influire sulle prestazioni. Potrebbe essere necessario creare altri indici nelle tabelle con sicurezza a livello di riga abilitata per garantire che le prestazioni non siano interessate. Quando si usa la sicurezza a livello di riga, è importante usare tecniche di test delle prestazioni per verificare che il carico di lavoro soddisfi i requisiti di prestazioni di base.

Per altre informazioni, vedere Proteggere il server di Database di Azure per PostgreSQL.

Ridimensionamento orizzontale con partizionamento orizzontale

Il modello di partizionamento orizzontale consente di ridimensionare il carico di lavoro tra più database o server di database.

Le soluzioni che richiedono un livello elevato di scalabilità possono usare Azure Cosmos DB per PostgreSQL. Questa modalità di distribuzione consente il partizionamento orizzontale dei tenant tra più server o nodi. Usare le tabelle distribuite nei database multi-tenant per assicurarsi che tutti i dati per un tenant vengano archiviati nello stesso nodo. Questo approccio migliora le prestazioni delle query.

Nota

Nell'ottobre 2022, Database di Azure per PostgreSQL Hyperscale (Citus) è stato rinominato come Azure Cosmos DB per PostgreSQL e spostato nella famiglia di prodotti Azure Cosmos DB.

Per altre informazioni, vedere gli articoli seguenti:

Cluster elastici (anteprima)

I cluster elastici sono una funzionalità del server flessibile di Database di Azure per PostgreSQL. Offrono funzionalità di scalabilità orizzontale all'interno di un singolo servizio gestito. Questa opzione di distribuzione usa la funzionalità di tabella distribuita per carichi di lavoro multi-tenant che richiedono funzionalità di scalabilità orizzontale.

Nelle soluzioni multi-tenant i cluster elastici consentono il partizionamento orizzontale dei dati del tenant tra più nodi. È possibile distribuire le tabelle in base all'ID tenant per assicurarsi che i dati del tenant si trovino in nodi specifici. Questo approccio può migliorare le prestazioni delle query per le query specifiche del tenant.

Nota

I cluster elastici sono in anteprima e sono disponibili solo nel server flessibile di Database di Azure per PostgreSQL.

Per altre informazioni, vedere Cluster elastici nel server flessibile di Database di Azure per PostgreSQL (anteprima).

Pool di connessioni

Postgres usa un modello basato su processo per le connessioni. Questo modello rende inefficiente la gestione di un numero elevato di connessioni inattive. Alcune architetture multi-tenant richiedono molte connessioni attive, che influiscono negativamente sulle prestazioni del server Postgres.

Il pool di connessioni tramite PgBouncer viene installato per impostazione predefinita nel server flessibile di Database di Azure per PostgreSQL.

Per altre informazioni, vedere gli articoli seguenti:

Autenticazione Microsoft Entra

Il server flessibile di Database di Azure per PostgreSQL supporta l'autenticazione della connessione tramite Microsoft Entra ID. Questa funzionalità consente ai carichi di lavoro dell'applicazione in un ambiente multi-tenant di eseguire l'autenticazione nel database usando un'entità servizio o un'identità gestita specifica del tenant. L'accesso al database può essere limitato a un singolo tenant. Combinando l'autenticazione di Microsoft Entra ID con i criteri di sicurezza delle righe specifici del tenant, è possibile ridurre il rischio che un'applicazione acceda ai dati di un altro tenant dall'interno di un database multi-tenant.

Per altre informazioni, vedere gli articoli seguenti:

Confidential computing di Azure (anteprima)

Il server flessibile di Database di Azure per PostgreSQL supporta il confidential computing di Azure tramite ambienti di esecuzione attendibili (TEE), che forniscono protezione basata su hardware per i dati in uso. Questa funzionalità protegge i dati del tenant da accessi non autorizzati dal sistema operativo, dall'hypervisor o da altre applicazioni.

Per le soluzioni multi-tenant che gestiscono dati sensibili, il confidential computing fornisce protezione dei dati a livello di hardware durante l'elaborazione. Usare il confidential computing quando i tenant hanno requisiti rigorosi di protezione dei dati o requisiti di conformità alle normative o quando è necessario assicurarsi che il provider di applicazioni non possa accedere ai dati del tenant.

Nota

Il confidential computing è attualmente in anteprima e richiede SKU di macchine virtuali specifici.

Per altre informazioni, vedere Confidential computing di Azure per Database di Azure per PostgreSQL (anteprima).

Crittografia

I dati archiviati nel server flessibile di Database di Azure per PostgreSQL vengono crittografati inattivi per impostazione predefinita usando chiavi gestite da Microsoft, ma è anche possibile usare chiavi gestite dal cliente per consentire ai tenant di specificare le proprie chiavi di crittografia.

Quando si usano i cmk, è possibile fornire chiavi di crittografia personalizzate archiviate in Azure Key Vault. Negli ambienti multi-tenant questo approccio consente di usare chiavi di crittografia diverse per tenant diversi, anche quando i dati vengono archiviati nello stesso server di database. Questa funzionalità offre anche ai tenant il controllo sulle proprie chiavi di crittografia. Se un tenant sceglie di disattivare il proprio account, l'eliminazione della chiave associata garantisce che i dati non siano più accessibili.

Il server flessibile di Database di Azure per PostgreSQL supporta gli aggiornamenti automatici delle versioni delle chiavi per i cmk. Questa funzionalità viene aggiornata automaticamente alle nuove versioni delle chiavi dopo la rotazione in Key Vault e non richiede la gestione manuale delle versioni delle chiavi. Negli ambienti multi-tenant in cui la conformità alle normative richiede una rotazione regolare delle chiavi, questa automazione riduce le attività operative manuali e mantiene la protezione dei dati senza interruzioni del servizio.

Per altre informazioni, vedere gli articoli seguenti:

Collaboratori

Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.

Autore principale:

Altri contributori:

  • John Downs | Principal Software Engineer, Azure Patterns & Practices
  • Arsen Vladimirintune | Principal Customer Engineer, FastTrack per Azure
  • Paul Burpo | Principal Customer Engineer, FastTrack per ISV di Azure
  • Assaf Fraenkel | Ingegnere Senior/Architetto Dati, Azure FastTrack per Fornitori di Software Indipendenti e nuove imprese

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.