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 apresenta um potencial risco de segurança, por isso, se o seu cenário não o exigir, recomendamos que corrija o acesso anónimo para a conta de armazenamento.

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

Sobre o acesso de leitura anônimo

O acesso anónimo aos seus dados é sempre proibido por defeito. 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 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.

  2. 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 contêiner específico, uma solicitação para ler um blob nesse contêiner que é passado sem um Authorization cabeçalho é aceita pelo serviço e os dados do blob são retornados na resposta. No entanto, se a solicitação for passada com um Authorization cabeçalho, o acesso anônimo na conta de armazenamento será ignorado e a solicitação será autorizada com base nas credenciais fornecidas.

Permitir ou não permitir acesso de leitura anônimo 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 habilitar o acesso anônimo aos dados nesse contêiner. Os dados de Blob nunca estão disponíveis para acesso 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.

Lembre-se de que o acesso anônimo a um contêiner é sempre desativado por padrão e deve ser explicitamente configurado 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 permissões apropriadas execute esta etapa adicional para habilitar o acesso anônimo no contêiner.

Não permitir 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 não é permitido para a conta, não é possível definir a configuração de acesso para um contêiner para permitir acesso anônimo e quaisquer solicitações anônimas futuras para essa conta falham. Antes de alterar essa configuração, certifique-se de entender o impacto nos aplicativos cliente que podem estar acessando dados em sua conta de armazenamento anonimamente. Para obter mais informações, consulte Impedir acesso de leitura anônima a contêineres e blobs.

Importante

Depois que o acesso anônimo não for permitido para uma conta de armazenamento, os clientes que usam o desafio de portador anônimo descobrirão que o Armazenamento do 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 mitigar esse 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 Azure Storage Resource Provider REST API.

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

Para definir a propriedade AllowBlobAnonymousAccess para a conta de armazenamento, um usuário deve ter permissões para criar e gerenciar contas de armazenamento. As funções de controle de acesso baseado em função do Azure (Azure RBAC) que fornecem essas 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.

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 do menor privilégio para garantir que os usuários tenham o menor número de permissões de que precisam para realizar 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, eles incluem 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 de 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. Essa propriedade está disponível para todas as contas de armazenamento criadas com o modelo de implantaçã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. Navegue para a 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 de Blob como Habilitado ou Desabilitado.

    Captura de ecrã a mostrar como permitir ou não o acesso anónimo à conta

Nota

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

Depois de atualizar a configuração de acesso anônimo para a conta de armazenamento, pode levar até 30 segundos até que a alteração seja 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, todas as regras de firewall configuradas para a conta de armazenamento permanecem em vigor e bloqueiam o tráfego em linha com as ACLs configuradas.

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 Azure Storage Resource Provider REST API.

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 permitido 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, 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. Se o acesso anônimo for negado para a conta de armazenamento, você não poderá configurar o acesso anônimo para um contêiner.

Atenção

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

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

  • Sem acesso público de leitura: o contêiner e seus blobs podem ser acessados somente com uma solicitação autorizada. Esta opção é o padrão para todos os novos contêineres.
  • Acesso público de leitura apenas 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ública para contêiner e seus blobs: os dados de contêiner e blob 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 contêiner por solicitação anônima, mas não podem enumerar contêineres dentro da 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 somente no nível do contêiner. 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. Navegue até 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 anônimo.

  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 ecrã a mostrar 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 configuração do nível de acesso anônimo de um contêiner é bloqueada quando o acesso anônimo não é permitido para a conta

Verifique a configuração de acesso anônimo 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 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 sofrer 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 espaço reservado 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