Condividi tramite


Proteggere la connettività ai servizi e ai database di Azure da Azure App Service

Il servizio app potrebbe dover connettersi ad altri servizi 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é i malintenzionati scansionano regolarmente i repository pubblici di GitHub in cerca di segreti di connessione accidentalmente commessi. Per le applicazioni cloud, la gestione dei segreti migliore consiste nel non avere segreti. Quando si esegue la migrazione a Azure App Service, l'app potrebbe iniziare con la connettività basata sui segreti e il servizio app consente di mantenere i segreti in modo sicuro. Tuttavia, Azure può contribuire a proteggere la connettività back-end dell'app tramite l'autenticazione Microsoft Entra, eliminando completamente i segreti nell'app.

Metodo di connessione Quando utilizzare
Connettersi utilizzando l'identità di un'app * Si vogliono rimuovere completamente le credenziali, le chiavi o i segreti dall'applicazione.
* Il servizio Azure downstream supporta l'autenticazione 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 Azure downstream supporta l'autenticazione Microsoft Entra, ad esempio Microsoft Graph.
* La risorsa downstream deve eseguire un'autorizzazione granulare dell'utente connesso corrente.
Connettersi usando credenziali * La risorsa downstream richiede segreti di connessione.
* L'app si connette a servizi non Azure, ad esempio un server di database locale.
* Il servizio Azure downstream non supporta ancora l'autenticazione Microsoft Entra.

Accedere con l'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à managed identity da Microsoft Entra ID consente a App Service di accedere alle risorse senza segreti e la sua gestione è possibile tramite il controllo degli accessi in base al ruolo (RBAC). Un'identità gestita può connettersi a qualsiasi risorsa di Azure che supporta l'autenticazione 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 Azure:

  • Un utente visita il sito Web del servizio di app Azure.
  • B: Connettere da 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.

Diagramma che mostra l'identità gestita che accede a una risorsa con o senza l'identità dell'utente.

Esempi di uso dei segreti dell'applicazione per connettersi a un database:

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 Authentication e autorizzazione in Azure App Service e Azure Functions). Se si usa il provider Microsoft (autenticazione 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.

Diagramma dell'architettura per lo scenario di esercitazione.

Di seguito sono illustrati alcuni scenari:

Connettersi utilizzando i segreti

Esistono due modi consigliati per usare i segreti nell'app: l'uso dei segreti archiviati in Azure Key Vault o segreti nelle impostazioni dell'app del servizio app.

Utilizzare i 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 Microsoft Entra o richiede un connection string 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 di Key Vault come riferimenti di Key Vault nelle impostazioni dell'app.

I vantaggi delle identità gestite integrate con Key Vault includono:

  • L'accesso al segreto del Key Vault è limitato all'app.
  • I contributori dell'app, come ad esempio gli amministratori, potrebbero avere il controllo completo delle risorse del servizio App e, allo stesso tempo, non avere accesso ai segreti del Key Vault.
  • 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 la verifica 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 Azure usando i segreti archiviati in Key Vault:

Diagramma che mostra il servizio app usando un segreto archiviato in Key Vault e gestito con identità gestita per connettersi a Foundry Tools.

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'applicazione sono sempre crittografate durante l'archiviazione (crittografia a riposo). Per una gestione dei segreti più avanzata, ad esempio la rotazione dei segreti, i criteri di accesso e la cronologia di controllo, provare uso Key Vault.

Esempi di uso dei segreti dell'applicazione per connettersi a un database: