Proteggere la connettività ai servizi e ai database di Azure dal servizio app di Azure
Il servizio app potrebbe dover connettersi ad altri servizi di Azure, ad esempio un database, un'archiviazione o un'altra app. Questa panoramica consiglia diversi metodi per la connessione e quando usarli.
Oggi, la decisione per un approccio alla connettività è strettamente correlata alla gestione dei segreti. Il modello comune di utilizzo dei segreti di connessione nelle stringhe di connessione, ad esempio nome utente e password, chiave privata e così via, non è più considerato l'approccio più sicuro per la connettività. Il rischio è ancora più alto oggi perché gli attori delle minacce eseguono regolarmente una ricerca per indicizzazione dei repository GitHub pubblici per i segreti di connessione di cui è stato eseguito il commit accidentale. Per le applicazioni cloud, la gestione dei segreti migliore consiste nel non avere segreti. Quando si esegue la migrazione al servizio app di Azure, l'app potrebbe iniziare con la connettività basata su segreti e il servizio app consente di mantenere i segreti in modo sicuro. Azure può tuttavia contribuire a proteggere la connettività back-end dell'app tramite l'autenticazione di Microsoft Entra, eliminando completamente i segreti nell'app.
Metodo di connessione | Quando utilizzare |
---|---|
Connettersi con un'identità dell'app | * Si vogliono rimuovere completamente le credenziali, le chiavi o i segreti dall'applicazione. * Il servizio downstream di Azure supporta l'autenticazione di Microsoft Entra, ad esempio Microsoft Graph. * La risorsa downstream non deve conoscere l'utente connesso corrente o non richiede l'autorizzazione granulare dell'utente connesso corrente. |
Connettersi per conto dell'utente connesso | * L'app deve accedere a una risorsa downstream per conto dell'utente connesso. * Il servizio downstream di Azure supporta l'autenticazione di Microsoft Entra, ad esempio Microsoft Graph. * La risorsa downstream deve eseguire un'autorizzazione granulare dell'utente connesso corrente. |
Connettersi usando i segreti | * La risorsa downstream richiede segreti di connessione. * L'app si connette a servizi non di Azure, ad esempio un server di database locale. * Il servizio downstream di Azure non supporta ancora l'autenticazione di Microsoft Entra. |
Connettersi con un'identità dell'app
Se l'app usa già un singolo set di credenziali per accedere a un servizio di Azure downstream, è possibile convertire rapidamente la connessione per usare un'identità dell'app. Un'identità gestita da Microsoft Entra ID consente al servizio app di accedere alle risorse senza segreti ed è possibile gestirla tramite il controllo degli accessi in base al ruolo. Un'identità gestita può connettersi a qualsiasi risorsa di Azure che supporta l'autenticazione di Microsoft Entra e l'autenticazione avviene con token di breve durata.
L'immagine seguente illustra quanto segue un servizio app che si connette ad altri servizi di Azure:
- R: l'utente visita il sito Web del servizio app di Azure.
- B: Connettersi in modo sicuro dal servizio app a un altro servizio di Azure usando un'identità gestita.
- C: Connettersi in modo sicuro dal servizio app a Microsoft Graph usando un'identità gestita.
Esempi di uso dei segreti dell'applicazione per connettersi a un database:
- Esercitazione: Connettersi ai database di Azure da Servizio app senza segreti usando un'identità gestita
- Tutorial: Connessione al database SQL dal servizio app .NET senza segreti usando un'identità gestita
- Esercitazione: Connettersi a un database PostgreSQL dal servizio app Tomcat Java senza segreti usando un'identità gestita
Connettersi per conto dell'utente connesso
L'app potrebbe dover connettersi a un servizio downstream per conto dell'utente connesso. Il servizio app consente di autenticare facilmente gli utenti usando i provider di identità più comuni (vedere Autenticazione e autorizzazione in Servizio app di Azure e Funzioni di Azure). Se si usa il provider Microsoft (autenticazione di Microsoft Entra), è possibile passare l'utente connesso a qualsiasi servizio downstream. Ad esempio:
- Eseguire una query di database che restituisce dati riservati che l'utente connesso è autorizzato a leggere.
- Recuperare i dati personali o eseguire azioni come utente connesso in Microsoft Graph.
L'immagine seguente illustra un'applicazione che accede in modo sicuro a un database SQL per conto dell'utente connesso.
Di seguito sono illustrati alcuni scenari:
- Connettersi a Microsoft Graph per conto dell'utente
- Connettersi a un database SQL per conto dell'utente
- Connettersi a un'altra app del servizio app per conto dell'utente
- Scorrere l'utente connesso tramite più livelli di servizi downstream
Connettersi usando i segreti
Esistono due modi consigliati per usare i segreti nell'app: l'uso di segreti archiviati in Azure Key Vault o segreti nelle impostazioni dell'app del servizio app.
Usare segreti da Key Vault
Azure Key Vault può essere usato per archiviare in modo sicuro segreti e chiavi, monitorare l'accesso e l'uso dei segreti e semplificare l'amministrazione dei segreti dell'applicazione. Se il servizio downstream non supporta l'autenticazione di Microsoft Entra o richiede una stringa di connessione o una chiave, usare Key Vault per archiviare i segreti e connettere l'app a Key Vault con un'identità gestita e recuperare i segreti. L'app può accedere ai segreti dell'insieme di credenziali delle chiavi come riferimenti a Key Vault nelle impostazioni dell'app.
I vantaggi delle identità gestite integrate con Key Vault includono:
- L'accesso al segreto dell'insieme di credenziali delle chiavi è limitato all'app.
- I collaboratori dell'app, ad esempio gli amministratori, potrebbero avere il controllo completo delle risorse del servizio app e allo stesso tempo non hanno accesso ai segreti dell'insieme di credenziali delle chiavi.
- Non è necessaria alcuna modifica al codice se il codice dell'applicazione accede già ai segreti di connessione con le impostazioni dell'app.
- Key Vault fornisce il monitoraggio e il controllo di chi ha eseguito l'accesso ai segreti.
- La rotazione dei segreti dell'insieme di credenziali delle chiavi non richiede modifiche nel servizio app.
L'immagine seguente illustra la connessione del servizio app a Key Vault usando un'identità gestita e quindi l'accesso a un servizio di Azure usando i segreti archiviati in Key Vault:
Usare i segreti nelle impostazioni dell'app
Per le app che si connettono ai servizi usando segreti (ad esempio nomi utente, password e chiavi API), il servizio app può archiviarli in modo sicuro nelle impostazioni dell'app. Questi segreti vengono inseriti nel codice dell'applicazione come variabili di ambiente all'avvio dell'app. Le impostazioni dell'app vengono sempre crittografate quando sono archiviate (crittografia dei dati inattivi). Per la gestione dei segreti più avanzata, ad esempio la rotazione dei segreti, i criteri di accesso e la cronologia di controllo, provare usando Key Vault.
Esempi di uso dei segreti dell'applicazione per connettersi a un database:
- Esercitazione: Distribuire un'app ASP.NET Core con database SQL di Azure nel servizio app di Azure
- Esercitazione: Distribuire un'app ASP.NET in Azure con il database SQL di Azure
- Esercitazione: Distribuire un'app PHP, MySQL e Redis nel servizio app di Azure
- Distribuire un'app Web Node.js + MongoDB in Azure
- Distribuire un'app Web Python (Django o Flask) con PostgreSQL in Azure
- Esercitazione: Creare un'app Web Tomcat con il Servizio app di Azure in Linux e MySQL
- Esercitazione: Creare un'app Web Java Spring Boot con il Servizio app di Azure in Linux e Azure Cosmos DB
Passaggi successivi
Scopri come:
- Archiviare in modo sicuro i segreti in Azure Key Vault.
- Accedere alle risorse usando un'identità gestita.
- Archiviare i segreti usando le impostazioni dell'app del servizio app.
- Connettersi a Microsoft Graph come utente.
- Connettersi a un database SQL come utente.
- Connettersi a un'altra app del servizio app come utente.
- Connettersi a un'altra app del servizio app e quindi a un servizio downstream come utente.