Partilhar via


Configurar as cadeias de conexão do Armazenamento do Azure

Uma cadeia de ligação inclui a informação de autorização necessária para a sua aplicação aceder a dados numa conta Armazenamento do Azure em tempo de execução, utilizando a autorização Shared Key. Você pode configurar cadeias de conexão para:

  • Conecte-se ao emulador de armazenamento Azurite.
  • Aceda a uma conta de armazenamento no Azure.
  • Aceder a recursos especificados no Azure através de uma assinatura de acesso partilhado (SAS).

Para aprender a visualizar as chaves de acesso à sua conta e copiar uma cadeia de ligação, consulte Gerenciar chaves de acesso à conta de armazenamento.

Importante

Para garantir a máxima segurança, a Microsoft recomenda o uso do Microsoft Entra ID com identidades geridas para autorizar pedidos contra dados de blobs, filas e tabelas, sempre que possível. A autorização com Microsoft Entra ID e identidades geridas oferece segurança superior e facilidade de utilização em relação à autorização por Chave Partilhada. Para saber mais sobre identidades geridas, consulte O que são identidades geridas para Azure recursos. Para um exemplo de como ativar e usar uma identidade gerida para uma aplicação .NET, veja Autenticação de aplicações Azure-alojadas para Azure recursos com .NET.

Para recursos alojados fora do Azure, como aplicações on-premises, pode usar identidades geridas através do Azure Arc. Por exemplo, aplicações a correr em servidores com Azure Arc podem usar identidades geridas para se ligar a serviços Azure. Para saber mais, consulte Autenticar em recursos do Azure com servidores habilitados para o Azure Arc.

Para cenários em que são usadas assinaturas de acesso partilhado (SAS), a Microsoft recomenda o uso de um SAS de delegação de utilizador. Um SAS de delegação de utilizador é protegido com credenciais Microsoft Entra em vez da chave da conta. Para saber mais sobre assinaturas de acesso compartilhado, consulte Conceder acesso limitado a dados com assinaturas de acesso compartilhado. Para um exemplo de como criar e usar um SAS de delegação de utilizador com .NET, veja Criar um SAS de delegação de utilizador para um blob com .NET.

Proteja as suas chaves de acesso

As chaves de acesso da conta de armazenamento fornecem acesso total aos dados da conta de armazenamento e a capacidade de gerar tokens SAS. Tenha sempre o cuidado de proteger as suas chaves de acesso. Use o Azure Key Vault para gerir e rodar as suas chaves de forma segura. O acesso à chave compartilhada concede ao usuário acesso total aos dados de uma conta de armazenamento. O acesso às chaves partilhadas deve ser cuidadosamente limitado e monitorizado. Use tokens SAS de delegação de utilizadores com alcance limitado em cenários onde a autorização baseada no Microsoft Entra ID não possa ser utilizada. Evite codificar chaves de acesso ou salvá-las em qualquer lugar em texto simples acessível a outras pessoas. Rode as suas chaves se acreditar que possam ter sido comprometidas.

Importante

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 Microsoft Entra ID, utilizando identidades geridas, deve ser usada para cenários que suportem OAuth. O Kerberos deve ser usado para Ficheiros do Azure over SMB. Para Ficheiros do Azure sobre REST, podem ser usados tokens SAS. O acesso à chave partilhada deve ser desativado se não for necessário para impedir a sua utilização inadvertida. Para mais informações, consulte Impedir a autorização de Chave Partilhada para uma conta Armazenamento do Azure.

Para proteger uma conta Armazenamento do Azure com políticas Acesso Condicional do Microsoft Entra, deve impedir a autorização de Chave Partilhada 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 mais detalhes, consulte Acesso Confiável para recursos registados no seu Microsoft Entra tenant.

Armazenar uma cadeia de ligação

A sua aplicação precisa de aceder à cadeia de ligação em tempo de execução para autorizar pedidos feitos ao Armazenamento do Azure. Tem várias opções para armazenar as chaves de acesso à sua conta ou a string de conexão:

  • A Microsoft recomenda o uso do Microsoft Entra ID para autorizar o acesso ao Armazenamento do Azure em vez de chaves de conta. Se tiver de usar chaves de conta, guarde-as de forma segura no Azure Key Vault. Para mais informações, consulte Autorizar o acesso a dados em Armazenamento do Azure.
  • Podes guardar a tua cadeia de ligação numa variável de ambiente.
  • Uma aplicação pode armazenar o cadeia de ligação num ficheiro app.config ou web.config. Adicione a cadeia de ligação à secção AppSettings nestes ficheiros.

Aviso

Armazenar as chaves de acesso à sua conta ou cadeia de ligação em texto claro representa um risco de segurança e não é recomendado. Armazene as suas chaves de conta num formato encriptado ou migre as suas aplicações para usar a autorização Microsoft Entra para aceder à sua conta de armazenamento.

Configure uma cadeia de ligaçã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 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 suporta conexão via HTTP apenas. No entanto, o HTTPS é o protocolo recomendado para aceder a recursos numa conta de armazenamento Azure de produção.

Conectar-se à conta do emulador usando o atalho

A forma mais fácil de se ligar ao emulador a partir da sua aplicação é configurar um cadeia de ligação no ficheiro de configuração da sua aplicação que faça referência ao atalho UseDevelopmentStorage=true. O atalho é equivalente à cadeia de ligação completa do emulador, que especifica o nome da conta, a chave da conta e os endpoints do emulador para cada um dos serviços do 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 seguinte excerto de código .NET mostra como pode usar o atalho de um método que aceita uma cadeia de ligação. Por exemplo, o construtor BlobContainerClient(String, String) toma uma cadeia de ligaçã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 mais informações sobre o Azurite, veja Use o emulador Azurite para desenvolvimento de Armazenamento do Azure local.

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

Para criar uma cadeia de ligação para a sua conta de armazenamento no Azure, utilize o seguinte formato. Indique se deseja se conectar à conta de armazenamento por HTTPS (recomendado) ou HTTP, substitua myAccountName pelo nome da sua conta de armazenamento e substitua myAccountKey pela chave de acesso da conta:

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

Por exemplo, a sua cadeia de ligação pode parecer semelhante a:

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

Embora Armazenamento do Azure suporte tanto HTTP como HTTPS num cadeia de ligação, HTTPS é altamente recomendado.

Gorjeta

Pode encontrar as cadeias de ligação da sua conta de armazenamento no portal 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.

Crie uma cadeia de ligação usando uma assinatura de acesso partilhada

Se possuir um URL de assinatura de acesso partilhado (SAS) que lhe conceda acesso a recursos numa conta de armazenamento, pode usar o SAS numa cadeia de ligação. Como o SAS contém a informação necessária para autenticar o pedido, uma cadeia de ligação com um SAS fornece o protocolo, o endpoint do serviço e as credenciais necessárias para aceder ao recurso.

Para criar uma cadeia de ligação que inclua uma assinatura de acesso partilhada, especifique a string no seguinte formato:

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

Cada endpoint de serviço é opcional, embora a cadeia de ligação deva conter pelo menos uma.

Nota

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

Se estiver a especificar um SAS numa cadeia de ligação num ficheiro de configuração, pode ser necessário codificar caracteres especiais na URL.

Exemplo de serviço SAS

Aqui está um exemplo de uma cadeia de conexão que inclui um SAS de serviço para 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 ligaçã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 SAS de conta para armazenamento de Blob e Ficheiros. Note que se especificam os pontos de extremidade para ambos os serviços:

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 ligaçã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

Crie uma cadeia de conexão para um endpoint de armazenamento explícito

Pode especificar endpoints de serviço explícitos na sua cadeia de ligação em vez de usar os endpoints padrão. Para criar uma cadeia de ligação que especifique um endpoint explícito, especifique o endpoint completo do serviço para cada serviço, incluindo a especificação do 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, pode especificar o seu endpoint personalizado para armazenamento de Blobs na sua cadeia de conexão. Pode, opcionalmente, especificar os endpoints padrão para os outros serviços caso a sua aplicação os utilize.

Aqui está um exemplo de uma cadeia de ligação que especifica um ponto final 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 final numa cadeia de conexão são usados para construir os URIs de pedido para os serviços de armazenamento e determinar a forma de quaisquer URIs que sejam devolvidos ao seu código.

Se mapeaste um endpoint de armazenamento para um domínio personalizado e omitiste esse endpoint de uma cadeia de ligação, então não conseguirás usar essa cadeia de ligação para aceder a dados desse serviço a partir do teu código.

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

Crie uma cadeia de ligação com um sufixo endpoint

Para criar uma cadeia de ligação para um serviço de armazenamento em regiões ou instâncias com sufixos de endpoint diferentes, como no Microsoft Azure operado pela 21Vianet ou Azure Government, use o seguinte formato de cadeia de ligação. Indique se você deseja se conectar à conta de armazenamento por HTTPS (recomendado) ou HTTP, substitua myAccountName pelo nome da sua conta de armazenamento, substitua myAccountKey pela chave de acesso da conta e substitua mySuffix pelo sufixo URI:

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

Aqui está um exemplo de cadeia de ligação para serviços de armazenamento no Azure operados pelo 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 ligação, consulte um dos seguintes artigos:

Próximos passos