Configurar o acesso de leitura anônima para contêineres e blobs

O Armazenamento do Microsoft Azure dá suporte ao acesso de leitura anônimo opcional para contêineres e blobs. Por padrão, o acesso anônimo aos seus dados nunca é permitido. A menos que você habilite explicitamente o acesso anônimo, todas as solicitações para um contêiner e seus blobs devem ser autorizadas. Quando você define a configuração do nível de acesso de um contêiner para permitir o acesso anônimo, os clientes podem ler os dados nesse contêiner sem autorizar a solicitação.

Aviso

Quando um contêiner é configurado para acesso anônimo, todos os clientes podem ler dados nesse contêiner. O acesso anônimo representa um possível risco à segurança; portanto, se o seu cenário não exigir isso, recomendamos que você corrija o acesso anônimo para a conta de armazenamento.

Este artigo descreve como configurar o acesso de leitura anônima para um contêiner e seus blobs. Para informações sobre como corrigir o acesso anônimo para obter a segurança ideal, confira um destes artigos:

Sobre o acesso de leitura anônimo

O acesso anônimo aos seus dados é sempre proibido por padrão. Há duas configurações separadas que afetam o acesso anônimo:

  1. Configuração de acesso anônimo para a conta de armazenamento. Uma conta de armazenamento do Azure Resource Manager oferece uma configuração para permitir ou não permitir o acesso anônimo para a conta. A Microsoft recomenda não permitir o acesso anônimo para suas contas de armazenamento para otimizar a segurança.

    Quando o acesso anônimo é permitido no nível da conta, os dados de blob não estão disponíveis para o acesso de leitura anônimo, a menos que o usuário execute a etapa adicional para definir explicitamente a configuração de acesso anônimo do contêiner.

  2. Defina a configuração de acesso anônimo do contêiner. Por padrão, a configuração de acesso anônimo de um contêiner é desabilitada, o que significa que a autorização é necessária para cada solicitação para o contêiner ou seus dados. Um usuário com as permissões apropriadas pode modificar a configuração de acesso anônimo de um contêiner para habilitar o acesso anônimo somente se o acesso anônimo for permitido para a conta de armazenamento.

A tabela a seguir resume como as duas configurações afetam o acesso anônimo para um contêiner.

O nível de acesso anônimo para o contêiner é definido como Privado (configuração padrão) O nível de acesso anônimo para o contêiner é definido como Contêiner O nível de acesso anônimo para o contêiner é definido como Blob
O acesso anônimo não é permitido para a conta de armazenamento Não há acesso anônimo aos contêineres na conta de armazenamento. Não há acesso anônimo aos contêineres na conta de armazenamento. A configuração da conta de armazenamento substitui a configuração do contêiner. Não há acesso anônimo aos contêineres na conta de armazenamento. A configuração da conta de armazenamento substitui a configuração do contêiner.
O acesso anônimo é permitido para a conta de armazenamento Não há acesso anônimo a esse contêiner (configuração padrão). O acesso anônimo é permitido para este contêiner e seus blobs. O acesso anônimo é permitido para blobs neste contêiner, mas não para o contêiner.

Quando o acesso anônimo é permitido para uma conta de armazenamento e configurado para um contêiner específico, uma solicitação para ler um blob nesse contêiner que é passado sem um cabeçalho Authorization é aceita pelo serviço e os dados do blob são retornados na resposta. No entanto, se a solicitação for enviada com um cabeçalho Authorization, o acesso anônimo na conta de armazenamento é ignorado, e a solicitação é autorizada com base nas credenciais fornecidas.

Permitir ou não o acesso de leitura anônima para uma conta de armazenamento

Quando o acesso anônimo é permitido para uma conta de armazenamento, um usuário com as permissões apropriadas pode modificar a configuração de acesso anônimo de um contêiner para permitir o acesso anônimo aos dados nesse contêiner. Os dados de blob nunca ficam disponíveis para acesso anônimo, a menos que o usuário execute a etapa adicional de configurar explicitamente a definição de acesso anônimo do contêiner.

Lembre-se de que o acesso anônimo a um contêiner está sempre desativado por padrão e deve ser configurado explicitamente para permitir solicitações anônimas. Independentemente da configuração na conta de armazenamento, seus dados nunca estarão disponíveis para acesso anônimo, a menos que um usuário com as permissões apropriadas execute essa etapa adicional para habilitar o acesso anônimo no contêiner.

Desautorizar o acesso anônimo para a conta de armazenamento substitui as configurações de acesso para todos os contêineres nessa conta de armazenamento, impedindo o acesso anônimo aos dados de blob nessa conta. Quando o acesso anônimo é proibido para a conta, não é possível definir a configuração de acesso de um contêiner para permitir o acesso anônimo, e quaisquer futuras solicitações anônimas para essa conta falharão. Antes de alterar essa configuração, certifique-se de entender o impacto nos aplicativos cliente que podem estar acessando dados na sua conta de armazenamento de forma anônima. Para obter mais informações, consulte Impedir o acesso de leitura anônimo aos contêineres e blobs.

Importante

Depois que o acesso anônimo for proibido para uma conta de armazenamento, os clientes que usam o desafio de portador anônimo descobrirão que o Armazenamento do Microsoft Azure retorna um erro 403 (Proibido) em vez de um erro 401 (Não autorizado). Recomendamos que você torne todos os contêineres privados para atenuar esse problema. Para obter mais informações sobre como modificar a configuração de acesso anônimo para contêineres, confira Definir o nível de acesso de um contêiner.

Permitir ou não permitir o acesso anônimo requer a versão 2019-04-01 ou posterior do provedor de recursos de Armazenamento do Microsoft Azure. Para saber mais, consulte API REST do provedor de recursos do Armazenamento do Azure.

Permissões para não permitir o acesso anônimo

Para definir a propriedade AllowBlobAnonymousAccess da conta de armazenamento, o usuário deve ter permissões para criar e gerenciar contas de armazenamento. As funções do RBAC do Azure (controle de acesso baseado em função do Azure) que fornecem essas permissões incluem a ação Microsoft.Storage/storageAccounts/write. As funções internas com essa ação incluem:

As atribuições de função devem ser delimitadas ao nível da conta de armazenamento ou superior para permitir que um usuário proíba o acesso anônimo para a conta de armazenamento. Para obter mais informações sobre o escopo da função, confira Entender o escopo do RBAC do Azure.

Tenha cuidado para restringir a atribuição dessas funções apenas aos usuários administrativos que exigem a capacidade de criar uma conta de armazenamento ou atualizar suas propriedades. Use o princípio de privilégios mínimos para garantir que os usuários tenham as menores permissões necessárias para realizar suas tarefas. Para obter mais informações sobre como gerenciar o acesso com o RBAC do Azure, consulte Melhores práticas para o RBAC do Azure.

Essas funções não fornecem acesso a dados em uma conta de armazenamento por meio do Microsoft Entra ID. No entanto, elas incluem a Microsoft.Storage/storageAccounts/listkeys/action, que concede acesso às chaves de acesso da conta. Com essa permissão, um usuário pode usar as chaves de acesso da conta para acessar todos os dados em uma conta de armazenamento.

O próprio Microsoft.Storage/storageAccounts/listkeys/action concede acesso a dados por meio das chaves de conta, mas não concede a um usuário a capacidade de alterar a propriedade AllowBlobPublicAccess para uma conta de armazenamento. Para usuários que precisam acessar dados em sua conta de armazenamento, mas não devem ter a capacidade de alterar a configuração da conta de armazenamento, considere atribuir funções como Colaborador de Dados de Blob de Armazenamento, Leitor de Dados de Blob de Armazenamento ou Acesso a Dados e Leitor.

Observação

O administrador de serviço de funções de administrador de assinatura clássica e Coadministrator incluem o equivalente da função de proprietário do Azure Resource Manager. A função de Proprietário inclui todas as ações, de modo que um usuário com uma dessas funções administrativas também pode criar contas de armazenamento e gerenciar configuração da conta. Para obter mais informações, veja Funções do Azure, funções do Microsoft Entra e funções de administrador da assinatura clássico.

Definir a propriedade AllowBlobPublicAccess da conta de armazenamento

Para permitir ou não o acesso anônimo a uma conta de armazenamento, defina a propriedade AllowBlobPublicAccess da conta. Essa propriedade está disponível para todas as contas de armazenamento criadas com o modelo de implantação do Azure Resource Manager. Para saber mais, confira Visão geral da conta de armazenamento.

Para permitir ou não o acesso anônimo a uma conta de armazenamento no portal do Azure, siga estas etapas:

  1. Navegue até sua conta de armazenamento no portal do Azure.

  2. Localize a definição de Configuração em Configurações.

  3. Defina Permitir acesso anônimo ao Blob como Habilitado ou Habilitado.

    Captura de tela mostrando como permitir ou negar acesso anônimo à conta

Observação

Não permitir o acesso anônimo para uma conta de armazenamento não afeta os sites estáticos hospedados nessa conta de armazenamento. O contêiner $Web sempre é acessível publicamente.

Depois de atualizar a configuração de acesso anônimo para a conta de armazenamento, pode levar até 30 segundos para que a alteração seja totalmente propagada.

Quando um contêiner é configurado para acesso anônimo, as solicitações de leitura de blobs nesse contêiner não precisam ser autorizadas. No entanto, todas as regras de firewall configuradas para a conta de armazenamento permanecem em vigor e bloqueiam o tráfego de acordo com as ACLs configuradas.

Permitir ou não permitir o acesso anônimo requer a versão 2019-04-01 ou posterior do provedor de recursos de Armazenamento do Microsoft Azure. Para saber mais, consulte API REST do provedor de recursos do Armazenamento do Azure.

Os exemplos nesta seção mostraram como ler a propriedade AllowBlobPublicAccess da conta de armazenamento para determinar se o acesso anônimo é permitido ou não no momento. Para saber como verificar se a configuração de acesso anônimo de uma conta está configurada para impedir o acesso anônimo, confira Corrigir o acesso anônimo da conta de armazenamento.

Definir o nível de acesso anônimo para um contêiner

Para conceder aos usuários anônimos acesso de leitura a um contêiner e seus blobs, primeiro permita o acesso anônimo para a conta de armazenamento e, em seguida, defina o nível de acesso anônimo do contêiner. Se o acesso anônimo for negado para a conta de armazenamento, não será possível configurar o acesso anônimo para um contêiner.

Cuidado

A Microsoft não recomenda permitir o acesso anônimo a dados de blob na sua conta de armazenamento.

Quando o acesso anônimo é permitido para uma conta de armazenamento, é possível configurar um contêiner com as seguintes permissões:

  • Sem acesso de leitura público: o contêiner e seus blobs podem ser acessados somente com solicitação autorizada. Essa é a opção padrão para todos os contêineres novos.
  • Acesso público de leitura somente para blobs: Os blobs dentro do contêiner podem ser lidos por solicitação anônima, mas os dados do contêiner não estão disponíveis anonimamente. Os clientes anônimos não podem enumerar os blobs dentro do contêiner.
  • Acesso de leitura público para contêiner e seus blobs: os dados de contêiner e de blob podem ser lidos por meio de solicitação anônima, exceto para configurações de permissões de contêiner e metadados de contêiner. Os clientes podem enumerar os blobs no contêiner por meio solicitação anônima, mas não podem enumerar os contêineres na conta de armazenamento.

Não é possível alterar o nível de acesso anônimo de um blob individual. O nível de acesso anônimo é definido apenas no nível do contêiner. É possível definir o nível de acesso anônimo do contêiner ao criar o contêiner ou atualizar a configuração em um contêiner existente.

Para atualizar o nível de acesso anônimo de um ou mais contêineres existentes no portal do Azure, siga estas etapas:

  1. Navegue até a página de visão geral da conta de armazenamento no portal do Azure.

  2. Em Armazenamento de dados na folha do menu, selecione Contêineres.

  3. Selecione os contêineres para os quais você deseja definir o nível de acesso público.

  4. Use o botão Alterar nível de acesso para exibir as configurações de acesso anônimo.

  5. Selecione o nível de acesso anônimo desejado na lista suspensa Nível de acesso anônimo e selecione o botão OK para aplicar a alteração aos contêineres selecionados.

    Captura de tela mostrando como definir o nível de acesso anônimo no portal.

Quando o acesso anônimo não é permitido para a conta de armazenamento, o nível de acesso anônimo de um contêiner não pode ser definido. Se você tentar definir o nível de acesso anônimo do contêiner, a configuração será desabilitada porque o acesso anônimo não é permitido para a conta.

Captura de tela mostrando que a definição do nível de acesso anônimo de um contêiner é bloqueada quando o acesso anônimo não é permitido para a conta

Verificar a configuração de acesso público para um conjunto de contêineres

É possível verificar quais contêineres em uma ou mais contas de armazenamento estão configurados para acesso anônimo, listando os contêineres e verificando a configuração de acesso anônimo. Essa abordagem é uma opção prática quando a conta de armazenamento não contém um grande número de contêineres ou quando você está verificando a configuração em um pequeno número de contas de armazenamento. No entanto, o desempenho pode ser prejudicado se você tentar enumerar um número grande de contêineres.

O exemplo a seguir usa o PowerShell para obter a configuração de acesso público para todos os contêineres em uma conta de armazenamento. Não deixe de substituir os valores de espaço reservado entre colchetes pelos seus valores:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Suporte a recursos

O suporte para esse recurso pode ser afetado ao habilitar o Data Lake Storage Gen2, o protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou o protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você tiver habilitado qualquer um desses recursos, consulte o Suporte a recursos de Armazenamento de Blobs nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Próximas etapas