Corrigir o acesso de leitura anônimo aos dados de blob (Implantações do Azure Resource Manager)

O Armazenamento de Blobs do Azure dá suporte ao acesso de leitura anônimo opcional em contêineres e blobs. No entanto, o acesso anônimo pode apresentar um risco à segurança. Recomendamos que você desabilite o acesso anônimo, permitindo a segurança ideal. Não permitir o acesso público ajuda a evitar violações de dados causadas por acesso anônimo indesejado.

Por padrão, o acesso anônimo aos seus dados de blobs é sempre proibido. A configuração padrão para uma conta de armazenamento do Azure Resource Manager proíbe os usuários de configurar o acesso anônimo a contêineres e blobs em uma conta de armazenamento. Essa configuração padrão não permite todo o acesso anônimo a uma conta de armazenamento do Azure Resource Manager, independentemente da configuração de acesso para um contêiner individual.

Quando o acesso anônimo para a conta de armazenamento não é permitido, o Armazenamento do Microsoft Azure rejeita todas as solicitações de leitura em dados de blob. Os usuários não podem configurar posteriormente o acesso anônimo para contêineres nessa conta. Todos os contêineres que já foram configurados para acesso anônimo não aceitarão mais solicitações anônimas.

Aviso

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

Correção para contas de armazenamento do Azure Resource Manager versus clássicas

Este artigo descreve como usar uma estrutura DRAG (detecção, correção, auditoria, governança) para gerenciar continuamente o acesso anônimo para contas de armazenamento que estão usando o modelo de implantação do Azure Resource Manager. Todas as contas de armazenamento de uso geral v2, contas de armazenamento de blobs de blocos premium, contas de compartilhamento de arquivos premium e contas de Armazenamento de Blobs usam o Modelo de implantação do Azure Resource Manager. Algumas contas de uso geral v1 mais antigas e contas de blob de página premium podem usar o modelo de implantação clássico.

Se a sua conta de armazenamento estiver usando o modelo de implantação clássico, recomendamos que você migre para o modelo de implantação do Azure Resource Manager assim que possível. As contas de Armazenamento do Azure que usam o modelo de implantação clássico serão desativadas em 31 de agosto de 2024. Para obter mais informações, confira As contas de armazenamento clássicas do Azure serão desativadas em 31 de agosto de 2024.

Se você não puder migrar suas contas de armazenamento clássicas no momento, deverá corrigir o acesso anônimo a essas contas agora. Para saber como corrigir o acesso anônimo para contas de armazenamento clássicas, confira Corrigir o acesso de leitura anônimo aos dados de blob (implantações clássicas). Para saber mais sobre modelos de implantação do Azure, confira Resource Manager e implantação clássica.

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 de Autorização é aceita pelo serviço e os dados do blob são retornados na resposta.

Detectar solicitações anônimas de aplicativos do cliente

Quando você não permite acesso de leitura anônimo para uma conta de armazenamento, você corre o risco de rejeitar solicitações para contêineres e blobs que estão atualmente configurados para acesso anônimo. Não permitir o acesso anônimo para uma conta de armazenamento substitui as configurações de acesso para todos os contêineres individuais nessa conta de armazenamento. Quando o acesso anônimo não é permitido para a conta de armazenamento, toda solicitação anônima no futuro para essa conta falhará.

Para entender como a proibição do acesso anônimo pode afetar os aplicativos cliente, recomendamos que você habilite o registro em log e as métricas para essa conta e analise padrões de solicitações anônimas em um intervalo de tempo. Use as métricas para determinar o número de solicitações anônimas para a conta de armazenamento e use registros em logs para determinar quais contêineres estão sendo acessados anonimamente.

Monitorar solicitações anônimas com Metrics Explorer

Para rastrear solicitações anônimas para uma conta de armazenamento, use o Azure Metrics Explorer no portal do Azure. Para obter mais informações sobre o Metrics Explorer, consulte Analisar métricas com o explorador de métricas do Azure Monitor.

Siga estas etapas para criar uma métrica que rastreia solicitações anônimas:

  1. Navegue até sua conta de armazenamento no portal do Azure. Na seção Monitoramento, selecione Métricas.

  2. Selecione Adicionar métrica. Na caixa de diálogo Métrica, especifique os seguintes valores:

    1. Deixe o campo Escopo definido como o nome da conta de armazenamento.
    2. Defina o Namespace de métrica como Blobs. Essa métrica relata solicitações apenas ao armazenamento de blobs.
    3. Defina o campo Métrica como Transações.
    4. Defina o campo Agregação como Soma.

    A nova métrica exibe a soma do número de transações no armazenamento de blobs em um determinado intervalo de tempo. A métrica resultante é exibida, como mostra a imagem a seguir:

    Screenshot showing how to configure metric to sum blob transactions

  3. Em seguida, selecione o botão Adicionar filtro para criar um filtro na métrica para solicitações anônimas.

  4. Na caixa de diálogo Filtro, especifique os seguintes valores:

    1. Defina o valor da Propriedade como Autenticação.
    2. Defina o campo Operador para o sinal de igual (=).
    3. Defina o campo Valores como Anônimo selecionando-o no menu suspenso ou digitando-o.
  5. No canto superior direito, selecione o intervalo de tempo durante o qual você deseja visualizar a métrica. Você também pode indicar como a agregação das solicitações deve ser granular, especificando intervalos em qualquer lugar, de 1 minuto a 1 mês.

Depois de configurar a métrica, as solicitações anônimas começarão a aparecer no grafo. A imagem a seguir mostra solicitações anônimas agregadas nos últimos 30 minutos.

Screenshot showing aggregated anonymous requests against Blob storage

Você também pode configurar uma regra de alerta para receber uma notificação quando um determinado número de solicitações anônimas for feito em sua conta de armazenamento. Para obter mais informações, confira Criar, exibir e gerenciar alertas de métrica usando o Azure Monitor.

Analisar logs para identificar contêineres que recebem solicitações anônimas

Os logs de Armazenamento do Microsoft Azure capturam detalhes sobre as solicitações feitas na conta de armazenamento, incluindo como uma solicitação foi autorizada. Você pode analisar os logs para determinar quais contêineres estão recebendo solicitações anônimas.

Para registrar solicitações em log para sua conta de Armazenamento do Microsoft Azure para avaliar solicitações anônimas, você pode usar o log de armazenamento do Azure no Azure Monitor. Para saber mais, confira Monitorar o Armazenamento do Azure.

O log de Armazenamento do Azure no Azure Monitor dá suporte ao uso de consultas de log para analisar dados de log. Para consultar logs, você pode usar um workspace do Log Analytics do Azure. Para saber mais sobre consultas de log, confira Tutorial: introdução às consultas do Log Analytics.

Criar uma configuração de diagnóstico no portal do Azure

Para registrar dados de Armazenamento do Azure com o Azure Monitor e analisá-los com o Azure Log Analytics, você deve primeiro criar uma configuração de diagnóstico que indica quais tipos de solicitações e para quais serviços de armazenamento você deseja registrar dados. Para criar uma configuração de diagnóstico no portal do Azure, siga estas etapas:

  1. Crie um novo Log Analytics espaço de trabalho na assinatura que contém sua conta do Armazenamento do Azure. Depois de configurar o registro em log para sua conta de armazenamento, os logs estarão disponíveis no workspace do Log Analytics. Para obter mais informações, confira Criar um workspace do Log Analytics no portal do Azure.

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

  3. Na seção Monitoramento, selecione Configurações de diagnóstico.

  4. Selecione Blobs para registrar solicitações feitas no armazenamento de Blobs.

  5. Selecione Adicionar configuração de diagnóstico.

  6. Forneça um nome para a configuração de diagnóstico.

  7. Em Detalhes da categoria, na seção log, escolha quais tipos de solicitações registrar em log. Todas as solicitações anônimas são solicitações de leitura, portanto, selecione StorageRead para capturar solicitações anônimas.

  8. Em Detalhes do destino, selecione Enviar para o Log Analytics. Selecione sua assinatura e o workspace do Log Analytics criado anteriormente, conforme mostrado na imagem a seguir.

    Screenshot showing how to create a diagnostic setting for logging requests

Depois de criar a configuração de diagnóstico, as solicitações para a conta de armazenamento são registradas subsequentemente de acordo com essa configuração. Para obter mais informações, confira Criar configurações de diagnóstico para coletar logs de recursos e métricas no Azure.

Para obter uma referência dos campos disponíveis nos logs de Armazenamento do Microsoft Azure no Azure Monitor, confira Logs de recursos.

Logs de consulta para solicitações anônimas

Os logs de Armazenamento do Microsoft Azure no Azure Monitor incluem o tipo de autorização que foi usado para fazer uma solicitação para uma conta de armazenamento. Em sua consulta de log, filtre a propriedade AuthenticationType para exibir solicitações anônimas.

Para recuperar logs dos últimos sete dias para solicitações anônimas no armazenamento de blobs, abra seu workspace do Log Analytics. Em seguida, cole a seguinte consulta em uma nova consulta de log e execute-a:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AuthenticationType == "Anonymous"
| project TimeGenerated, AccountName, AuthenticationType, Uri

Você também pode configurar uma regra de alerta com base nessa consulta para receber notificações sobre solicitações anônimas. Para obter mais informações, confira Criar, exibir e gerenciar alertas de log usando o Azure Monitor.

Respostas a solicitações anônimas

Quando o Armazenamento de Blobs receber uma solicitação anônima, essa solicitação terá êxito se todas as seguintes condições forem verdadeiras:

  • O acesso anônimo é permitido para a conta de armazenamento.
  • O contêiner de destino está configurado para permitir o acesso anônimo.
  • A solicitação é para acesso de leitura.

Se qualquer uma dessas condições não for verdadeira, a solicitação falhará. O código de resposta do sobre falha depende se a solicitação anônima foi feita com uma versão do serviço que dá suporte ao desafio de portador. O desafio de portador é compatível com as versões de serviço 2019-12-12 e mais recentes:

  • Se a solicitação anônima foi feita com uma versão de serviço que dá suporte ao desafio de portador, o serviço retorna o código de erro 401 (Não autorizado).
  • Se a solicitação anônima foi feita com uma versão do serviço que não dá suporte ao desafio de portador e o acesso anônimo não é permitido para a conta de armazenamento, o serviço retorna o código de erro 409 (Conflito).
  • Se a solicitação anônima foi feita com uma versão do serviço que não dá suporte ao desafio de portador e o acesso anônimo é permitido para a conta de armazenamento, o serviço retorna o código de erro 404 (Não encontrado).

Para obter mais informações sobre o desafio de portador, consulte Desafio de portador.

Corrigir o acesso anônimo para a conta de armazenamento

Depois de avaliar solicitações anônimas para contêineres e blobs em sua conta de armazenamento, você pode tomar medidas para corrigir o acesso anônimo para toda a conta definindo a propriedade AllowBlobPublicAccess da conta como False.

A configuração de acesso anônimo para uma conta de armazenamento substitui as configurações individuais dos contêineres nessa conta. Quando você não permite o acesso anônimo para uma conta de armazenamento, os contêineres configurados para permitir o acesso anônimo não são mais acessíveis anonimamente. Se você não tiver permitido o acesso anônimo para a conta, também não precisará desabilitar o acesso anônimo para contêineres individuais.

Se o seu cenário exigir que determinados contêineres estejam disponíveis para acesso anônimo, você deverá mover esses contêineres e seus blobs para contas de armazenamento separadas reservadas para acesso anônimo. Em seguida, você pode proibir o acesso anônimo para outras contas de armazenamento.

Corrigir 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, um 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.

Defina a propriedade AllowBlobPublicAccess da conta de armazenamento como False

Para não permitir o acesso anônimo para uma conta de armazenamento, configure a propriedade AllowBlobPublicAccess da conta como False.

Importante

Não permitir o acesso anônimo para uma conta de armazenamento substitui as configurações de acesso para todos os contêineres nessa conta de armazenamento. Quando o acesso anônimo não é permitido para a conta de armazenamento, toda solicitação anônima no futuro para essa conta falhará. Antes de alterar essa configuração, entenda o impacto nos aplicativos cliente que podem estar acessando dados em sua conta de armazenamento anonimamente seguindo as etapas descritas em Detectar solicitações anônimas de aplicativos cliente.

Para não permitir o acesso anônimo para 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 do Blob como Desabilitado.

    Screenshot showing how to disallow anonymous access for account

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.

Script de exemplo para correção em massa

O script do PowerShell de exemplo a seguir é executado em todas as contas de armazenamento do Azure Resource Manager em uma assinatura e define a configuração AllowBlobPublicAccess para essas contas como False.

<#
.SYNOPSIS
Finds storage accounts in a subscription where AllowBlobPublicAccess is True or null.

.DESCRIPTION
This script runs against all Azure Resource Manager storage accounts in a subscription
and sets the "AllowBlobPublicAccess" property to False.

Standard operation will enumerate all accounts where the setting is enabled and allow the 
user to decide whether or not to disable the setting.  

Classic storage accounts will require individual adjustment of containers to remove public
access, and will not be affected by this script.

Run with BypassConfirmation=$true if you wish to disallow public access on all Azure Resource Manager 
storage accounts without individual confirmation.

You will need access to the subscription to run the script.

.PARAMETER BypassConformation
Set this to $true to skip confirmation of changes. Not recommended.

.PARAMETER SubscriptionId
The subscription ID of the subscription to check.

.PARAMETER ReadOnly
Set this parameter so that the script makes no changes to any subscriptions and only reports affect accounts.

.PARAMETER NoSignin
Set this parameter so that no sign-in occurs -- you must sign in first. Use this if you're invoking this script repeatedly for multiple subscriptions and want to avoid being prompted to sign-in for each subscription.

.OUTPUTS
This command produces only STDOUT output (not standard PowerShell) with information about affect accounts.
#>
param(
    [boolean]$BypassConfirmation=$false,
    [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName='SubscriptionId')]
    [String] $SubscriptionId,
    [switch] $ReadOnly, # Use this if you don't want to make changes, but want to get information about affected accounts
    [switch] $NoSignin # Use this if you are already signed in and don't want to be prompted again
)

begin {
    if ( ! $NoSignin.IsPresent ) {
        login-azaccount | out-null
    }
}

process {
    try {
        select-azsubscription -subscriptionid $SubscriptionId -erroraction stop | out-null
    } catch {
        write-error "Unable to access select subscription '$SubscriptionId' as the signed in user -- ensure that you have access to this subscription." -erroraction stop
    }

    foreach ($account in Get-AzStorageAccount) 
    {
        if($account.AllowBlobPublicAccess -eq $null -or $account.AllowBlobPublicAccess -eq $true)
        {
            Write-host "Account:" $account.StorageAccountName " isn't disallowing public access."

            if ( ! $ReadOnly.IsPresent ) {
                if(!$BypassConfirmation)
                {
                    $confirmation = Read-Host "Do you wish to disallow public access? [y/n]"
                }
                if($BypassConfirmation -or $confirmation -eq 'y')
                {
                    try
                    {
                        set-AzStorageAccount -Name $account.StorageAccountName -ResourceGroupName $account.ResourceGroupName -AllowBlobPublicAccess $false
                        Write-Host "Success!"
                    }
                    catch
                    {
                        Write-output $_
                    }
                }
            }
        }
        elseif($account.AllowBlobPublicAccess -eq $false)
        {
            Write-Host "Account:" $account.StorageAccountName " has public access disabled, no action required."
        }
        else
        {
            Write-Host "Account:" $account.StorageAccountName ". Error, please manually investigate."
        }
    }
}

end {
    Write-Host "Script complete"
}

Verifique se o acesso anônimo foi corrigido

Para verificar se você corrigiu o acesso anônimo para uma conta de armazenamento, você pode testar se o acesso anônimo a um blob não é permitido, se a modificação de uma configuração de acesso de um contêiner não é permitida e que não é possível criar um contêiner com o acesso anônimo habilitado.

Verificar se o acesso anônimo a um blob não é permitido

Para verificar se o acesso anônimo a um blob específico não é permitido, você pode tentar baixar o blob por meio de sua URL. Se o download for executado com sucesso, o Blob ainda estará disponível publicamente. Se o blob não estiver acessível publicamente porque o acesso anônimo não foi permitido para a conta de armazenamento, você verá uma mensagem de erro indicando que o acesso anônimo não é permitido nessa conta de armazenamento.

O exemplo a seguir mostra como usar o PowerShell para tentar baixar um Blob por meio de sua URL. Lembre-se de substituir os valores de espaço reservado entre colchetes pelos seus valores:

$url = "<absolute-url-to-blob>"
$downloadTo = "<file-path-for-download>"
Invoke-WebRequest -Uri $url -OutFile $downloadTo -ErrorAction Stop

Verificar se a modificação da configuração de acesso do contêiner não é permitida

Para verificar se a configuração de acesso de um contêiner não pode ser modificada após o acesso anônimo não ser permitido para a conta de armazenamento, você pode tentar modificar a configuração. A alteração da configuração de acesso do contêiner falhará se o acesso anônimo não for permitido para a conta de armazenamento.

O exemplo a seguir mostra como usar o PowerShell para tentar alterar a configuração de acesso de um contêiner. Lembre-se de substituir os valores de espaço reservado entre colchetes pelos seus valores:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container-name>"

$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context

Set-AzStorageContainerAcl -Context $ctx -Container $containerName -Permission Blob

Verifique se um contêiner não pode ser criado com o acesso anônimo habilitado

Se o acesso anônimo não for permitido para a conta de armazenamento, você não poderá criar um novo contêiner com o acesso anônimo habilitado. Para verificar, você pode tentar criar um contêiner com o acesso anônimo habilitado.

O exemplo a seguir mostra como usar o PowerShell para tentar criar um contêiner com acesso anônimo habilitado. Lembre-se de substituir os valores de espaço reservado entre colchetes pelos seus valores:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container-name>"

$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context

New-AzStorageContainer -Name $containerName -Permission Blob -Context $ctx

Verificar a configuração de acesso anônimo para várias contas

Para verificar a configuração de acesso anônimo em um conjunto de contas de armazenamento com desempenho ideal, você pode usar o Azure Resource Graph Explorer no portal do Azure. Para saber mais sobre como usar o Resource Graph Explorer, consulte Início Rápido: executar sua primeira consulta de grafo de recursos usando o Azure Resource Graph Explorer.

A execução da consulta a seguir no Resource Graph Explorer retorna uma lista de contas de armazenamento e exibe a configuração de acesso anônimo para cada conta:

resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowBlobPublicAccess = parse_json(properties).allowBlobPublicAccess
| project subscriptionId, resourceGroup, name, allowBlobPublicAccess

A imagem a seguir mostra os resultados de uma consulta em uma assinatura. Para contas de armazenamento em que a propriedade AllowBlobPublicAccess foi definida explicitamente, ela aparece nos resultados como true ou false. Se a propriedade AllowBlobPublicAccess não tiver sido definida para uma conta de armazenamento, ela aparecerá como em branco (ou nula) nos resultados da consulta.

Screenshot showing query results for anonymous access setting across storage accounts

Usar Azure Policy para auditar a conformidade

Se você tiver um grande número de contas de armazenamento, convém realizar uma auditoria para certificar-se de que essas contas estão configuradas para impedir o acesso anônimo. Para auditar um conjunto de contas de armazenamento para sua conformidade, use o Azure Policy. Azure Policy é um serviço que você pode usar para criar, atribuir e gerenciar políticas que aplicam regras aos recursos do Azure. O Azure Policy ajuda a manter esses recursos compatíveis com seus padrões empresariais e contratos de nível de serviço. Para saber mais, confira Visão geral do Azure Policy.

Criar uma política com um efeito de auditoria

O Azure Policy oferece suporte a efeitos que determinam o que acontece quando uma regra de política é avaliada em um recurso. O efeito Audit cria um aviso quando um recurso não está em conformidade, mas não interrompe a solicitação. Para saber mais sobre efeitos, consulte Entender os efeitos da Azure Policy.

Para criar uma política com um efeito de auditoria para a configuração de acesso anônimo para uma conta de armazenamento com o portal do Azure, siga estas etapas:

  1. No portal do Azure, navegue até o serviço Azure Policy.

  2. Na seção Criação, escolha Definições.

  3. Escolha Adicionar definição de política para criar uma nova definição de política.

  4. Para o campo Local de definição, escolha o botão Mais para especificar onde o recurso de política de auditoria está localizado.

  5. Especifique um nome para a política. Opcionalmente, você pode especificar uma descrição e uma categoria.

  6. Em Regra de política, adicione a seguinte definição de política à seção policyRule.

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. Salve a política.

Atribuir a política

Em seguida, atribua a política a um recurso. O escopo da política corresponde a esse recurso e a todos os recursos abaixo dele. Para obter mais informações sobre atribuição de política, confira Estrutura de atribuição do Azure Policy.

Para atribuir a política com o portal do Azure, siga estas etapas:

  1. No portal do Azure, navegue até o serviço Azure Policy.
  2. Na seção Criação, escolha Atribuições.
  3. Escolha Atribuir política para criar uma nova atribuição de política.
  4. Para o campo Escopo, escolha o escopo de atribuição de política.
  5. Para o campo Definição de política, escolha o botão Mais e, em seguida, escolha a política que você definiu na seção anterior na lista.
  6. Forneça um nome para a atribuição de política. A descrição é opcional.
  7. Mantenha Imposição de política definido como Habilitado. Essa configuração não tem efeito sobre a política de auditoria.
  8. Escolha Examinar + criar para criar a atribuição.

Exibir relatório de conformidade

Depois de atribuir a política, você poderá visualizar o relatório de conformidade. O relatório de conformidade de uma política de auditoria mostra informações sobre quais contas de armazenamento não estão em conformidade com a política. Para obter mais informações, confira Obter dados de conformidade da política.

Pode levar vários minutos para que o relatório de conformidade fique disponível depois que a atribuição de política for criada.

Para exibir o relatório de conformidade no portal do Azure, siga estas etapas:

  1. No portal do Azure, navegue até o serviço Azure Policy.

  2. Selecione Conformidade.

  3. Filtre os resultados para o nome da atribuição de política que você criou na etapa anterior. O relatório mostra quantos recursos não estão em conformidade com a política.

  4. Você pode fazer uma busca detalhada no relatório para obter mais detalhes, incluindo uma lista de contas de armazenamento que não estão em conformidade.

    Screenshot showing compliance report for audit policy for anonymous access

Usar Azure Policy para impor o acesso autorizado

O Azure Policy dá suporte à governança de nuvem, garantindo que os recursos do Azure sigam os requisitos e padrões. Para garantir que as contas de armazenamento em sua organização permitam apenas solicitações autorizadas, você pode criar uma política que impeça a criação de uma nova conta de armazenamento com uma configuração de acesso anônimo que permite solicitações anônimas. Essa política também impedirá todas as alterações de configuração em uma conta existente se a configuração de acesso anônimo para essa conta não estiver em conformidade com a política.

A política de imposição usa o efeito de negação para evitar que uma solicitação que criaria ou modificaria uma conta de armazenamento para permitir o acesso anônimo. Para saber mais sobre efeitos, consulte Entender os efeitos da Azure Policy.

Para criar uma política com um efeito de negação para uma configuração de acesso anônimo que permita solicitações anônimas, siga as mesmas etapas descritas em Usar o Azure Policy para auditar a conformidade, mas forneça o JSON a seguir na seção policyRule da definição de política:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Storage/storageAccounts"
      },
      {
        "not": {
          "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
          "equals": "false"
        }
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}

Depois de criar a política com o efeito de negação e atribuí-la a um escopo, um usuário não poderá criar uma conta de armazenamento que permita o acesso anônimo. Um usuário também não pode fazer alterações de configuração em uma conta de armazenamento existente que atualmente permita o acesso anônimo. Caso isso seja feito, será gerado um erro. A configuração de acesso anônimo para a conta de armazenamento deve ser definida como false para continuar com a criação ou configuração da conta.

A imagem a seguir mostra o erro que ocorre se você tentar criar uma conta de armazenamento que permita o acesso anônimo quando uma política com um efeito de negação exigir que o acesso anônimo não seja permitido.

Screenshot showing the error that occurs when creating a storage account in violation of policy

Próximas etapas