Configurar cadeias de ligação do Storage do Azure

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

  • Conecte-se ao emulador de armazenamento Azurite.
  • Acesse uma conta de armazenamento no Azure.
  • Acesse recursos especificados no Azure por meio de uma assinatura de acesso compartilhado (SAS).

Para saber como ver as chaves de acesso da sua conta e copiar uma cadeia de ligação, consulte Gerir chaves de acesso da conta de armazenamento.

Proteja as 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. Tenha sempre o cuidado de proteger as suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança. O acesso à chave compartilhada concede ao usuário acesso total à configuração de uma conta de armazenamento e seus dados. O acesso a chaves partilhadas deve ser cuidadosamente limitado e monitorizado. Use tokens SAS com escopo limitado de acesso em cenários onde a autorização baseada em ID do Microsoft Entra não pode ser usada. Evite codificar chaves de acesso ou salvá-las em qualquer lugar em texto simples acessível a outras pessoas. Rode as chaves se acreditar que podem ter sido comprometidas.

Importante

A Microsoft recomenda o uso do Microsoft Entra ID para autorizar solicitações contra dados de blob, fila e 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 oferece segurança superior e facilidade de uso em relação à autorização de chave compartilhada. Para obter mais informações sobre como usar a autorização do Microsoft Entra de seus aplicativos, consulte Como autenticar aplicativos .NET com serviços do Azure. Para compartilhamentos de arquivos do Azure SMB, a Microsoft recomenda o uso da integração dos Serviços de Domínio Ative Directory (AD DS) local ou da autenticação Kerberos do Microsoft Entra.

Para impedir que os usuários acessem dados em sua conta de armazenamento com Chave Compartilhada, você pode não permitir a autorização de Chave Compartilhada para a conta de armazenamento. O acesso granular aos dados com o mínimo de privilégios necessários é recomendado como uma prática recomendada de segurança. A autorização baseada em ID do Microsoft Entra deve ser usada para cenários que oferecem suporte a OAuth. Kerberos ou SMTP devem ser usados para Arquivos do Azure sobre SMB. Para Arquivos do Azure sobre REST, os tokens SAS podem ser usados. O acesso à chave partilhada deve ser desativado se não for necessário para impedir a sua utilização inadvertida. Para obter mais informações, consulte Impedir autorização de chave compartilhada para uma conta de armazenamento do Azure.

Para proteger uma conta de Armazenamento do Azure com políticas de Acesso Condicional do Microsoft Entra, você deve não 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 de Chave Compartilhada relatada nos logs de diagnóstico, isso indica que o acesso confiável está sendo usado para acessar o armazenamento. Para obter mais detalhes, consulte Acesso confiável para recursos registrados em sua assinatura.

Armazenar uma cadeia de conexão

Seu aplicativo precisa acessar a cadeia de conexão em tempo de execução para autorizar solicitações feitas ao Armazenamento do Azure. Você tem várias opções para armazenar as chaves de acesso da conta ou a cadeia de conexão:

  • Você pode armazenar suas chaves de conta com segurança no Cofre de Chaves do Azure. Para obter mais informações, consulte Sobre as chaves de conta de armazenamento gerenciado do Azure Key Vault.
  • Você pode armazenar 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 da sua conta ou a cadeia de conexão em texto não criptografado representa um risco de segurança e não é recomendado. Armazene suas chaves de conta em um formato criptografado ou migre seus aplicativos para usar a autorização do Microsoft Entra para acesso à sua conta de armazenamento.

Configurar uma cadeia de conexão para o Azurite

O emulador suporta uma única conta fixa e uma chave de autenticação bem conhecida para autenticação de chave compartilhada. Essa conta e chave são as únicas credenciais de Chave Compartilhada permitidas para uso com o emulador. Eles são:

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

Nota

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

O emulador suporta conexão via HTTP apenas. No entanto, HTTPS é o protocolo recomendado para acessar recursos em uma conta de armazenamento do Azure de produção.

Conectar-se à conta do emulador usando o atalho

A maneira mais fácil de se conectar ao emulador a partir do seu aplicativo é configurar uma cadeia de conexão no arquivo de configuração do seu 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 você pode usar o atalho de um método que usa uma cadeia de conexão. Por exemplo, o construtor BlobContainerClient(String, String) usa uma cadeia de conexão.

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

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

Para obter mais informações sobre o Azurite, consulte Usar o emulador do Azurite para o desenvolvimento do Armazenamento do Azure local.

Configurar 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 seguinte formato. Indique se deseja se conectar à conta de armazenamento por HTTPS (recomendado) ou HTTP, substitua pelo nome da sua conta de armazenamento e substitua myAccountNamemyAccountKey pela chave de acesso da conta:

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

Por exemplo, sua cadeia de conexão pode ser semelhante a:

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

Embora o Armazenamento do Azure ofereça suporte a HTTP e HTTPS em uma cadeia de conexão, HTTPS é altamente recomendado.

Gorjeta

Você pode encontrar as cadeias de conexão da sua conta de armazenamento no portal do Azure. Navegue até Segurança + chaves de acesso à rede nas configurações da sua conta de armazenamento para ver as cadeias de conexão das chaves>de acesso primária e secundária.

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

Se você possui uma URL de assinatura de acesso compartilhado (SAS) que lhe concede acesso a recursos em uma conta de armazenamento, você 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 inclua 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 deva conter pelo menos um.

Nota

O uso de HTTPS com um SAS é recomendado como prática recomendada.

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

Exemplo de SAS de serviço

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

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 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 armazenamento de Blob e Arquivo. 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 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 de armazenamento explícito

Você pode especificar pontos de extremidade de serviço explícitos em sua cadeia de conexão em vez de usar os 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 de protocolo (HTTPS (recomendado) ou HTTP), no seguinte formato:

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

Um cenário em que você pode querer especificar um ponto de extremidade explícito é quando você mapeou seu ponto de extremidade de armazenamento de Blob para um domínio personalizado. Nesse caso, você pode especificar seu ponto de extremidade personalizado para armazenamento de Blob em sua cadeia de conexão. Opcionalmente, você pode especificar os pontos de extremidade padrão para os outros serviços se seu aplicativo usá-los.

Aqui está 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 ditam a forma de quaisquer URIs que são retornados ao seu código.

Se você mapeou um ponto de extremidade de armazenamento para um domínio personalizado e omitiu esse ponto de extremidade de uma cadeia de conexão, não poderá usar essa cadeia de conexão para acessar dados nesse serviço a partir do seu código.

Para obter mais informações 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 Blob do Azure.

Importante

Os 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 diferentes, como para o Microsoft Azure operado pela 21Vianet ou Azure Government, use o seguinte formato de cadeia de conexão. Indique se você deseja se conectar à conta de armazenamento por HTTPS (recomendado) ou HTTP, substitua pelo nome da sua conta de armazenamento, substitua pela chave de acesso da conta e substitua myAccountNamemyAccountKeymySuffix pelo sufixo URI:

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

Eis um exemplo de cadeia de ligação para serviços de armazenamento no Azure operados pela 21Vianet:

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

Autorizando o acesso com chave compartilhada

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

Próximos passos