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.
Importante
Para uma segurança ideal, a Microsoft recomenda o uso do Microsoft Entra ID com identidades gerenciadas para autorizar solicitações contra dados de blob, fila e tabela, sempre que possível. A autorização com ID do Microsoft Entra e identidades gerenciadas oferece segurança superior e facilidade de uso em relação à autorização de chave compartilhada. Para saber mais sobre identidades gerenciadas, consulte 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, consulte Autenticando aplicativos hospedados pelo Azure em recursos do Azure com .NET.
Para recursos hospedados fora do Azure, como aplicativos locais, você pode usar identidades gerenciadas por meio do Azure Arc. Por exemplo, os aplicativos executados em servidores habilitados para Azure Arc podem usar identidades gerenciadas para se conectar aos serviços do Azure. Para saber mais, consulte Autenticar em recursos do Azure com servidores habilitados para Azure Arc.
Para cenários em que as assinaturas de acesso compartilhado (SAS) são usadas, a Microsoft recomenda o uso de 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, consulte 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.
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 gerenciar e girar suas chaves com segurança. 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 usuário com escopo limitado de acesso em cenários em que 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
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 usando identidades gerenciadas 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 seu locatário do Microsoft Entra.
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 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 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, 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&sr=b&si=tutorial-policy-635959936145100803&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&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
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ê 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, 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 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;
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:
- Autorizar o acesso e conectar-se ao Armazenamento de Blob com .NET
- Autorize o acesso e conecte-se ao armazenamento de Blob com Java
- Autorize o acesso e conecte-se ao Armazenamento de Blob com JavaScript
- Autorize o acesso e conecte-se ao armazenamento de Blob com Python