Linee guida per l'uso di collegamento privato di Azure in una soluzione multi-tenant

collegamento privato di Azure fornisce indirizzi IP privati per i servizi della piattaforma Azure e per le proprie applicazioni ospitate in macchine virtuali Azure. È possibile usare collegamento privato per abilitare la connettività privata dagli ambienti di Azure dei tenant. I tenant possono anche usare collegamento privato per accedere alla soluzione dagli ambienti locali, quando sono connessi tramite gateway di rete privata virtuale (Gateway VPN) o ExpressRoute.

collegamento privato di Azure viene usato da molti provider SaaS di grandi dimensioni, tra cui Snowflake, Confluent Cloud e MongoDB Atlas.

In questo articolo viene illustrato come configurare collegamento privato per una soluzione multi-tenant ospitata Azure.

Considerazioni chiave

Selezione del servizio

Quando si usa collegamento privato, è importante considerare il servizio a cui si vuole consentire la connettività in ingresso.

Servizio collegamento privato di Azure viene usato con le macchine virtuali dietro un bilanciamento del carico interno di Azure.

È anche possibile usare collegamento privato con altri servizi di Azure. Questi servizi includono piattaforme di hosting di applicazioni come Servizio app di Azure. Includono anche gateway applicazione di Azure o Gestione API di Azure, ovvero gateway di rete e API.

La piattaforma dell'applicazione usata determina molti aspetti della configurazione collegamento privato e i limiti che si applicano. Inoltre, alcuni servizi non supportano collegamento privato per il traffico in ingresso. Esaminare la documentazione relativa ai servizi Azure usati per comprendere il supporto per collegamento privato.

Gli spazi degli indirizzi IP sovrapposti

collegamento privato offre potenti funzionalità per le soluzioni multi-tenant, in cui i tenant possono accedere al servizio tramite spazi indirizzi privati.

I tenant diversi usano spesso gli stessi spazi di indirizzi IP privati o sovrapposti. Ad esempio, la soluzione multi-tenant potrebbe usare lo spazio indirizzi IP di 10.1.0.0/16. Si supponga che il tenant A usi la propria rete locale con lo stesso spazio indirizzi IP e che in modo casuale anche il tenant B usi lo stesso spazio indirizzi IP. Non è possibile connettersi direttamente o eseguire il peering tra le reti perché gli intervalli di indirizzi IP si sovrappongono.

Quando si utilizza collegamento privato per abilitare la connettività di ciascun tenant alla soluzione multi-tenant, il traffico di ogni tenant è automaticamente soggetto alla conversione degli indirizzi di rete (NAT). Ogni tenant può usare un indirizzo IP privato all'interno della propria rete e il traffico passa alla soluzione multi-tenant in modo trasparente. collegamento privato esegue NAT sul traffico, anche quando i tenant e il provider di servizi usano intervalli di indirizzi IP sovrapposti:

Diagramma che mostra la connettività tra due tenant e un servizio multitenant, che utilizzano tutti lo stesso spazio di indirizzi IP.

Quando il traffico arriva nella soluzione multi-tenant, è già stato convertito. Ciò significa che il traffico sembra provenire dall'interno dello spazio di indirizzi IP della rete virtuale del servizio multi-tenant. Alcuni servizi collegamento privato forniscono metadati per ogni socket tramite la funzionalità TCP Proxy Protocol v2. Questa funzionalità consente al componente del carico di lavoro di conoscere la connessione dell'endpoint privato tramite la quale è arrivata la richiesta e di conseguenza determinare il tenant che ha inviato la richiesta. Fornisce anche l'indirizzo IP originale dalla rete di origine. Tuttavia, la disponibilità di questi metadati dipende dal servizio Azure a cui ci si connette.

Processo di provisioning

Quando si lavora con clienti o tenant diversi, collegamento privato in genere richiede entrambe le parti di eseguire azioni esplicite per effettuare il provisioning e stabilire la connessione. Lo stesso processo generale si applica se un tenant si connette a un provider di servizi o viceversa. Possono essere coinvolte più fasi, ognuna delle quali richiede autorizzazioni distinte:

  • Creare l'endpoint privato nella rete virtuale di destinazione. Questa azione deve essere eseguita da un utente o un'entità con le autorizzazioni necessarie.
  • Stabilire una connessione all'endpoint privato. Questa azione richiede anche le autorizzazioni.
  • Approvare la connessione. Per altre informazioni sulle approvazioni delle connessioni in una soluzione multi-tenant, vedere Approvazioni delle connessioni.

Se si prevede un numero elevato di endpoint o connessioni private, è consigliabile creare strumenti self-service o automatizzati per effettuare il provisioning e approvare le connessioni.

Limiti

Considerare attentamente il numero di endpoint privati che è possibile creare, in base all'architettura della soluzione. Se si usa una piattaforma applicativa PaaS (Platform as a Service), è importante tenere presente il numero massimo di endpoint privati che una singola risorsa può supportare. Se si eseguono macchine virtuali, è possibile collegare un'istanza del servizio collegamento privato a un Azure Load Balancer. In questa configurazione è in genere possibile connettere un numero maggiore di endpoint privati, ma i limiti sono ancora applicabili. Questi limiti possono determinare il numero di tenant che è possibile connettere alle risorse usando collegamento privato. Esaminare i limiti, le quote e i vincoli sull'abbonamento Azure e sul servizio per comprendere i limiti al numero di endpoint e connessioni.

Inoltre, alcuni servizi richiedono una configurazione di rete specializzata per l'uso di collegamento privato. Ad esempio, se si usa collegamento privato con gateway applicazione di Azure, è necessario effettuare il provisioning di una subnet dedicata, oltre alla subnet standard per la risorsa Application Gateway.

Testare attentamente la soluzione, inclusa la configurazione di distribuzione e diagnostica, con la configurazione collegamento privato abilitata. Quando gli endpoint privati sono abilitati in alcuni servizi di Azure, il traffico Internet pubblico viene bloccato. Questo comportamento può richiedere la modifica dei processi di distribuzione e gestione.

È possibile scegliere di distribuire la soluzione sia con connessione Internet che per essere esposta tramite endpoint privati. Ad esempio, alcuni tenant potrebbero richiedere connettività privata, mentre altri si basano sulla connettività Internet pubblica. Prendere in considerazione la topologia di rete complessiva e i percorsi che seguono il traffico di ogni tenant.

Quando la soluzione si basa su macchine virtuali dietro un servizio di bilanciamento del carico, è possibile esporre l'endpoint tramite il servizio collegamento privato. In questo caso, è probabile che un web application firewall e il routing delle applicazioni facciano già parte del carico di lavoro basato su macchine virtuali.

Molti servizi PaaS di Azure supportano collegamento privato per la connettività in ingresso, anche tra diverse sottoscrizioni di Azure e tenant di Microsoft Entra. È possibile usare le funzionalità di collegamento privato del servizio per esporre l'endpoint.

Quando si usano altri servizi con connessione Internet, ad esempio Frontdoor di Azure, è importante valutare se supportano collegamento privato per il traffico in ingresso. In caso contrario, considerare il modo in cui il traffico passa attraverso ogni percorso della soluzione.

Ad esempio, supponiamo di creare un'applicazione rivolta a Internet che viene eseguita in un set di scalabilità di macchine virtuali. Si utilizza Frontdoor di Azure, incluso il web application firewall (WAF), per la sicurezza e l'accelerazione del traffico e si configura Front Door per inviare il traffico attraverso un endpoint privato al servizio back-end (origine). Il tenant A si connette alla soluzione usando un endpoint pubblico e il tenant B si connette usando un endpoint privato. Poiché Frontdoor non supporta collegamento privato per le connessioni in ingresso, il traffico del tenant B ignora Frontdoor e il relativo WAF:

Diagramma che mostra le richieste provenienti da Frontdoor di Azure e anche tramite un endpoint privato, che ignora Frontdoor.

Modelli di isolamento

collegamento privato è progettato per supportare scenari in cui un singolo livello applicazione può essere usato da più client separati, ad esempio i tenant. Quando si considera l'isolamento per collegamento privato, il problema principale riguarda il numero di risorse da distribuire per supportare i requisiti. I modelli di isolamento tenant che è possibile usare per collegamento privato dipendono dal servizio usato.

Se usi il servizio collegamento privato con macchine virtuali dietro a un bilanciatore del carico di Azure, possono essere presi in considerazione diversi modelli di isolamento.

Considerazione Servizio di collegamento privato condiviso e servizio di bilanciamento del carico condiviso Servizio dedicato collegamento privato e servizio di bilanciamento del carico dedicato Servizio di collegamento privato dedicato e servizio di bilanciamento del carico condiviso
Complessità della distribuzione Basso Medio-alto, a seconda del numero di inquilini Medio-alto, a seconda del numero di inquilini
Complessità operativa Basso Medio-alto, a seconda del numero di risorse Medio-alto, a seconda del numero di risorse
Limiti da considerare Numero di endpoint privati nello stesso servizio collegamento privato Numero di servizi collegamento privato per sottoscrizione Numero di servizi di collegamento privato per bilanciatore del carico
Scenario di esempio Soluzione multi-tenant di grandi dimensioni con livello applicazione condiviso Timbrature di distribuzione separate per ogni tenant Livello applicativo condiviso in un'unica installazione, con un numero elevato di istanze.

In tutti e tre i modelli, il livello di isolamento e prestazioni dei dati dipende dagli altri elementi della soluzione e la distribuzione del servizio collegamento privato non influisce materialmente su questi fattori.

È possibile valutare la possibilità di distribuire un servizio di collegamento privato condiviso, connesso a un servizio di bilanciamento del carico. Ogni tenant può creare un endpoint privato e usarlo per connettersi alla soluzione.

Una singola istanza del servizio collegamento privato supporta un numero elevato di endpoint privati. Se si esaurisce il limite, è possibile distribuire più istanze del servizio collegamento privato, anche se esistono anche limiti al numero di servizi collegamento privato che è possibile distribuire in un singolo servizio di bilanciamento del carico. Se prevedi che ti avvicinerai a questi limiti, è consigliabile usare un approccio basato su stampi di distribuzione e distribuire bilanciatori di carico condivisi e istanze del servizio collegamento privato in ogni stampo.

È possibile distribuire un servizio di collegamento privato dedicato e un servizio di bilanciamento del carico dedicato per ogni tenant. Questo approccio ha senso quando si dispone di un set dedicato di macchine virtuali per ogni tenant, ad esempio quando i tenant hanno requisiti di conformità rigorosi.

È anche possibile distribuire istanze del servizio dedicate collegamento privato per ogni tenant, con un servizio di bilanciamento del carico condiviso. Tuttavia, è improbabile che questo modello fornisca molto vantaggio. Inoltre, poiché esiste un limite al numero di servizi collegamento privato che è possibile distribuire in un singolo servizio di bilanciamento del carico, è probabile che questo modello non venga ridimensionato oltre una piccola soluzione multi-tenant.

Più comunemente, è possibile distribuire più servizi di collegamento privato condivisi. Questo approccio consente di espandere il numero di endpoint privati che la soluzione può supportare in un servizio di bilanciamento del carico condiviso.

Modelli di isolamento per i servizi PaaS Azure con endpoint privati

Quando si distribuiscono Azure servizi PaaS (Platform as a Service) e si vuole consentire ai tenant di accedere a tali servizi con endpoint privati, prendere in considerazione le funzionalità e i vincoli del servizio specifico. Valutare inoltre se le risorse del livello applicazione sono dedicate a un tenant specifico o se sono condivise tra tenant.

Se si distribuisce un set dedicato di risorse del livello applicazione per ogni tenant, è probabile che sia possibile distribuire un endpoint privato per tale tenant da usare per accedere alle risorse. È improbabile che si esaurisca qualsiasi limite di servizio correlato a collegamento privato, perché ogni tenant ha risorse dedicate a loro.

Quando si condividono le risorse del livello applicazione tra tenant, è consigliabile distribuire un endpoint privato per ogni tenant. Esistono limiti al numero di endpoint privati che possono essere collegati a una singola risorsa e questi limiti sono diversi per ogni servizio.

collegamento privato include diverse funzionalità utili in un ambiente multi-tenant. Tuttavia, le funzionalità specifiche disponibili dipendono dal servizio usato. Il servizio collegamento privato di Azure di base, per le macchine virtuali e i servizi di bilanciamento del carico, supporta tutte le funzionalità descritte nelle sezioni seguenti. Altri servizi con supporto collegamento privato possono fornire solo un subset di queste funzionalità.

Alias del servizio

Quando un tenant configura l'accesso al servizio usando collegamento privato, deve essere in grado di identificare il servizio in modo che Azure possa stabilire la connessione.

Quando si crea un servizio collegamento privato di Azure, Azure genera un alias che è possibile fornire ai tenant. Usando questo alias, è possibile evitare di divulgare gli ID sottoscrizione Azure e i nomi dei gruppi di risorse.

Per altri servizi di Azure che supportano collegamento privato, vedere la documentazione del servizio per individuare i modi supportati per identificare la risorsa di destinazione. Ad esempio, la configurazione collegamento privato di Application Gateway non espone un alias, quindi i tenant devono farvi riferimento tramite il relativo URI della risorsa.

Visibilità del servizio

Il servizio collegamento privato consente di controllo della visibilità dell'endpoint privato. È possibile consentire a tutti i clienti Azure di connettersi al servizio, se conoscono l'alias o l'ID risorsa. In alternativa, è possibile limitare l'accesso solo a un set di clienti noti Azure.

È possibile specificare anche un insieme di ID di sottoscrizione *Azure* pre-approvati che sono in grado di connettersi al tuo endpoint privato. Se si sceglie di adottare questo approccio, consideri come raccogliere e autorizzare gli ID di sottoscrizione. Ad esempio, è possibile fornire un'interfaccia utente di amministrazione nell'applicazione per raccogliere l'ID sottoscrizione di un tenant. È quindi possibile riconfigurare dinamicamente l'istanza del servizio collegamento privato per pre-approvare l'ID sottoscrizione per le connessioni.

Approvazioni delle connessioni

Dopo aver richiesto una connessione tra un client (ad esempio un tenant) e un endpoint privato, collegamento privato richiede che la connessione sia approved. Finché la connessione non viene approvata, il traffico non può passare attraverso la connessione dell'endpoint privato.

Il servizio collegamento privato supporta diversi tipi di flussi di approvazione, tra cui:

  • Approvazione manuale, in cui il team approva in modo esplicito ogni connessione. Questo approccio è fattibile quando si hanno solo pochi tenant che usano il servizio tramite collegamento privato.
  • Accesso basato su API, in cui il servizio collegamento privato considera la connessione come necessaria un'approvazione manuale e l'applicazione usa l'API Update Private Endpoint Connection API, il interfaccia della riga di comando di Azure o Azure PowerShell per approvare una connessione. Questo approccio può essere utile quando si dispone di un elenco di tenant autorizzati a usare endpoint privati.
  • Auto-approval, in cui il servizio collegamento privato gestisce l'elenco degli ID sottoscrizione che devono avere le connessioni approvate automaticamente.

Per altre informazioni, vedere Controllare l'accesso al servizio.

Protocollo proxy v2

Quando si usa il servizio collegamento privato, per impostazione predefinita l'applicazione ha visibilità solo di un indirizzo IP che è stato eseguito tramite nat (Network Address Translation). Questo comportamento significa che il traffico sembra fluire dall'interno della propria rete virtuale.

In alcune situazioni, collegamento privato consente di ottenere l'accesso all'indirizzo IP client originale, nella rete virtuale del tenant. Questa funzionalità usa tcp proxy protocol v2.

Si supponga, ad esempio, che gli amministratori dei tenant debbano aggiungere restrizioni di accesso basate sugli indirizzi IP, ad esempio host 10.0.0.10 possono accedere al servizio, ma l'host 10.0.0.20 non può. Quando si usa il protocollo proxy v2, è possibile abilitare i tenant per configurare questi tipi di restrizioni di accesso nell'applicazione. Tuttavia, il codice dell'applicazione deve esaminare l'indirizzo IP originale del client e applicare le restrizioni.

Quando si usa collegamento privato di Azure servizio, è possibile usare tcp Proxy Protocol v2. Tuttavia, quando si usa collegamento privato per connettersi ad altri servizi di Azure, i socket TCP dai client potrebbero terminare all'interno dell'infrastruttura gestita dal servizio non visualizzata. Consultare la documentazione del servizio per capire se propagano i metadati del socket TCP all'applicazione.

  • collegamento privato di Azure Spiegazione e demo del servizio dal provider (ISV SaaS) e dalle prospettive consumer: video che esamina la funzionalità del servizio collegamento privato di Azure che consente provider di servizi multi-tenant (ad esempio fornitori di software indipendenti che creano prodotti SaaS). Questa soluzione consente ai consumer di accedere al servizio del provider usando indirizzi IP privati dalle reti virtuali Azure del consumer.
  • TCP Proxy Protocol v2 con collegamento privato di Azure Service- Deep Dive: un video che presenta un approfondimento sul protocollo proxy TCP v2, una funzionalità avanzata del servizio collegamento privato di Azure. È utile negli scenari multi-tenant e SaaS. Il video illustra come abilitare il protocollo proxy v2 nel servizio collegamento privato di Azure. Viene inoltre illustrato come configurare un servizio NGINX per leggere l'indirizzo IP privato di origine del client originale, anziché l'IP NAT, per accedere al servizio tramite l'endpoint privato.
  • Using NGINX Plus per decodificare il protocollo proxy TLV linkIdentifier dal servizio collegamento privato di Azure: video che illustra come usare NGINX Plus per ottenere il protocollo proxy TCP v2 TLV dal servizio collegamento privato di Azure. Il video mostra come è possibile estrarre e decodificare il numero linkIdentifier, noto anche come LINKID, della connessione all'endpoint privato. Questa soluzione è utile per i provider multi-tenant che devono identificare il tenant consumer specifico da cui è stata stabilita la connessione.
  • modello di connettività privata SaaS: una soluzione di esempio che illustra un approccio per automatizzare l'approvazione delle connessioni endpoint private usando Applicazioni gestite di Azure.

Contributori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

  • John Downs | Principal Software Engineer, Azure Schemi e Pratiche
  • Arsen Vladimirskiy | Ingegnere Principale per i Clienti, FastTrack per Azure

Altro collaboratore:

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

Passaggi successivi

Esamina gli approcci di rete per la multiutenza.