Compartilhar via


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.

Importante

Para otimizar a segurança, a Microsoft recomenda o uso do Microsoft Entra ID com identidades gerenciadas para autorizar solicitações relativas a dados de blobs, filas de espera e tabelas sempre que possível. A autorização com o Microsoft Entra ID e identidades gerenciadas oferece ima segurança e facilidade de uso de qualidade superior à da autorização por Chave Compartilhada. Para saber mais sobre identidades gerenciadas, confira O que são identidades gerenciadas para recursos do Azure. Para obter um exemplo de como habilitar e usar uma identidade gerenciada para um aplicativo .NET, confira Como autenticar aplicativos hospedados no Azure em recursos do Azure com o .NET.

Para recursos hospedados fora do Azure, como aplicativos locais, você pode usar identidades gerenciadas por meio do Azure Arc. Por exemplo, os aplicativos sendo executados em servidores habilitados para Azure Arc podem usar identidades gerenciadas para se conectar aos serviços do Azure. Para saber mais, confira Autenticar-se nos recursos do Azure com servidores habilitados para Azure Arc.

Para os cenários em que as assinaturas de acesso compartilhado (SAS) são utilizadas, a Microsoft recomenda o uso de uma SAS de delegação de usuário. Uma SAS de delegação de usuário é protegida por 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 o .NET, confira Criar uma SAS de delegação de usuário para um blob com o .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. Utilize o 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 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

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

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