Configurare le stringhe di connessione di Archiviazione di Azure

Un stringa di connessione include le informazioni di autorizzazione necessarie per l'applicazione per accedere ai dati in un account Archiviazione di Azure in fase di esecuzione usando l'autorizzazione con chiave condivisa. Le stringhe di connessione possono essere configurate per:

  • Connessione all'emulatore di archiviazione Azurite.
  • Accedere a un account di archiviazione in Azure.
  • Accedere alle risorse specificate in Azure tramite una firma di accesso condiviso (SAS).

Per informazioni su come visualizzare le chiavi di accesso dell'account e copiare un stringa di connessione, vedere Gestire le chiavi di accesso dell'account di archiviazione.

Importante

Per una sicurezza ottimale, Microsoft consiglia di usare l'ID Entra di Microsoft con identità gestite per autorizzare le richieste nei dati blob, code e tabelle, quando possibile. L'autorizzazione con l'ID e le identità gestite di Microsoft Entra offre sicurezza e facilità di utilizzo superiori rispetto all'autorizzazione con chiave condivisa. Per altre informazioni sulle identità gestite, vedere Che cosa sono le identità gestite per le risorse di Azure. Per un esempio di come abilitare e usare un'identità gestita per un'applicazione .NET, vedere Autenticazione di app ospitate in Azure in risorse di Azure con .NET.

Per le risorse ospitate all'esterno di Azure, ad esempio le applicazioni locali, è possibile usare le identità gestite tramite Azure Arc. Ad esempio, le app in esecuzione nei server abilitati per Azure Arc possono usare le identità gestite per connettersi ai servizi di Azure. Per altre informazioni, vedere Eseguire l'autenticazione con le risorse di Azure con i server abilitati per Azure Arc.

Per gli scenari in cui vengono usate le firme di accesso condiviso, Microsoft consiglia di usare una firma di accesso condiviso di delega utente. Una firma di accesso condiviso della delega utente è protetta con le credenziali di Microsoft Entra anziché la chiave dell'account. Per informazioni sulle firme di accesso condiviso, vedere Concedere l'accesso limitato ai dati con firme di accesso condiviso. Per un esempio di come creare e usare una firma di accesso condiviso di delega utente con .NET, vedere Creare una firma di accesso condiviso di delega utente per un BLOB con .NET.

Proteggere le chiavi di accesso

Le chiavi di accesso dell'account di archiviazione forniscono l'accesso completo alla configurazione di un account di archiviazione e ai dati. Fare sempre attenzione a proteggere le chiavi di accesso. Usare Azure Key Vault per gestire e ruotare le chiavi in modo sicuro. L'accesso alla chiave condivisa concede all’utente l'accesso completo alla configurazione di un account di archiviazione e ai relativi dati. L'accesso alle chiavi condivise deve essere limitato e monitorato con attenzione. Usare i token sas di delega utente con un ambito limitato di accesso negli scenari in cui non è possibile usare l'autorizzazione basata su ID Entra di Microsoft. Evitare chiavi di accesso con codifica fissa o salvarle in qualsiasi punto del testo normale che sia accessibile ad altri utenti. Ruotare le chiavi se si ritiene che potrebbero essere state compromesse.

Importante

Per evitare che gli utenti accedano ai dati nell'account di archiviazione con Chiave condivisa, è possibile non consentire l'autorizzazione con chiave condivisa per tale account. L'accesso granulare ai dati con privilegi minimi necessari è consigliato come procedura ottimale di protezione. Per gli scenari che supportano OAuth, è consigliabile usare l'autorizzazione basata su ID Entra di Microsoft usando le identità gestite. Kerberos o SMTP deve essere usato per File di Azure tramite SMB. Per File di Azure tramite REST, è possibile usare i token di firma di accesso condiviso. L'accesso con chiave condivisa deve essere disabilitato, se non necessario, per evitarne l'uso involontario. Per altre informazioni, vedere Impedire l'autorizzazione con chiave condivisa per un account di archiviazione di Azure.

Per proteggere un account di Archiviazione di Azure con i criteri di accesso condizionale di Microsoft Entra, è necessario non consentire l'autorizzazione di Chiave condivisa per tale account.

Se è stato disabilitato l'accesso con chiave condivisa e viene visualizzata l'autorizzazione di Chiave condivisa nei log di diagnostica, significa che l'accesso attendibile viene usato per accedere all'archiviazione. Per altri dettagli, vedere Accesso attendibile per le risorse registrate nella sottoscrizione.

Archiviare un stringa di connessione

L'applicazione deve accedere alla stringa di connessione in fase di runtime per autenticare le richieste inviate al servizio Archiviazione di Azure. Sono disponibili diverse opzioni per archiviare le chiavi di accesso dell'account o stringa di connessione:

  • È possibile archiviare le chiavi dell'account in modo sicuro in Azure Key Vault. Per altre informazioni, vedere Informazioni sulle chiavi dell'account di archiviazione gestito di Azure Key Vault.
  • È possibile archiviare il stringa di connessione in una variabile di ambiente.
  • Un'applicazione può archiviare il stringa di connessione in un file app.config o web.config. Aggiungere la stringa di connessione alla sezione AppSettings in tali file.

Avviso

L'archiviazione delle chiavi di accesso dell'account o stringa di connessione in testo non crittografato presenta un rischio per la sicurezza e non è consigliabile. Archiviare le chiavi dell'account in un formato crittografato o eseguire la migrazione delle applicazioni per usare l'autorizzazione di Microsoft Entra per l'accesso all'account di archiviazione.

Configurare un stringa di connessione per Azurite

L'emulatore supporta un singolo account fisso e una chiave di autenticazione nota per l'autenticazione con chiave condivisa. Questo account e la chiave sono le uniche credenziali di chiave condivisa consentite per l'uso con l'emulatore. Sono:

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

Nota

La chiave di autenticazione supportata dall'emulatore è destinata solo al test della funzionalità del codice di autenticazione client. Non viene utilizzata per eventuali scopi di sicurezza. Non è possibile usare l'account di archiviazione di produzione e la chiave con l'emulatore. Non usare l'account di sviluppo con dati di produzione.

L'emulatore supporta solo la connessione tramite HTTP. HTTPS è tuttavia il protocollo consigliato per accedere alle risorse in un account di archiviazione di Azure di produzione.

Connettersi all'account dell'emulatore utilizzando un collegamento

Il modo più semplice per eseguire la connessione all'emulatore dall'applicazione consiste nel configurare una stringa di connessione nel file di configurazione dell'applicazione che fa riferimento al collegamento UseDevelopmentStorage=true. Il collegamento equivale alla stringa di connessione completa per l'emulatore, che specifica il nome dell'account, la chiave dell'account e gli endpoint dell'emulatore per ognuno dei servizi di archiviazione di Azure:

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;

Il frammento di codice .NET seguente illustra come usare il collegamento da un metodo che accetta una stringa di connessione. Ad esempio, il costruttore blobContainerClient(String, String) accetta una stringa di connessione.

BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();

Assicurarsi che l'emulatore sia in esecuzione prima di chiamare il codice nel frammento di codice.

Per altre informazioni su Azurite, vedere Usare l'emulatore Azurite per lo sviluppo di Archiviazione di Azure locali.

Configurare un stringa di connessione per un account di archiviazione di Azure

Per creare una stringa di connessione per l'account di archiviazione di Azure, usare il seguente formato. Indicare se si vuole eseguire la connessione all'account di archiviazione tramite HTTPS (scelta consigliata) o HTTP, sostituire myAccountName con il nome dell'account di archiviazione e sostituire myAccountKey con la chiave di accesso dell'account:

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

Ad esempio, la stringa di connessione può essere simile alla seguente:

DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>

Anche se Archiviazione di Azure supporta sia HTTP che HTTPS in una stringa di connessione, è consigliabile usare HTTPS.

Suggerimento

Le stringhe di connessione dell'account di archiviazione sono disponibili nel portale di Azure. Passare a Sicurezza e chiavi di accesso di rete>nelle impostazioni dell'account di archiviazione per visualizzare le stringa di connessione per le chiavi di accesso primarie e secondarie.

Creare una stringa di connessione usando una firma di accesso condiviso

Se si dispone di un URL di firma di accesso condiviso che concede l'accesso alle risorse in un account di archiviazione, è possibile usare la firma di accesso condiviso in una stringa di connessione. Poiché la firma di accesso condiviso contiene le informazioni necessarie per autenticare la richiesta, una stringa di connessione con una firma di accesso condiviso fornisce il protocollo, l'endpoint di servizio e le credenziali necessarie per accedere alla risorsa.

Per creare una stringa di connessione che include una firma di accesso condiviso, specificare la stringa nel seguente formato:

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

Ogni endpoint di servizio è facoltativo anche se la stringa di connessione deve contenerne almeno uno.

Nota

La procedura consigliata prevede l'uso di HTTPS con la firma di accesso condiviso.

Se si specifica una firma di accesso condiviso in una stringa di connessione all'interno di un file di configurazione, potrebbe essere necessario codificare caratteri speciali nell'URL.

Esempio di firma di accesso condiviso del servizio

Ecco un esempio di stringa di connessione che include una firma di accesso condiviso del servizio per l'archiviazione BLOB:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Ecco invece un esempio della stessa stringa di connessione con la codifica dell'URL:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&amp;sr=b&amp;si=tutorial-policy-635959936145100803&amp;sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Esempio di firma di accesso condiviso dell'account

Ecco un esempio di stringa di connessione che include una firma di accesso condiviso dell'account per l'archivio BLOB e file. Si noti che sono specificati gli endpoint per entrambi i servizi:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

Ecco invece un esempio della stessa stringa di connessione con la codifica dell'URL:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&amp;sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&amp;spr=https&amp;st=2016-04-12T03%3A24%3A31Z&amp;se=2016-04-13T03%3A29%3A31Z&amp;srt=s&amp;ss=bf&amp;sp=rwl

Creare una stringa di connessione per un endpoint di archiviazione esplicito

Nella stringa di connessione è possibile specificare in modo esplicito endpoint di servizio anziché usare gli endpoint predefiniti. Per creare una stringa di connessione che specifica un endpoint esplicito, specificare l'endpoint di servizio completo per ogni servizio, inclusa la specifica del protocollo, ad esempio HTTPS (scelta consigliata) o HTTP, usando il formato seguente:

DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey

Se l'endpoint di archiviazione BLOB è stato mappato su un dominio personalizzato può risultare utile specificare un endpoint esplicito. In tal caso è possibile specificare l'endpoint personalizzato per l'archiviazione BLOB nella stringa di connessione. Facoltativamente è possibile specificare gli endpoint predefiniti per gli altri servizi, se l'applicazione li usa.

Ecco un esempio di stringa di connessione che specifica un endpoint esplicito per il servizio BLOB:

# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>

Questo esempio specifica endpoint espliciti per tutti i servizi, tra cui un dominio personalizzato per il servizio BLOB:

# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>

I valori degli endpoint in una stringa di connessione vengono usati per costruire gli URI di richiesta per i servizi di archiviazione e per definire la struttura degli eventuali URI restituiti al codice.

Se un endpoint di archiviazione è stato mappato su un dominio personalizzato e tale endpoint viene omesso da una stringa di connessione, non sarà possibile usare la stringa di connessione per accedere ai dati in quel servizio dal codice.

Per altre informazioni sulla configurazione di un dominio personalizzato per Archiviazione di Azure, vedere Eseguire il mapping di un dominio personalizzato a un endpoint Archiviazione BLOB di Azure.

Importante

I valori degli endpoint di servizio nelle stringhe di connessione devono essere URI formulati correttamente e includere https:// (opzione consigliata) o http://.

Creare una stringa di connessione con un suffisso dell'endpoint

Per creare un stringa di connessione per un servizio di archiviazione in aree o istanze con suffissi di endpoint diversi, ad esempio per Microsoft Azure gestito da 21Vianet o Azure per enti pubblici, usare il formato stringa di connessione seguente. Indicare se si vuole eseguire la connessione all'account di archiviazione tramite HTTPS (opzione consigliata) o HTTP, quindi sostituire myAccountName con il nome dell'account di archiviazione, sostituire myAccountKey con la chiave di accesso del proprio account e sostituire mySuffix con il suffisso URI:

DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;

Ecco un esempio di stringa di connessione per i servizi di archiviazione in Azure gestito da 21Vianet:

DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;

Autorizzazione dell'accesso con chiave condivisa

Per informazioni su come autorizzare l'accesso a Archiviazione di Azure con la chiave dell'account o con un stringa di connessione, vedere uno degli articoli seguenti:

Passaggi successivi