Configurar cadeias de conexão do Armazenamento do AzureConfigure Azure Storage connection strings

Uma cadeia de conexão inclui as informações de autorização necessárias para que seu aplicativo acesse dados em uma conta de armazenamento do Azure em tempo de execução usando a autorização de chave compartilhada.A connection string includes the authorization information required for your application to access data in an Azure Storage account at runtime using Shared Key authorization. Você pode configurar cadeias de conexão para:You can configure connection strings to:

  • Conecte-se ao emulador de armazenamento do Azure.Connect to the Azure storage emulator.
  • Acesse uma conta de armazenamento no Azure.Access a storage account in Azure.
  • Acessar recursos especificados no Azure por uma SAS (Assinatura de Acesso Compartilhado).Access specified resources in Azure via a shared access signature (SAS).

Dica

O armazenamento do Azure dá suporte a solicitações de autorização para armazenamento de BLOBs e filas usando Azure Active Directory (Azure AD).Azure Storage supports authorizing requests to Blob and Queue storage using Azure Active Directory (Azure AD). Autorizar usuários ou aplicativos usando um token OAuth 2,0 retornado pelo AD do Azure fornece segurança superior e facilidade de uso sobre a autorização de chave compartilhada.Authorizing users or applications using an OAuth 2.0 token returned by Azure AD provides superior security and ease of use over Shared Key authorization. Com o Azure AD, não é necessário armazenar a chave de acesso da conta com seu código e arriscar as vulnerabilidades de segurança potenciais.With Azure AD, there is no need to store the account access key with your code and risk potential security vulnerabilities.

Além disso, o armazenamento do Azure dá suporte à assinatura de acesso compartilhado (SAS) de delegação de usuário para o armazenamento de BLOBs.Additionally, Azure Storage supports the user delegation shared access signature (SAS) for Blob storage. A SAS de delegação de usuário é assinada com as credenciais do Azure AD.The user delegation SAS is signed with Azure AD credentials. Quando seu design de aplicativo requer assinaturas de acesso compartilhado para acesso ao armazenamento de BLOB, use as credenciais do Azure AD para criar uma SAS de delegação de usuário para segurança superior.When your application design requires shared access signatures for access to Blob storage, use Azure AD credentials to create a user delegation SAS for superior security.

A Microsoft recomenda usar o Azure AD com seus aplicativos de armazenamento do Azure quando possível.Microsoft recommends using Azure AD with your Azure Storage applications when possible. Para obter mais informações, consulte autorizar o acesso a BLOBs e filas do Azure usando o Azure Active Directory.For more information, see Authorize access to Azure blobs and queues using Azure Active Directory.

Importante

Sua chave de conta de armazenamento é semelhante para a senha raiz da sua conta de armazenamento.Your storage account key is similar to the root password for your storage account. Sempre tenha cuidado para proteger a chave da sua conta.Always be careful to protect your account key. Evite distribuí-la para outros usuários, embuti-la no código ou salvá-la em um arquivo de texto sem formatação que esteja acessível a outras pessoas.Avoid distributing it to other users, hard-coding it, or saving it anywhere in plaintext that is accessible to others. Gere novamente a chave de sua conta usando o portal do Azure se você achar que ela pode ter sido comprometida.Regenerate your account key using the Azure portal if you believe it may have been compromised.

Tokens SAS (Assinatura de Acesso Compartilhado) são essenciais para proteger assim como as chaves de acesso da conta.SAS (Shared Access Signature) tokens are critical to protect just like the account access keys. Ao mesmo tempo em que fornece granularidade a SAS concede aos clientes o acesso a recursos em sua conta de armazenamento e não deve ser compartilhada publicamente.While providing granularity SAS grants clients access to the resources in your storage account and should not be shared publicly. Quando o compartilhamento é necessário para solucionar problemas, considere usar uma versão editada de qualquer arquivo de log ou excluir os tokens SAS (se houver) dos arquivos de log e verifique se as capturas de tela também não contêm as informações de SAS.When sharing is required for troubleshooting reasons consider using a redacted version of any log files or deleting the SAS tokens (if present) from the log files, and make sure the screenshots don't contain the SAS information either.

Exibir e copiar uma cadeia de conexãoView and copy a connection string

Para exibir e copiar as chaves de acesso ou a cadeia de conexão da conta de armazenamento do portal do Azure:To view and copy your storage account access keys or connection string from the Azure portal:

  1. Navegue até o Portal do Azure.Navigate to the Azure portal.

  2. Localize sua cadeia de conexão.Locate your storage account.

  3. Na seção Configurações da visão geral da conta de armazenamento, selecione Chaves de acesso.In the Settings section of the storage account overview, select Access keys. Suas chaves de acesso da conta são exibidas, bem como a cadeia de conexão completa para cada chave.Your account access keys appear, as well as the complete connection string for each key.

  4. Encontre o valor da Chave em key1 e clique no botão Copiar para copiar a chave de conta.Find the Key value under key1, and click the Copy button to copy the account key.

  5. Como alternativa, você pode copiar a cadeia de conexão inteira.Alternately, you can copy the entire connection string. Encontre o valor da Cadeia de conexão em key1 e clique no botão Copiar para copiar a cadeia de conexão.Find the Connection string value under key1, and click the Copy button to copy the connection string.

    Captura de tela mostrando como exibir chaves de acesso no portal do Azure

Você pode usar qualquer chave para acessar o armazenamento do Azure, mas, em geral, é uma boa prática usar a primeira chave e reservar o uso da segunda chave para quando você estiver girando as chaves.You can use either key to access Azure Storage, but in general it's a good practice to use the first key, and reserve the use of the second key for when you are rotating keys.

Armazenar uma cadeia de conexãoStore a connection string

Seu aplicativo precisara acessar a cadeia de conexão no tempo de execução para autorizar as solicitações feitas para o Armazenamento do Microsoft Azure.Your application needs to access the connection string at runtime to authorize requests made to Azure Storage. Você tem várias opções diferentes para armazenar a cadeia de conexão:You have several options for storing your connection string:

  • Você pode armazenar a cadeia de conexão em uma variável de ambiente.You can store your connection string in an environment variable.
  • Um aplicativo em execução na área de trabalho ou em um dispositivo pode armazenar a cadeia de conexão em um arquivo app.config ou web.config.An application running on the desktop or on a device can store the connection string in an app.config or web.config file. Adicione a cadeia de conexão à seção AppSettings nesses arquivos.Add the connection string to the AppSettings section in these files.
  • Um aplicativo em execução em um serviço de nuvem do Azure pode armazenar a cadeia de conexão no arquivo de esquema (.cscfg) de configuração de serviço do Azure.An application running in an Azure cloud service can store the connection string in the Azure service configuration schema (.cscfg) file. Adicionar a cadeia de conexão à seção ConfigurationSettings do arquivo de configuração de serviço.Add the connection string to the ConfigurationSettings section of the service configuration file.

Armazenar a cadeia de conexão em um arquivo de configuração facilita a atualização da cadeia de conexão para alternar entre o emulador de armazenamento e uma conta de Armazenamento do Azure na nuvem.Storing your connection string in a configuration file makes it easy to update the connection string to switch between the storage emulator and an Azure storage account in the cloud. Você precisa apenas editar a cadeia de conexão para apontar para seu ambiente de destino.You only need to edit the connection string to point to your target environment.

Você pode usar o Gerenciador de Configuração do Microsoft Azure para acessar a cadeia de conexão no tempo de execução, independentemente do local em que seu aplicativo esteja sendo executado.You can use the Microsoft Azure Configuration Manager to access your connection string at runtime regardless of where your application is running.

Configurar uma cadeia de conexão para o emulador de armazenamentoConfigure a connection string for the storage emulator

O emulador de armazenamento dá suporte a uma única conta fixa e uma chave de autenticação conhecida para a autenticação da Chave Compartilhada.The storage emulator supports a single fixed account and a well-known authentication key for Shared Key authentication. Essa conta e a chave são as únicas credenciais de Chave Compartilhada permitidas para uso com o emulador de armazenamento.This account and key are the only Shared Key credentials permitted for use with the storage emulator. Eles são:They are:

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

Observação

A chave de autenticação suportada pelo emulador de armazenamento destina-se somente para testar a funcionalidade do seu código de autenticação de cliente.The authentication key supported by the storage emulator is intended only for testing the functionality of your client authentication code. Ela não serve para fins de segurança.It does not serve any security purpose. Você não pode usar sua conta de armazenamento de produção e a chave com o emulador de armazenamento.You cannot use your production storage account and key with the storage emulator. Você não deve usar a conta de desenvolvimento com dados de produção.You should not use the development account with production data.

O emulador de armazenamento oferece suporte à conexão via HTTP apenas.The storage emulator supports connection via HTTP only. No entanto, o HTTPS é o protocolo recomendado para acessar os recursos em uma conta de armazenamento de produção do Azure.However, HTTPS is the recommended protocol for accessing resources in a production Azure storage account.

Conectar-se à conta do emulador usando um atalhoConnect to the emulator account using a shortcut

A maneira mais fácil de conectar o emulador de armazenamento do seu aplicativo é configurar uma cadeia de conexão no arquivo de configuração do aplicativo que faz referência ao atalho UseDevelopmentStorage=true.The easiest way to connect to the storage emulator from your application is to configure a connection string in your application's configuration file that references the shortcut UseDevelopmentStorage=true. Aqui está um exemplo de uma cadeia de conexão para o emulador de armazenamento em um arquivo app.config:Here's an example of a connection string to the storage emulator in an app.config file:

<appSettings>
  <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

Conectar-se à conta do emulador usando o nome de conta e a chave conhecidosConnect to the emulator account using the well-known account name and key

Para criar uma cadeia de conexão que referencia o nome da conta do emulador e a chave, você deve especificar os pontos de extremidade para cada um dos serviços do emulador na cadeia de conexão que você deseja usar.To create a connection string that references the emulator account name and key, you must specify the endpoints for each of the services you wish to use from the emulator in the connection string. Isso é necessário para que a cadeia de conexão faça referência aos pontos de extremidade do emulador, que são diferentes daqueles para uma conta de armazenamento de produção.This is necessary so that the connection string will reference the emulator endpoints, which are different than those for a production storage account. Por exemplo, o valor da sua cadeia de conexão terá esta aparência:For example, the value of your connection string will look like this:

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

Esse valor é idêntico ao atalho mostrado acima, UseDevelopmentStorage=true.This value is identical to the shortcut shown above, UseDevelopmentStorage=true.

Especificar um proxy HTTPSpecify an HTTP proxy

Você também pode especificar um proxy HTTP para usar quando estiver testando seu serviço no emulador de armazenamento.You can also specify an HTTP proxy to use when you're testing your service against the storage emulator. Isso pode ser útil para observar solicitações e respostas HTTP enquanto você estiver depurando operações nos serviços de armazenamento.This can be useful for observing HTTP requests and responses while you're debugging operations against the storage services. Para especificar um proxy, adicione a opção DevelopmentStorageProxyUri à cadeia de conexão e defina o seu valor para o URI de proxy.To specify a proxy, add the DevelopmentStorageProxyUri option to the connection string, and set its value to the proxy URI. Por exemplo, aqui está uma cadeia de conexão que aponta para o emulador de armazenamento e configura um proxy HTTP:For example, here is a connection string that points to the storage emulator and configures an HTTP proxy:

UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri

Consulte Usar o emulador do Armazenamento do Azure para desenvolvimento e teste para obter mais informações sobre o emulador de armazenamento.For more information about the storage emulator, see Use the Azure storage emulator for development and testing.

Configurar uma cadeia de conexão para uma conta de armazenamento do AzureConfigure a connection string for an Azure storage account

Para criar uma cadeia de conexão para sua conta de Armazenamento do Azure, use o formato de cadeia de conexão a seguir.To create a connection string for your Azure storage account, use the following format. Indique se você deseja se conectar à conta de armazenamento por meio de HTTPS (recomendado) ou HTTP, substitua myAccountName pelo nome da sua conta de armazenamento e substitua myAccountKey pela chave de acesso da sua conta:Indicate whether you want to connect to the storage account through HTTPS (recommended) or HTTP, replace myAccountName with the name of your storage account, and replace myAccountKey with your account access key:

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

Por exemplo, a cadeia de conexão pode parecer com o seguinte:For example, your connection string might look similar to:

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

Embora o Armazenamento do Azure dê suporte a HTTP e HTTPS em uma cadeia de conexão, usar HTTPS é altamente recomendável.Although Azure Storage supports both HTTP and HTTPS in a connection string, HTTPS is highly recommended.

Dica

Você pode encontrar as cadeias de conexão da conta de armazenamento no Portal do Azure.You can find your storage account's connection strings in the Azure portal. Navegue até CONFIGURAÇÕES > Chaves de acesso na folha de menu da sua conta de armazenamento para ver as cadeias de conexão tanto para a chave de acesso primária quanto para a secundária.Navigate to SETTINGS > Access keys in your storage account's menu blade to see connection strings for both primary and secondary access keys.

Criar uma cadeia de conexão usando uma assinatura de acesso compartilhadoCreate a connection string using a shared access signature

Se você possui uma URL de SAS (assinatura de acesso compartilhado) que concede acesso a recursos em uma conta de armazenamento, pode usar a SAS em uma cadeia de conexão.If you possess a shared access signature (SAS) URL that grants you access to resources in a storage account, you can use the SAS in a connection string. Como a SAS contém as informações necessárias para autenticar a solicitação, uma cadeia de conexão com uma SAS fornece o protocolo, o ponto de extremidade de serviço e as credenciais necessárias para acessar o recurso.Because the SAS contains the information required to authenticate the request, a connection string with a SAS provides the protocol, the service endpoint, and the necessary credentials to access the resource.

Para criar uma cadeia de conexão que inclui uma assinatura de acesso compartilhado, especifique a cadeia de caracteres no seguinte formato:To create a connection string that includes a shared access signature, specify the string in the following format:

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

Cada ponto de extremidade de serviço é opcional, embora a cadeia de conexão deve conter pelo menos um.Each service endpoint is optional, although the connection string must contain at least one.

Observação

Usar HTTPS com uma SAS é uma prática recomendada.Using HTTPS with a SAS is recommended as a best practice.

Se você estiver especificando uma SAS em uma cadeia de conexão em um arquivo de configuração, precisará codificar caracteres especiais na URL.If you are specifying a SAS in a connection string in a configuration file, you may need to encode special characters in the URL.

Exemplo de SAS de serviçoService SAS example

Aqui está um exemplo de uma cadeia de conexão que inclui um serviço SAS para o Armazenamento de Blobs:Here's an example of a connection string that includes a service SAS for Blob storage:

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

E aqui está um exemplo da mesma cadeia de conexão com codificação de caracteres especiais:And here's an example of the same connection string with encoding of special characters:

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

Exemplo de SAS de contaAccount SAS example

Aqui está um exemplo de uma cadeia de conexão que inclui uma conta SAS para o Armazenamento de Blobs e de Arquivos:Here's an example of a connection string that includes an account SAS for Blob and File storage. Observe que os pontos de extremidade para ambos os serviços são especificados:Note that endpoints for both services are specified:

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

E aqui está um exemplo da mesma cadeia de conexão com a codificação de URL:And here's an example of the same connection string with URL encoding:

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

Criar uma cadeia de conexão para um ponto de extremidade explícito do armazenamentoCreate a connection string for an explicit storage endpoint

Você pode especificar explicitamente os pontos de extremidade de serviço na sua cadeia de conexão em vez dos pontos de extremidade padrão.You can specify explicit service endpoints in your connection string instead of using the default endpoints. Para criar uma cadeia de conexão que especifique um ponto de extremidade explícito, especifique o ponto de extremidade de serviço completo para cada serviço, incluindo a especificação do protocolo (HTTP ou HTTPS, sendo este o recomendado) usando o seguinte formato:To create a connection string that specifies an explicit endpoint, specify the complete service endpoint for each service, including the protocol specification (HTTPS (recommended) or HTTP), in the following format:

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

Um cenário em que pode ser útil especificar um ponto de extremidade explícito é se você mapeou o ponto de extremidade do Armazenamento de Blobs para um domínio personalizado.One scenario where you might wish to specify an explicit endpoint is when you've mapped your Blob storage endpoint to a custom domain. Nesse caso, você pode especificar o ponto de extremidade personalizado para o armazenamento de Blobs em sua cadeia de conexão.In that case, you can specify your custom endpoint for Blob storage in your connection string. Opcionalmente, você poderá especificar os pontos de extremidade padrão para os outros serviços se eles forem usados pelo seu aplicativo.You can optionally specify the default endpoints for the other services if your application uses them.

Este é um exemplo de uma cadeia de conexão que especifica um ponto de extremidade explícito para o serviço Blob:Here is an example of a connection string that specifies an explicit endpoint for the Blob service:

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

Este exemplo especifica pontos de extremidade explícitos para todos os serviços, incluindo um domínio personalizado para o serviço Blob:This example specifies explicit endpoints for all services, including a custom domain for the Blob service:

# 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>

Os valores de ponto de extremidade em uma cadeia de conexão são usados para construir os URIs de solicitação para os serviços de armazenamento e determinar a forma de quaisquer URIs retornados ao seu código.The endpoint values in a connection string are used to construct the request URIs to the storage services, and dictate the form of any URIs that are returned to your code.

Se você tiver mapeado um ponto de extremidade de armazenamento para um domínio personalizado e omitir esse ponto de extremidade de uma cadeia de conexão, você não poderá usar essa cadeia de conexão para acessar os dados nesse serviço do seu código.If you've mapped a storage endpoint to a custom domain and omit that endpoint from a connection string, then you will not be able to use that connection string to access data in that service from your code.

Importante

Valores de ponto de extremidade de serviço em suas cadeias de conexão devem ser URIs bem formados, incluindo https:// (recomendado) ou http://.Service endpoint values in your connection strings must be well-formed URIs, including https:// (recommended) or http://. Já que o armazenamento do Azure ainda não dá suporte a HTTPS para domínios personalizados, você deve especificar http:// para qualquer URI de ponto de extremidade que aponta para um domínio personalizado.Because Azure Storage does not yet support HTTPS for custom domains, you must specify http:// for any endpoint URI that points to a custom domain.

Criar uma cadeia de conexão com um sufixo de ponto de extremidadeCreate a connection string with an endpoint suffix

Para criar uma cadeia de conexão para um serviço de armazenamento em regiões ou instâncias com sufixos de ponto de extremidade diferentes, como para o Azure China 21Vianet ou Azure governamental, use o seguinte formato de cadeia de conexão.To create a connection string for a storage service in regions or instances with different endpoint suffixes, such as for Azure China 21Vianet or Azure Government, use the following connection string format. Indique se deseja se conectar à conta de armazenamento por meio de HTTP ou HTTPS (recomendado), substitua myAccountName pelo nome da sua conta de armazenamento, substitua myAccountKey pela chave de acesso da sua conta e substitua mySuffix pelo sufixo do URI:Indicate whether you want to connect to the storage account through HTTPS (recommended) or HTTP, replace myAccountName with the name of your storage account, replace myAccountKey with your account access key, and replace mySuffix with the URI suffix:

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

Aqui está um exemplo de cadeia de conexão para serviços de armazenamento na 21Vianet do Azure na China:Here's an example connection string for storage services in Azure China 21Vianet:

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

Analisando uma cadeia de conexãoParsing a connection string

A Biblioteca do Gerenciador de Configuração do Microsoft Azure para .NET fornece uma classe para analisar uma cadeia de conexão de um arquivo de configuração.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. A classe CloudConfigurationManager analisa as definições de configuração.The CloudConfigurationManager class parses configuration settings. Ele analisa as configurações para aplicativos cliente que são executados na área de trabalho, em um dispositivo móvel, em uma máquina virtual do Azure ou em um serviço de nuvem do Azure.It parses settings for client applications that run on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Para fazer referência ao pacote CloudConfigurationManager, adicione as seguintes diretivas using:To reference the CloudConfigurationManager package, add the following using directives:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

Aqui está um exemplo que mostra como recuperar uma cadeia de conexão de um arquivo de configuração:Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

O uso do Gerenciador de Configurações do Azure é opcional.Using the Azure Configuration Manager is optional. Você também pode usar uma API como a classe ConfigurationManagerdo .NET Framework.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Próximas etapasNext steps