Configurar cadeias de conexão do Armazenamento do Azure

Uma cadeia de conexão inclui as informações de autorização necessárias para o seu aplicativo acessar os dados em uma conta de Armazenamento do Azure no runtime usando autorização de Chave Compartilhada. Você pode configurar cadeias de conexão para:

  • Conecte-se ao emulador de armazenamento do Azure.
  • Acesse uma conta de armazenamento no Azure.
  • Acessar recursos especificados no Azure por uma SAS (Assinatura de Acesso Compartilhado).

Para saber como exibir as chaves de acesso da conta e copiar uma cadeia de conexão, consulte Gerenciar chaves de acesso da conta de armazenamento.

Proteger suas chaves de acesso

As chaves de acesso da conta de armazenamento fornecem acesso total à configuração de uma conta de armazenamento, bem como aos dados. Sempre tenha cuidado para proteger as suas chaves de acesso. Utilize o Azure Key Vault para gerenciar e girar suas chaves com segurança. O acesso à chave compartilhada concede a um usuário acesso completo à configuração de uma conta de armazenamento e seus dados. O acesso a chaves compartilhadas deve ser cuidadosamente limitado e monitorado. Use tokens SAS com escopo limitado de acesso em cenários, em que a autorização baseada no Microsoft Entra ID não pode ser usada. Evite fazer hard-coding das chaves de acesso ou salvá-las em qualquer lugar como texto simples que seja acessível a outras pessoas. Gire suas chaves se achar que elas foram comprometidas.

Importante

A Microsoft recomenda usar o Microsoft Entra ID para autorizar solicitações em dados de fila, de blob e de tabela, se possível, em vez de usar as chaves de conta (autorização de chave compartilhada). A autorização com o Microsoft Entra ID fornece segurança superior e facilidade de uso em relação à autorização da chave compartilhada. Para obter mais informações sobre como usar a autorização do Microsoft Entra dos aplicativos, confira Como autenticar aplicativos do .NET com os serviços do Azure. Para compartilhamentos de arquivos do Azure do SMB, a Microsoft recomenda usar a integração do AD DS (Serviços de Domínio do Active Directory) local ou a autenticação Kerberos do Microsoft Entra.

Para impedir que os usuários acessem dados em sua conta de armazenamento com a Chave Compartilhada, você pode cancelar a autorização da Chave Compartilhada para a conta de armazenamento. O acesso granular a dados com privilégios mínimos necessários é recomendado como uma prática recomendada de segurança. A autorização baseada no Microsoft Entra ID deve ser usada para cenários que dão suporte ao OAuth. O Kerberos ou o SMTP deve ser usado para Arquivos do Azure via SMB. Para Arquivos do Azure via REST, podem ser usados os tokens SAS. O acesso de chave compartilhada deve ser desabilitado se não for necessário para impedir seu uso inadvertido. Para obter mais informações, veja Impedir a autorização de chave compartilhada para uma conta do Armazenamento do Microsoft Azure.

Para proteger uma conta de Armazenamento do Microsoft Azure com as políticas de Acesso Condicional do Microsoft Entra, você não deve permitir a autorização de Chave Compartilhada para a conta de armazenamento.

Se você desabilitou o acesso à chave compartilhada e está vendo a autorização da Chave Compartilhada relatada nos logs de diagnóstico, isso indica que o acesso confiável está sendo utilizado para acessar o armazenamento. Para obter mais detalhes, confira Acesso confiável aos recursos registrados em sua assinatura.

Armazenar uma cadeia de conexão

Seu aplicativo precisara acessar a cadeia de conexão no runtime para autorizar as solicitações feitas para o Armazenamento do Microsoft Azure. Você tem várias opções diferentes para armazenar as chaves de acesso à sua conta ou a cadeia de conexão:

  • Armazene suas chaves de conta com segurança no Azure Key Vault. Para obter mais informações, confira Sobre as chaves de conta de armazenamento gerenciadas do Azure Key Vault.
  • Você pode armazenar a sua cadeia de conexão em uma variável de ambiente.
  • Um aplicativo pode armazenar a cadeia de conexão em um arquivo app.config ou web.config. Adicione a cadeia de conexão à seção AppSettings nesses arquivos.

Aviso

Armazenar as chaves de acesso à conta ou a cadeia de conexão em texto simples apresenta um risco de segurança e não é recomendado. Armazene as chaves de conta em um formato criptografado ou migre os aplicativos para usar a autorização do Microsoft Entra para acesso à conta de armazenamento.

Configurar uma cadeia de conexão para Azurite

O emulador dá suporte a uma única conta fixa e uma chave de autenticação conhecida para a autenticação da Chave Compartilhada. Essa conta e a chave são as únicas credenciais de Chave Compartilhada permitidas para uso com o emulador. São eles:

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

Observação

A chave de autenticação suportada pelo emulador destina-se somente para testar a funcionalidade do seu código de autenticação de cliente. Ela não serve para fins de segurança. Não é possível usar sua conta de armazenamento de produção e a chave com o emulador. Você não deve usar a conta de desenvolvimento com dados de produção.

O emulador oferece suporte à conexão somente via HTTP. No entanto, o HTTPS é o protocolo recomendado para acessar os recursos em uma conta de armazenamento de produção do Azure.

Conectar-se à conta do emulador usando o atalho

A maneira mais fácil de conectar o emulador do seu aplicativo é configurar uma cadeia de conexão no arquivo de configuração do aplicativo que faz referência ao atalho UseDevelopmentStorage=true. O atalho é equivalente à cadeia de conexão completa para o emulador, que especifica o nome da conta, a chave da conta e os pontos de extremidade do emulador para cada um dos serviços de Armazenamento do 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;

O trecho de código .NET a seguir mostra como é possível usar o atalho de um método que usa uma cadeia de conexão. Por exemplo, o construtor BlobContainerClient (cadeia de caracteres, Cadeia de caracteres) usa uma cadeia de conexão.

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

Certifique-se de que o emulador está em execução antes de chamar o código no trecho.

Para saber mais sobre o Azurite, confira Usar o emulador Azurite para o desenvolvimento local do Armazenamento do Microsoft Azure.

Configure uma cadeia de conexão para uma conta de Armazenamento do Azure

Para criar uma cadeia de conexão para sua conta de Armazenamento do Azure, use o formato de cadeia de conexão a seguir. 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:

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

Por exemplo, a cadeia de conexão pode parecer com o seguinte:

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.

Dica

Você pode encontrar as cadeias de conexão da conta de armazenamento no Portal do Azure. Navegue até Segurança + rede>Chaves de acesso nas configurações da sua conta de armazenamento para visualizar as cadeias de conexão tanto para a chave de acesso primária quanto para a secundária.

Criar uma cadeia de conexão usando uma assinatura de acesso compartilhado

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

Para criar uma cadeia de conexão que inclui uma assinatura de acesso compartilhado, especifique a cadeia de caracteres no seguinte formato:

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.

Observação

Usar HTTPS com uma SAS é uma prática recomendada.

Se você estiver especificando uma SAS em uma cadeia de conexão em um arquivo de configuração, precisará codificar caracteres especiais na URL.

Exemplo de SAS de serviço

Aqui está um exemplo de uma cadeia de conexão que inclui um serviço SAS para o Armazenamento de Blobs:

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 a codificação de 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

Exemplo de SAS de conta

Aqui está um exemplo de uma cadeia de conexão que inclui uma conta SAS para o Armazenamento de Blobs e de Arquivos: Observe que os pontos de extremidade para ambos os serviços são especificados:

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:

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 armazenamento

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. 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:

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. Nesse caso, você pode especificar o ponto de extremidade personalizado para o armazenamento de Blobs em sua cadeia de conexão. Opcionalmente, você poderá especificar os pontos de extremidade padrão para os outros serviços se eles forem usados pelo seu aplicativo.

Este é um exemplo de uma cadeia de conexão que especifica um ponto de extremidade explícito para o serviço Blob:

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

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

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.

Para saber mais sobre como configurar um domínio personalizado para o armazenamento do Azure, consulte Mapear um domínio personalizado para um ponto de extremidade do armazenamento de Blobs do Azure.

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://.

Criar uma cadeia de conexão com um sufixo de ponto de extremidade

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 diferente, como para o Microsoft Azure operado pela 21Vianet ou Azure Governamental, use o formato de cadeia de conexão a seguir. 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:

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

Aqui está um exemplo de cadeia de conexão para serviços de armazenamento no Azure operado pela 21Vianet:

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

Autorizando o acesso com a Chave Compartilhada

Para saber como autorizar o acesso ao Armazenamento do Microsoft Azure com a chave da conta ou com uma cadeia de conexão, confira um dos seguintes artigos:

Próximas etapas