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 risco potencial de segurança, então, se seu cenário não exigir, resolva 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 obter informações sobre como remediar o acesso anônimo para uma segurança ideal, consulte Remediar o acesso anônimo de leitura aos dados de blob.

Sobre o acesso anônimo de leitura

O acesso anônimo aos seus dados é sempre proibido por padrão. Duas configurações afetam o acesso anônimo:

  • 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.

  • 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 aos blobs neste contêiner é permitido, mas não ao próprio contêiner.

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

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

Quando você permite acesso anônimo 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 daquele contêiner. Os dados do blob nunca estão disponíveis para acesso anônimo, a menos que o usuário tome a medida extra de configurar explicitamente a configuração de acesso anônimo do contêiner.

O acesso anônimo a um contêiner está sempre desativado por padrão e deve ser configurado explicitamente para permitir requisições anônimas. Independentemente da configuração na conta de armazenamento, seus dados nunca ficam disponíveis para acesso anônimo a menos que um usuário com permissões apropriadas tome essa medida extra para habilitar o acesso anônimo no container.

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 você desautoriza o acesso anônimo para a conta, não pode configurar a configuração de acesso de um contêiner para permitir acesso anônimo, e quaisquer requisições anônimas futuras para essa conta falham. Antes de alterar essa configuração, certifique-se de entender o impacto nos aplicativos clientes que possam estar acessando dados na sua conta de armazenamento anonimamente. Para obter mais informações, consulte Impedir o acesso de leitura anônimo aos contêineres e blobs.

Importante

Depois que você desautoriza o acesso anônimo para uma conta de armazenamento, os clientes que usam o desafio do portador anônimo descobrem que o Armazenamento do Azure retorna um erro 403 (Proibido) em vez de um erro 401 (Não autorizado). Deixe todos os contêineres privados para mitigar 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 AllowBlobPublicAccess para a conta de armazenamento, você precisa de 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 para esta 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.

Restringa a atribuição desses papéis apenas a usuários administrativos que precisem da capacidade de criar uma conta de armazenamento ou atualizar suas propriedades. Use o princípio do menor privilégio para garantir que os usuários tenham o menor número possível de 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. Ao usar essa permissão, o usuário pode usar as chaves de acesso da conta para acessar todos os dados de uma conta de armazenamento.

A Microsoft. Storage/storageAccounts/listkeys/action concede acesso aos dados via as chaves da conta, mas não concede ao usuário a possibilidade 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

As funções clássicas de administrador da assinatura, Service Administrator e Co-Administrator, incluem o equivalente à função Owner 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 que você cria 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. Acesse sua conta de armazenamento no portal do Azure.

  2. Encontre a Configuração em Configurações.

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

    Captura de tela de como permitir ou desautorizar o acesso anônimo para uma conta de armazenamento.

Observação

Proibir acesso anônimo para uma conta de armazenamento não afeta nenhum site estático hospedado nessa conta de armazenamento. O contêiner $Web sempre é acessível publicamente.

Depois que você atualiza a configuração de acesso anônimo para a conta de armazenamento, pode levar até 30 segundos até que a mudança 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, quaisquer regras de firewall que você configure para a conta de armazenamento permanecem em vigor e bloqueiam o tráfego alinhado com as ACLs configuradas.

Os exemplos a seguir mostram como ler a propriedade AllowBlobPublicAccess para a conta de armazenamento para determinar se o acesso anônimo está atualmente permitido ou não. 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. Antes de começar, certifique-se de que o acesso anônimo é permitido no nível da conta (através da propriedade AllowBlobPublicAccess ) e que você tem permissão de escrita no container. Se o acesso anônimo for negado para a conta de armazenamento, você não pode configurar o acesso anônimo para um container.

Cuidado

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

Quando você permite acesso anônimo para uma conta de armazenamento, pode configurar um contêiner com as seguintes permissões:

  • Não permite acesso público à leitura (portal: Privado; PowerShell: Desligado): O contêiner e seus blobs só podem ser acessados com uma solicitação autorizada. Essa é a opção padrão para todos os contêineres novos.
  • Acesso público de leitura apenas para blobs (portal e PowerShell: Blob): Blobs dentro do container podem ser lidos por solicitação anônima, mas os dados do container não estão disponíveis anonimamente. Os clientes anônimos não podem enumerar os blobs dentro do contêiner.
  • Acesso público de leitura para contêineres e seus blobs (portal e PowerShell: Container): Dados de contêiner e blobs podem ser lidos por solicitação anônima, exceto para configurações de permissão de contêiner e metadados de contêiner. Os clientes podem enumerar blobs dentro do container por solicitação anônima, mas não podem enumerar containers dentro da conta de armazenamento.

Não é possível alterar o nível de acesso anônimo de um blob individual. Defina o nível de acesso anônimo apenas no nível do container. É 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. Acesse a visão geral da sua 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. Selecione Alterar nível de acesso para abrir 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 OK para aplicar a alteração aos contêineres selecionados.

    Captura de tela de como definir o nível de acesso anônimo para um contêiner no portal.

  6. Para verificar a alteração, reabra Alterar nível de acesso e confirme que Nível de acesso anônimo exibe o valor selecionado.

Quando o acesso anônimo é proibido para a conta de armazenamento, você não pode definir o nível anônimo de um container. 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 da configuração de nível de acesso anônimo de um contêiner bloqueada quando o acesso anônimo é impedido para a conta.

Verificar a configuração de acesso anônimo para um conjunto de contêineres

Você pode verificar quais contêineres em uma ou mais contas de armazenamento estão configurados para acesso anônimo listando os contêineres e marcando 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 grande número de contêineres.

O exemplo a seguir usa o PowerShell para obter a configuração de acesso anônimo para todos os contêineres em uma conta de armazenamento. Lembre-se de substituir os valores de marcador entre colchetes pelos seus próprios 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 funcionalidades

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