Uso di endpoint privati per le app di servizio app
Nota
A partire dal 1° giugno 2024, le app appena create servizio app possono generare un nome host predefinito univoco che usa la convenzione <app-name>-<random-hash>.<region>.azurewebsites.net
di denominazione . I nomi delle app esistenti rimangono invariati. Ad esempio:
myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Per altre informazioni, vedere Nome host predefinito univoco per servizio app risorsa.
Importante
Gli endpoint privati sono disponibili per le app Windows e Linux, in contenitori o meno, ospitate in questi piani di servizio app: Basic, Standard, PremiumV2, PremiumV3, IsolatedV2, Functions Premium (talvolta denominato piano Elastic Premium).
È possibile usare un endpoint privato per le app servizio app. L'endpoint privato consente ai client che si trovano nella rete privata di accedere in modo sicuro all'app tramite collegamento privato di Azure. L'endpoint privato utilizza un indirizzo IP dello spazio di indirizzi della rete virtuale Azure. Il traffico di rete tra un client nella rete privata e l'app attraversa la rete virtuale e un collegamento privato nella rete backbone Microsoft. Questa configurazione elimina l'esposizione dalla rete Internet pubblica.
L'uso di un endpoint privato per l'app consente di:
- Proteggere l'app configurando l'endpoint privato e disabilitare l'accesso alla rete pubblica per eliminare l'esposizione pubblica.
- Connettetevi in modo sicuro alla vostra applicazione da reti locali che si connettono alla rete virtuale utilizzando una VPN o un peering privato ExpressRoute.
- Evitare l'esfiltrazione di dati dalla rete privata.
Panoramica dei concetti
Un endpoint privato è un'interfaccia di rete (NIC) speciale per l'app del servizio app di Azure in una subnet nella rete virtuale. Quando si crea un endpoint privato per la propria applicazione, questo fornisce una connettività sicura tra i client della rete privata e l'applicazione. All'endpoint privato viene assegnato un indirizzo IP dall'intervallo di indirizzi IP della rete virtuale. La connessione tra l'endpoint privato e l'app usa un collegamento privato sicuro. L'endpoint privato viene usato solo per il traffico in ingresso verso l'app. Il traffico in uscita non usa questo endpoint privato. È possibile inserire il traffico in uscita verso la rete in una subnet diversa tramite la funzionalità di integrazione della rete virtuale.
Ogni slot di un'app viene configurato separatamente. È possibile usare fino a 100 endpoint privati per slot. Non è possibile condividere un endpoint privato tra slot. Il nome della sottorisorsa di uno slot è sites-<slot-name>
.
La subnet in cui si collega l'endpoint privato può avere altre risorse. Non è necessaria una subnet vuota dedicata. È anche possibile distribuire l'endpoint privato in una regione diversa da quella dell'applicazione.
Nota
La funzionalità di integrazione della rete virtuale non può usare la stessa subnet dell'endpoint privato.
Dal punto di vista della sicurezza:
- L'endpoint privato e l'accesso pubblico possono coesistere in un'app. Per altre informazioni, vedere questa panoramica delle restrizioni di accesso.
- Per garantire l'isolamento, quando si abilitano gli endpoint privati per l'app, assicurarsi che l'accesso alla rete pubblica sia disabilitato.
- È possibile abilitare più endpoint privati in altre reti virtuali e subnet, inclusa la rete virtuale in altre aree.
- Le regole di restrizioni di accesso dell'app non vengono valutate per il traffico attraverso l'endpoint privato.
- È possibile eliminare il rischio di esfiltrazione di dati dalla rete virtuale rimuovendo tutte le regole del gruppo di sicurezza di rete (NSG) in cui la destinazione è il tag Internet o i servizi di Azure.
Nei log Web HTTP dell'applicazione, si trova l'IP di origine del client. Questa funzione è implementata utilizzando il protocollo TCP Proxy, che inoltra la proprietà IP del client all'applicazione. Per altre informazioni, vedere Ottenere informazioni sulla connessione usando il protocollo proxy TCP v2.
DNS
Quando si usa l'endpoint privato per le app del servizio app, l'URL richiesto deve corrispondere al nome dell'app. Per impostazione predefinita, <app-name>.azurewebsites.net
. Quando si usa il nome host predefinito univoco, il nome dell'app ha il formato <app-name>-<random-hash>.<region>.azurewebsites.net
. Negli esempi seguenti mywebapp può anche rappresentare il nome host univoco con regionalizzazione completo.
Per impostazione predefinita, senza un endpoint privato, il nome pubblico dell'app Web è un nome canonico per il cluster. Ad esempio, la risoluzione dei nomi è:
Nome | Type | valore |
---|---|---|
mywebapp.azurewebsites.net | CNAME | clustername.azurewebsites.windows.net |
clustername.azurewebsites.windows.net | CNAME | cloudservicename.cloudapp.net |
cloudservicename.cloudapp.net | Un | 192.0.2.13 |
Quando si distribuisce un endpoint privato, l'approccio aggiorna la voce DNS in modo che punti al nome canonico: mywebapp.privatelink.azurewebsites.net
.
Ad esempio, la risoluzione dei nomi è:
Nome | Type | Valore | Commento |
---|---|---|---|
mywebapp.azurewebsites.net | CNAME | mywebapp.privatelink.azurewebsites.net | |
mywebapp.privatelink.azurewebsites.net | CNAME | clustername.azurewebsites.windows.net | |
clustername.azurewebsites.windows.net | CNAME | cloudservicename.cloudapp.net | |
cloudservicename.cloudapp.net | Un | 192.0.2.13 | <--Questo indirizzo IP pubblico non è l'endpoint privato, viene visualizzato un errore 403 |
È necessario configurare un server DNS privato o una zona privata DNS di Azure. Per i test, è possibile modificare la voce host del computer di test.
La zona DNS che è necessario creare è: privatelink.azurewebsites.net
. Registrare il record per l'app con un record A e l'indirizzo IP dell'endpoint privato.
Ad esempio, la risoluzione dei nomi è:
Nome | Type | Valore | Commento |
---|---|---|---|
mywebapp.azurewebsites.net | CNAME | mywebapp.privatelink.azurewebsites.net | <--Azure crea questa voce CNAME in DNS pubblico di Azure per puntare l'indirizzo dell'app all'indirizzo dell'endpoint privato |
mywebapp.privatelink.azurewebsites.net | Una | 10.10.10.8 | <--Si gestisce questa voce nel sistema DNS in modo che punti all'indirizzo IP dell'endpoint privato |
Dopo questa configurazione DNS, è possibile raggiungere l'app privatamente con il nome predefinito mywebapp.azurewebsites.net. È necessario usare questo nome, perché il certificato predefinito viene emesso per *.azurewebsites.net
.
Se è necessario usare un nome DNS personalizzato, aggiungere il nome personalizzato nell'app ed è necessario convalidare il nome personalizzato come qualsiasi nome personalizzato, usando la risoluzione DNS pubblica. Per altre informazioni, vedere Convalida DNS personalizzata.
Per la console Kudu o l'API REST Kudu (distribuzione con agenti self-hosted di Azure DevOps Services), ad esempio, è necessario creare due record che puntano all'INDIRIZZO IP dell'endpoint privato nella zona privata DNS di Azure o nel server DNS personalizzato. Il primo è per l'app e il secondo è per SCM dell'app.
Nome | Type | Valore |
---|---|---|
mywebapp.privatelink.azurewebsites.net | Una | PrivateEndpointIP |
mywebapp.scm.privatelink.azurewebsites.net | Una | PrivateEndpointIP |
Considerazioni speciali sull'ambiente del servizio app v3
Per abilitare l'endpoint privato per le app ospitate in un piano IsolatedV2 (ambiente del servizio app v3), abilitare il supporto dell'endpoint privato a livello di ambiente del servizio app. È possibile attivare la funzionalità tramite il portale di Azure nel riquadro di configurazione dell'ambiente del servizio app o tramite l'interfaccia della riga di comando seguente:
az appservice ase update --name myasename --allow-new-private-endpoint-connections true
Requisiti specifici
Se la rete virtuale si trova in una sottoscrizione diversa rispetto all'app, assicurarsi che la sottoscrizione con la rete virtuale sia registrata per il Microsoft.Web
provider di risorse. Per registrare in modo esplicito il provider, vedere Registrare il provider di risorse. Il provider viene registrato automaticamente quando si crea la prima app Web in una sottoscrizione.
Prezzi
Per informazioni dettagliate sui prezzi, vedere Prezzi di Collegamento privato di Azure.
Limiti
- Quando si usa la funzione di Azure nel piano Elastic Premium con un endpoint privato, per eseguire la funzione in portale di Azure, è necessario disporre dell'accesso diretto alla rete. In caso contrario, viene visualizzato un errore HTTP 403. Il browser deve essere in grado di raggiungere l'endpoint privato per eseguire la funzione dal portale di Azure.
- È possibile connettere fino a 100 endpoint privati a una determinata app.
- La funzionalità di debug remoto non è disponibile tramite l'endpoint privato. È consigliabile distribuire il codice in uno slot e eseguirne il debug remoto.
- L'accesso FTP viene fornito tramite l'indirizzo IP pubblico in ingresso. Un endpoint privato non supporta l'accesso FTP all'app.
- TLS basato su IP non è supportato con endpoint privati.
- Le app configurate con endpoint privati non possono ricevere traffico pubblico proveniente da subnet con
Microsoft.Web
endpoint di servizio abilitato e non possono usare regole di restrizione degli accessi in base all'endpoint di servizio. - La denominazione dell'endpoint privato deve seguire le regole definite per le risorse di tipo
Microsoft.Network/privateEndpoints
. Per altre informazioni, vedere Regole di denominazione e restrizioni.
Per informazioni aggiornate sulle limitazioni, vedere Limitazioni.
Contenuto correlato
- Per distribuire l'endpoint privato per l'app tramite il portale, vedere Come connettersi privatamente a un'app con il portale di Azure.
- Per distribuire un endpoint privato per l'app usando l'interfaccia della riga di comando di Azure, vedere Come connettersi privatamente a un'app con l'interfaccia della riga di comando di Azure.
- Per distribuire un endpoint privato per l'app usando PowerShell, vedere Come connettersi privatamente a un'app con PowerShell.
- Per distribuire un endpoint privato per l'app usando il modello di Azure, vedere Come connettersi privatamente a un'app con un modello di Azure.
- Per un esempio end-to-end di come connettere un'app front-end a un'app back-end protetta con l'integrazione della rete virtuale e l'endpoint privato con il modello di Resource Manager, vedere questa guida introduttiva.
- Per un esempio end-to-end di come connettere un'app front-end a un'app back-end protetta con l'integrazione della rete virtuale e l'endpoint privato con terraform, vedere questo esempio.