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.

Proteggere le chiavi di accesso

Archiviazione chiavi di accesso dell'account forniscono l'accesso completo alla configurazione di un account di archiviazione, nonché ai dati. Prestare 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 a un utente l'accesso completo alla configurazione di un account di archiviazione e ai relativi dati. L'accesso alle chiavi condivise deve essere attentamente limitato e monitorato. Usare i token di firma di accesso condiviso con ambito limitato negli scenari in cui non è possibile usare l'autorizzazione basata su ID Entra di Microsoft. Evitare di codificare in modo rigido i tasti di scelta o di salvarli in qualsiasi punto del testo normale accessibile ad altri utenti. Ruotare le chiavi se si ritiene che potrebbero essere state compromesse.

Importante

Microsoft consiglia di usare Microsoft Entra ID per autorizzare le richieste nei dati blob, code e tabelle, se possibile, anziché usare le chiavi dell'account (autorizzazione con chiave condivisa). L'autorizzazione con Microsoft Entra ID offre maggiore sicurezza e facilità d'uso tramite l'autorizzazione con chiave condivisa. Per altre informazioni sull'uso dell'autorizzazione Di Microsoft Entra dalle applicazioni, vedere Come autenticare le applicazioni .NET con i servizi di Azure. Per le condivisioni file di Azure SMB, Microsoft consiglia di usare l'integrazione Active Directory locale Domain Services (AD DS) o l'autenticazione Kerberos di Microsoft Entra.

Per impedire agli utenti di accedere ai dati nell'account di archiviazione con chiave condivisa, è possibile impedire l'autorizzazione della chiave condivisa per l'account di archiviazione. L'accesso granulare ai dati con privilegi minimi necessari è consigliato come procedura consigliata per la sicurezza. L'autorizzazione basata su ID Entra di Microsoft deve essere usata per scenari che supportano OAuth. Kerberos o SMTP deve essere usato per File di Azure tramite SMB. Per File di Azure su REST, è possibile usare i token di firma di accesso condiviso. L'accesso con chiave condivisa deve essere disabilitato se non è necessario per evitare l'uso accidentale. Per altre informazioni, vedere Impedire l'autorizzazione con chiave condivisa per un account Archiviazione di Azure.

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

Se è stato disabilitato l'accesso con chiave condivisa e viene visualizzata l'autorizzazione con chiave condivisa segnalata nei log di diagnostica, indica 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 a testare la 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.

Connessione all'account dell'emulatore usando il collegamento

Il modo più semplice per connettersi all'emulatore dall'applicazione consiste nel configurare un stringa di connessione nel file di configurazione dell'applicazione che fa riferimento al collegamento UseDevelopmentStorage=true. Il collegamento equivale al stringa di connessione completo per l'emulatore, che specifica il nome dell'account, la chiave dell'account e gli endpoint dell'emulatore per ognuno dei servizi 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 un stringa di connessione. Ad esempio, il costruttore BlobContainerClient(String, String) accetta un 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