Configurar o acesso de leitura anónimo para contentores e blobs

O Armazenamento do Azure dá suporte ao acesso de leitura anônimo opcional para contêineres e blobs. Por predefiniçã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 de nível de acesso de um contêiner para permitir acesso anônimo, os clientes podem ler dados nesse contêiner sem autorizar a solicitação.

Aviso

Quando um contêiner é configurado para acesso anônimo, qualquer cliente pode ler dados nesse contêiner. O acesso anónimo representa um risco potencial de segurança, por isso, se o seu cenário não o exigir, resolva o acesso anónimo à conta de armazenamento.

Este artigo descreve como configurar o acesso de leitura anônimo para um contêiner e seus blobs. Para informações sobre como remediar o acesso anónimo para uma segurança ótima, veja Remediar o acesso anónimo de leitura a dados de blobs.

Sobre o acesso anónimo de leitura

O acesso anónimo aos seus dados é sempre proibido por defeito. Duas definiçõ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 acesso anônimo para a conta. A Microsoft recomenda não permitir o acesso anônimo para suas contas de armazenamento para uma segurança ideal.

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

  • Configure 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 ao 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 juntas 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 Nenhum acesso anônimo a qualquer contêiner na conta de armazenamento. Nenhum acesso anônimo a qualquer contêiner na conta de armazenamento. A configuração da conta de armazenamento substitui a configuração do contêiner. Nenhum acesso anônimo a qualquer contêiner 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 Nenhum acesso anônimo a este contêiner (configuração padrão). O acesso anônimo é permitido a esse contêiner e seus blobs. O acesso anônimo é permitido para blobs nesse contêiner, mas não para o contêiner em si.

Quando o acesso anónimo é permitido para uma conta de armazenamento e configurado para um contentor específico, o serviço aceita um pedido para ler um blob nesse contentor, apresentado sem um cabeçalho Authorization, e devolve os dados do blob na resposta. No entanto, se o pedido for passado com um Authorization cabeçalho, o serviço ignora o acesso anónimo à conta de armazenamento e autoriza o pedido com base nas credenciais fornecidas.

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

Quando permite o acesso anónimo a uma conta de armazenamento, um utilizador com as permissões adequadas pode modificar a definição de acesso anónimo de um contentor para permitir o acesso anónimo aos dados desse contentor. Os dados do blob nunca estão disponíveis para acesso anónimo, a menos que o utilizador dê o passo extra de configurar explicitamente a definição de acesso anónimo do contentor.

O acesso anónimo a um contentor está sempre desligado por defeito e deve estar explicitamente configurado para permitir pedidos anónimos. Independentemente da configuração na conta de armazenamento, os seus dados nunca estão disponíveis para acesso anónimo a menos que um utilizador com permissões adequadas tome esta medida extra para permitir o acesso anónimo ao contentor.

Desativar o acesso anónimo na conta de armazenamento sobrepõe-se às definições de acesso de todos os contentores dessa conta de armazenamento, impedindo o acesso anónimo aos dados de blobs nessa conta. Quando despermite o acesso anónimo à conta, não pode configurar a definição de acesso de um contentor para permitir o acesso anónimo, e quaisquer pedidos anónimos futuros a essa conta falham. Antes de alterar esta definição, certifique-se de que compreende o impacto nas aplicações clientes que possam estar a aceder anonimamente aos dados da sua conta de armazenamento. Para obter mais informações, consulte Impedir acesso de leitura anônima a contêineres e blobs.

Importante

Depois de não permitir o acesso anónimo a uma conta de armazenamento, os clientes que utilizam o desafio do portador anónimo descobrem que o Armazenamento do Azure devolve um erro 403 (Proibido) em vez de um erro 401 (Não autorizado). Torne privados todos os contentores para mitigar este problema. Para obter mais informações sobre como modificar a configuração de acesso anônimo para contêineres, consulte Definir o nível de acesso para um contêiner.

Permitir ou não permitir acesso anônimo requer a versão 2019-04-01 ou posterior do provedor de recursos de Armazenamento do Azure. Para obter mais informações, consulte Armazenamento do Azure Resource Provider REST API.

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

Para definir a propriedade AllowBlobPublicAccess para a conta de armazenamento, precisas de permissões para criar e gerir contas de armazenamento. As funções do controlo de acesso baseado em funções do Azure (Azure RBAC) que concedem estas permissões incluem a ação Microsoft.Storage/storageAccounts/write. As funções incorporadas com esta ação incluem:

As atribuições de função devem ter escopo igual ao nível da conta de armazenamento ou superior para permitir que um usuário não permita acesso anônimo à conta de armazenamento. Para obter mais informações sobre o escopo da função, consulte Entender o escopo do RBAC do Azure.

Restringa a atribuição destes papéis apenas a utilizadores administrativos que necessitem da capacidade de criar uma conta de armazenamento ou atualizar as suas propriedades. Use o princípio do privilégio mínimo para garantir que os utilizadores têm o menor número de permissões necessárias para realizar as suas tarefas. Para obter mais informações sobre como gerenciar o acesso com o RBAC do Azure, consulte Práticas recomendadas 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, estas incluem a ação Microsoft.Storage/storageAccounts/listkeys/action, que permite o acesso às chaves de acesso da conta. Ao usar esta permissão, um utilizador pode usar as chaves de acesso da conta para aceder a todos os dados de uma conta de armazenamento.

A Microsoft. Storage/storageAccounts/listkeys/action concede acesso aos dados através das chaves da conta, mas não concede ao utilizador 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 Leitor e Acesso a Dados.

Nota

As funções clássicas de administrador de subscrição Administrador de Serviços e Coadministrador incluem o equivalente à função de Proprietário do Azure Resource Manager. A função Proprietário inclui todas as ações, para que um usuário com uma dessas funções administrativas também possa criar contas de armazenamento e gerenciar a configuração da conta. Para obter mais informações, consulte Funções do Azure, Funções do Microsoft Entra e funções clássicas de administrador de assinatura.

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. Esta propriedade está disponível para todas as contas de armazenamento que cria com o modelo de implementação do Azure Resource Manager. Para obter mais informações, consulte 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 estes passos:

  1. Aceda à sua conta de armazenamento no Portal do Azure.

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

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

    Captura de ecrã de como permitir ou impedir o acesso anónimo a uma conta de armazenamento.

Nota

Proibir o acesso anónimo a uma conta de armazenamento não afeta nenhum site estático alojado nessa conta de armazenamento. O contêiner $web está sempre acessível publicamente.

Depois de atualizar a definição de acesso anónimo para a conta de armazenamento, pode demorar até 30 segundos até a alteração ser totalmente propagada.

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

Os exemplos seguintes mostram como ler a propriedade AllowBlobPublicAccess para a conta de armazenamento para determinar se o acesso anónimo é 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, consulte Corrigir acesso anônimo para a 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 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 ao nível da conta (através da propriedade AllowBlobPublicAccess ) e que tem permissão de escrita no contentor. Se o acesso anónimo for negado para a conta de armazenamento, não pode configurar o acesso anónimo para um contentor.

Atenção

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

Quando permite acesso anónimo a uma conta de armazenamento, pode configurar um contentor com as seguintes permissões:

  • Sem acesso público de leitura (portal: Privado; PowerShell: Desligado): O contentor e os seus blobs só podem ser acedidos mediante um pedido autorizado. Esta opção é o padrão para todos os novos contêineres.
  • Acesso público de leitura apenas para blobs (portal e PowerShell: Blob): Os blobs dentro do contentor podem ser lidos mediante pedido anónimo, mas os dados do contentor não estão disponíveis de forma anónima. Os clientes anônimos não podem enumerar os blobs dentro do contêiner.
  • Acesso público de leitura para contentores e seus blobs (portal e PowerShell: Container): Os dados de contentores e blobs podem ser lidos por pedido anónimo, exceto para as definições de permissões e metadados de container. Os clientes podem enumerar blobs dentro do contentor mediante pedido anónimo, 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 ao nível do contentor. Você pode definir o nível de acesso anônimo do contêiner ao criá-lo ou pode atualizar a configuração em um contêiner existente.

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

  1. Consulte a visão geral da sua conta de armazenamento no portal 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 anônimo.

  4. Selecione Alterar nível de acesso para abrir as definições de acesso anónimo.

  5. Selecione o nível de acesso anónimo pretendido na lista pendente Nível de acesso anónimo e selecione OK para aplicar a alteração aos contentores selecionados.

    Captura de ecrã de como definir o nível de acesso anónimo para um contentor no portal.

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

Quando o acesso anónimo é proibido para a conta de armazenamento, não pode definir o nível de acesso anónimo de um contentor. 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 ecrã da definição de nível de acesso anónimo de um contentor bloqueada quando o acesso anónimo é impedido para a conta.

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

Pode verificar quais os contentores de uma ou mais contas de armazenamento configurados para acesso anónimo listando os contentores e verificando a definição de acesso anónimo. Essa abordagem é uma opção prática quando uma 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 afetado se tentar listar um grande número de contentores.

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 de posição 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 de funcionalidades

O suporte para esse recurso pode ser afetado pela habilitação do Data Lake Storage Gen2, do protocolo NFS (Network File System) 3.0 ou do SSH File Transfer Protocol (SFTP). Se você habilitou qualquer um desses recursos, consulte Suporte ao recurso de Armazenamento de Blob nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Próximos passos