Condividi tramite


Connessioni senza password per i servizi di Azure

Nota

Le connessioni senza password sono una funzionalità indipendente dal linguaggio che si estende su più servizi di Azure. Anche se la documentazione corrente è incentrata su alcuni linguaggi e servizi, attualmente è in corso la produzione di documentazione aggiuntiva per altri linguaggi e servizi.

Questo articolo descrive le problematiche di sicurezza con le password e introduce connessioni senza password per i servizi di Azure.

Problemi di sicurezza con password e segreti

Le password e le chiavi segrete devono essere usate con cautela e gli sviluppatori non devono mai inserirli in una posizione non sicura. Molte app si connettono al database back-end, alla cache, alla messaggistica e ai servizi di eventi usando nomi utente, password e chiavi di accesso. Se esposte, queste credenziali possono essere usate per ottenere l'accesso non autorizzato a informazioni riservate, ad esempio un catalogo vendite creato per una campagna imminente o i dati dei clienti che devono essere privati.

L'incorporamento delle password in un'applicazione presenta un rischio enorme per la sicurezza per molti motivi, tra cui l'individuazione tramite un repository di codice. Molti sviluppatori esternalizzano tali password usando variabili di ambiente in modo che le applicazioni possano caricarle da ambienti diversi. Tuttavia, questo sposta solo il rischio dal codice stesso a un ambiente di esecuzione. Chiunque possa accedere all'ambiente può rubare password, che a sua volta aumentano il rischio di esfiltrazione dei dati.

L'esempio di codice seguente illustra come connettersi a Archiviazione di Azure usando una chiave dell'account di archiviazione. Molti sviluppatori gravitano verso questa soluzione perché si sente familiare alle opzioni con cui hanno lavorato in passato, anche se non è una soluzione ideale. Se l'applicazione usa attualmente le chiavi di accesso, valutare la possibilità di eseguire la migrazione a connessioni senza password.

// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
    new Uri("https://<storage-account-name>.blob.core.windows.net"),
    new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));

Gli sviluppatori devono essere diligenti per non esporre mai questi tipi di chiavi o segreti in una posizione non sicura. Molte aziende hanno requisiti di sicurezza rigorosi per connettersi ai servizi di Azure senza esporre password a sviluppatori, operatori o altri utenti. Spesso usano un insieme di credenziali per archiviare e caricare le password nelle applicazioni e ridurre ulteriormente il rischio aggiungendo i requisiti e le procedure di rotazione delle password. Questo approccio, a sua volta, aumenta la complessità operativa e, a volte, comporta interruzioni della connessione dell'applicazione.

Connessioni senza password e Zero Trust

È ora possibile usare connessioni senza password nelle app per connettersi ai servizi basati su Azure senza dover ruotare le password. In alcuni casi, tutto ciò che serve è la configurazione. Non è necessario alcun nuovo codice. Zero Trust usa il principio "non considerare mai attendibile, verificare sempre e senza credenziali". Ciò significa proteggere tutte le comunicazioni fidandosi di computer o utenti solo dopo aver verificato l'identità e prima di concedere loro l'accesso ai servizi back-end.

L'opzione di autenticazione consigliata per le connessioni sicure senza password consiste nell'usare le identità gestite e il controllo degli accessi in base al ruolo di Azure in combinazione. Con questo approccio non è necessario tenere traccia e gestire manualmente molti segreti diversi per le identità gestite perché queste attività vengono gestite internamente da Azure.

È possibile configurare connessioni senza password ai servizi di Azure usando service Connessione or oppure configurarle manualmente. Service Connessione or abilita le identità gestite nei servizi di hosting di app come Azure Spring Apps, app Azure Service e App Azure Container. Service Connessione or configura anche i servizi back-end con connessioni senza password usando identità gestite e controllo degli accessi in base al ruolo di Azure e idrata le applicazioni con le informazioni di connessione necessarie.

Se si esamina l'ambiente in esecuzione di un'applicazione configurata per le connessioni senza password, è possibile visualizzare il stringa di connessione completo. Il stringa di connessione contiene, ad esempio, un indirizzo del server di database, un nome di database e un'istruzione per delegare l'autenticazione a un plug-in di autenticazione di Azure, ma non contiene password o segreti.

Il video seguente illustra le connessioni senza password dalle app ai servizi di Azure, usando applicazioni Java come esempio. Sarà disponibile una copertura simile per altre lingue.


Introduzione a DefaultAzureCredential

Le connessioni senza password ai servizi di Azure tramite Microsoft Entra ID e il controllo degli accessi in base al ruolo (RBAC) possono essere implementate usando DefaultAzureCredential le librerie client di Identità di Azure.

Importante

Alcuni linguaggi devono implementare DefaultAzureCredential in modo esplicito nel codice, mentre altri usano DefaultAzureCredential internamente tramite plug-in o driver sottostanti.

DefaultAzureCredential supporta più metodi di autenticazione e determina automaticamente quali devono essere usati in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (sviluppo locale e produzione) senza implementare codice specifico dell'ambiente.

L'ordine e le posizioni in cui DefaultAzureCredential la ricerca delle credenziali varia tra le lingue:

Ad esempio, quando si lavora in locale con .NET, DefaultAzureCredential in genere si esegue l'autenticazione usando l'account usato dallo sviluppatore per accedere a Visual Studio, all'interfaccia della riga di comando di Azure o ad Azure PowerShell. Quando l'app viene distribuita in Azure, DefaultAzureCredential individua e usa automaticamente l'identità gestita del servizio di hosting associato, ad esempio app Azure Servizio. Per questa transizione non sono necessarie modifiche al codice.

Nota

Un'identità gestita fornisce un'identità di sicurezza per rappresentare un'app o un servizio. L'identità viene gestita dalla piattaforma Azure e non richiede il provisioning o la rotazione dei segreti. Per altre informazioni sulle identità gestite, vedere la documentazione di panoramica .

Nell'esempio di codice seguente viene illustrato come connettersi a bus di servizio usando connessioni senza password. Un'altra documentazione descrive come eseguire la migrazione a questa configurazione per un servizio specifico in modo più dettagliato. Un'app .NET può passare un'istanza di DefaultAzureCredential nel costruttore di una classe client del servizio. DefaultAzureCredential individua automaticamente le credenziali disponibili in tale ambiente.

ServiceBusClient serviceBusClient = new(
    new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
    new DefaultAzureCredential());

Vedi anche

Per una spiegazione più dettagliata delle connessioni senza password, vedere la guida per sviluppatori Configurare le connessioni senza password tra più app e servizi di Azure.