Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Opzioni di distribuzione
Le opzioni seguenti sono disponibili per Database di Azure per PostgreSQL e sono adatte per l'uso con applicazioni multi-tenant:
Database di Azure per PostgreSQL è una scelta ottimale per la maggior parte delle distribuzioni multi-tenant che non richiedono la scalabilità elevata fornita da Azure Cosmos DB per PostgreSQL.
Database di Azure per PostgreSQL elastic clusters offre scalabilità orizzontale all'interno di un servizio gestito. È adatto alle applicazioni multitenant che devono scalare da pochi a molti tenant.
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.
Important
Azure Cosmos DB per PostgreSQL si trova in un percorso di ritiro e non è più consigliato per i nuovi progetti.
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 opzioni 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 ulteriori indici nelle tabelle con sicurezza a livello di riga abilitata per garantire che le prestazioni non siano compromesse. 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 sulla sicurezza a livello di riga, vedere Gestione degli accessi per Database di Azure per PostgreSQL.
Contesto del tenant per la sicurezza a livello di riga
I criteri di sicurezza a livello di riga richiedono l'accesso all'identificatore del tenant corrente. Database di Azure per PostgreSQL fornisce due estensioni che consentono di gestire il contesto del tenant:
- session_variable: fornisce variabili con ambito sessione che è possibile usare per archiviare e recuperare l'identificatore del tenant all'interno di una sessione. Utilizza queste variabili nei criteri di sicurezza a livello di riga.
- login_hook: esegue una funzione al momento dell'accesso. Usare questa estensione per impostare automaticamente il contesto del tenant quando viene stabilita una connessione.
Per altre informazioni, vedere Estensioni e versioni di estensione per 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.
Per altre informazioni, vedere gli articoli seguenti:
- Progettare un database multi-tenant usando Azure Cosmos DB per PostgreSQL
- Tabelle con distribuzione
- Scegliere le colonne di distribuzione
- Usare Citus per applicazioni multi-tenant
Cluster elastici
I cluster elastici sono una funzionalità 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. I cluster elastici supportano due modelli di partizionamento orizzontale:
- Partizionamento orizzontale basato su righe: è possibile distribuire tabelle in base all'ID tenant per assicurarsi che i dati del tenant si collocano su nodi specifici. Questo approccio può migliorare le prestazioni delle query per le query specifiche del tenant, ma richiede che le query includano la colonna di distribuzione.
- Partizionamento orizzontale basato su schema: è possibile isolare i tenant usando uno schema separato per ogni tenant. Questo approccio è ideale per gli ISV che distribuiscono applicazioni che non possono subire modifiche alle query per supportare il partizionamento orizzontale basato su righe. Lo sharding basato su schema è particolarmente adatto per carichi di lavoro che riguardano tra 1 e 10.000 tenant.
Per altre informazioni, vedere gli articoli seguenti:
- cluster Elastic in Database di Azure per PostgreSQL
- Modelli di partizionamento orizzontale per cluster elastici
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 in Database di Azure per PostgreSQL.
Per altre informazioni, vedere gli articoli seguenti:
- PgBouncer nel Database di Azure per PostgreSQL
- Pooling delle connessioni in Azure Cosmos DB per PostgreSQL
- Procedura per installare e configurare il proxy del pool di connessioni PgBouncer con Database di Azure per PostgreSQL
Autenticazione Microsoft Entra
Database di Azure per PostgreSQL supporta l'autenticazione della connessione tramite Microsoft Entra ID. Questa funzionalità consente ai carichi di lavoro delle applicazioni in un ambiente multi-tenant di autenticarsi al 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:
- Autenticazione Microsoft Entra nel database di Azure per PostgreSQL
- Connettersi utilizzando l'identità gestita ad Azure per il database di PostgreSQL
Computing riservato di Azure
Database di Azure per PostgreSQL supporta Azure confidential computing 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.
Per altre informazioni, vedere Azure confidential computing per Database di Azure per PostgreSQL.
Crittografia
I dati archiviati in 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.
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.
Collaboratori
Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.
Autore principale:
- Daniel Scott-Raynsford | Partner Solution Architect, Data & AI
Altri contributori:
John Downs | Principal Software Engineer, Azure Patterns & Pratiche- 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.