Compartilhar via


Configurar cadeias de conexão Armazenamento do Azure

Um cadeia de conexão inclui as informações de autorização necessárias para que seu aplicativo acesse dados em uma conta Armazenamento do Azure em runtime usando a 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.
  • Acesse os recursos especificados no Azure por meio de uma SAS (assinatura de acesso compartilhado).

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

Importante

Para uma segurança máxima, a Microsoft recomenda usar o Microsoft Entra ID com identidades gerenciadas para autorizar solicitações referentes a dados de blob, fila e tabela, sempre que possível. A autorização com Microsoft Entra ID e identidades gerenciadas fornece segurança superior e facilidade de uso sobre a autorização de Chave Compartilhada. Para saber mais sobre identidades gerenciadas, consulte O que são identidades gerenciadas para recursos Azure. Para obter um exemplo de como habilitar e usar uma identidade gerenciada para um aplicativo .NET, consulte Authenticating Azure-hosted apps to Azure resources with .NET.

Para recursos hospedados fora de Azure, como aplicativos locais, você pode usar identidades gerenciadas por meio de Azure Arc. Por exemplo, aplicativos em execução em servidores habilitados para Azure Arc podem usar identidades gerenciadas para se conectar a serviços de Azure. Para saber mais, consulte Autenticar em recursos do Azure com servidores habilitados pelo Azure Arc.

Para cenários em que as SAS (assinaturas de acesso compartilhado) são usadas, Microsoft recomenda usar uma SAS de delegação de usuário. Uma SAS de delegação de usuário é protegida com credenciais do Microsoft Entra, em vez da chave da conta. Para saber mais sobre assinaturas de acesso compartilhado, confira Conceder acesso limitado a dados com assinaturas de acesso compartilhado. Para obter um exemplo de como criar e usar uma SAS de delegação de usuário com .NET, consulte Criar uma SAS de delegação de usuário para um blob com .NET.

Proteger suas chaves de acesso

As chaves de acesso à conta de armazenamento fornecem acesso total aos dados da conta de armazenamento e a capacidade de gerar tokens SAS. Sempre tenha cuidado para proteger as suas chaves de acesso. Use Azure Key Vault para gerenciar e girar suas chaves com segurança. O acesso à chave compartilhada concede a um usuário acesso total aos dados de uma conta de armazenamento. O acesso a chaves compartilhadas deve ser cuidadosamente limitado e monitorado. Use tokens de SAS de delegação de usuário com escopo de acesso limitado nos cenários em que uma autorização baseada no Microsoft Entra ID não pode ser usada. Evite codificar rigidamente as chaves de acesso ou salvá-las em qualquer lugar como texto simples acessível a outras pessoas. Rotacione suas chaves se acreditar que elas possam ter sido comprometidas.

Importante

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. Uma autorização baseada no Microsoft Entra ID usando identidades gerenciadas deve ser usada para os cenários compatíveis com OAuth. Kerberos deve ser usado para Arquivos do Azure sobre SMB. Para Arquivos do Azure em REST, os tokens SAS podem ser usados. O acesso de chave compartilhada deve ser desabilitado se não for necessário para impedir seu uso inadvertido. Para obter mais informações, consulte Prevenir a autorização de chave compartilhada para uma conta de Armazenamento do Azure.

Para proteger uma conta 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 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, consulte Acesso confiável para recursos registrados em seu locatário do Microsoft Entra.

Armazenar uma cadeia de conexão

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

  • Microsoft recomenda usar Microsoft Entra ID para autorizar o acesso a Armazenamento do Azure em vez de chaves de conta. Se você precisar usar chaves de conta, armazene-as com segurança em Azure Key Vault. Para obter mais informações, consulte Authorize o acesso aos dados em Armazenamento do Azure.
  • Você pode armazenar seu 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 conta ou cadeia de conexão em texto claro apresenta um risco de segurança e não é recomendado. Armazene suas chaves de conta em um formato criptografado ou migre seus aplicativos para usar Microsoft Entra autorização para acesso à sua 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, HTTPS é o protocolo recomendado para acessar recursos em uma conta de armazenamento de Azure de produção.

Conectar-se à conta do emulador usando o atalho

A maneira mais fácil de se conectar ao emulador de seu aplicativo é configurar um 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 você pode usar o atalho de um método que usa uma cadeia de conexão. Por exemplo, o construtor BlobContainerClient(String, String) usa um 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 obter mais informações sobre o Azurite, consulte Use o emulador do Azurite para desenvolvimento de Armazenamento do Azure local.

Configurar uma cadeia de conexão para uma conta de armazenamento do Azure

Para criar um cadeia de conexão para sua conta de armazenamento Azure, use o formato 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, sua cadeia de conexão pode ser semelhante a:

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

Embora Armazenamento do Azure dê suporte a HTTP e HTTPS em um cadeia de conexão, HTTPS é altamente recomendado.

Dica

Você pode encontrar as cadeias de conexão da conta de armazenamento no Azure portal. 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 um cadeia de conexão usando uma assinatura de acesso compartilhado

Se você possui uma URL SAS (assinatura de acesso compartilhado) que 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 SAS fornece o protocolo, o ponto de extremidade do serviço e as credenciais necessárias para acessar o recurso.

Para criar um 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 ponto.

Observação

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

Se você estiver especificando uma SAS em um 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 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 do mesmo 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 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 do mesmo 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 string de conexão para um endpoint de armazenamento explícito

Você pode especificar pontos de extremidade de serviço explícitos em seu cadeia de conexão em vez de usar os pontos de extremidade padrão. Para criar um cadeia de conexão que especifica 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 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 seu ponto de extremidade personalizado para 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.

Aqui está um exemplo de um 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 um cadeia de conexão, você não poderá usar esse cadeia de conexão para acessar dados nesse serviço do seu código.

Para obter mais informações sobre como configurar um domínio personalizado para o Armazenamento do Azure, consulte Mapeie um domínio personalizado para um ponto de extremidade do Armazenamento de Blobs do Azure.

Importante

Os valores de ponto de extremidade do serviço nas 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 diferentes sufixos de endpoints, como no caso do Microsoft Azure operado pela 21Vianet ou pelo Azure Governamental, use o seguinte formato de cadeia de conexão. 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;

Veja uma cadeia de conexão de exemplo para serviço 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 a Armazenamento do Azure com a chave da conta ou com uma cadeia de conexão, consulte um dos seguintes artigos:

Próximas etapas