Condividi tramite


Connessioni senza password per i servizi di Azure

Annotazioni

Le connessioni senza password sono una funzionalità indipendente dal linguaggio che si estende su più servizi di Azure. Sebbene la documentazione attuale si concentri su alcune lingue e servizi, stiamo attualmente producendo documentazione aggiuntiva per altre lingue e servizi.

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

Problemi di sicurezza con password e segreti

Le password e le chiavi segrete devono essere utilizzate con cautela e gli sviluppatori non devono mai posizionarle 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.

Nell'esempio di codice seguente viene illustrato come connettersi ad Archiviazione di Azure usando una chiave dell'account di archiviazione. Molti sviluppatori gravitano verso questa soluzione perché sembra familiare alle opzioni con cui hanno lavorato in passato, anche se non è una soluzione ideale. Se l'applicazione utilizza attualmente le chiavi di accesso, è consigliabile 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 le password a sviluppatori, operatori o altri utenti. Spesso utilizzano un vault per archiviare e caricare le password nelle applicazioni e riducono ulteriormente il rischio aggiungendo requisiti e procedure di rotazione delle password. Questo approccio, a sua volta, aumenta la complessità operativa e, a volte, porta a interruzioni della connessione delle applicazioni.

Connessioni senza password e Zero Trust

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

L'opzione di autenticazione consigliata per le connessioni sicure e 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 in modo sicuro internamente da Azure.

È possibile configurare le connessioni senza password ai servizi di Azure usando Service Connector oppure è possibile configurarle manualmente. Service Connector abilita le identità gestite nei servizi di hosting di app come Azure Spring Apps, servizio app Azure e app contenitore di Azure. Service Connector 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 di esecuzione di un'applicazione configurata per le connessioni senza password, è possibile visualizzare la stringa di connessione completa. La 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 le applicazioni Java come esempio. Una copertura simile per altre lingue è in arrivo.


Introduzione a DefaultAzureCredential

Le connessioni senza password ai servizi di Azure tramite l'ID Microsoft Entra e il controllo degli accessi in base al ruolo possono essere implementate usando DefaultAzureCredential le librerie client di Azure Identity.

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 di produzione) senza implementare codice specifico dell'ambiente.

L'ordine e le posizioni in cui DefaultAzureCredential le ricerche delle credenziali variano a seconda delle 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 il servizio app di Azure. Per questa transizione non sono necessarie modifiche al codice.

Annotazioni

Un'identità gestita fornisce un'identità di sicurezza per rappresentare un'app o un servizio. L'identità è 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 al bus di servizio usando connessioni senza password. In altra documentazione viene descritto in modo più dettagliato come eseguire la migrazione a questa configurazione per un servizio specifico. 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());

Vedere anche

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