Remediar 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 a contêineres e blobs. No entanto, o acesso anónimo pode representar um risco de segurança. Recomendamos que desative o acesso anónimo para uma segurança ideal. Não permitir o acesso anónimo ajuda a evitar violações de dados causadas por acessos anónimos indesejados.

Por padrão, o acesso anônimo aos seus dados de blob é sempre proibido. A configuração padrão para uma conta de armazenamento do Azure Resource Manager proíbe que os usuários configurem 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 Azure rejeita todas as solicitações de leitura anônimas 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, 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 não o permita para a conta de armazenamento.

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

Este artigo descreve como usar uma estrutura DRAG (Detection-Remediation-Audit-Governance) 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 v2 de uso geral, contas de armazenamento de blob de bloco premium, contas de compartilhamento de arquivos premium e contas de Armazenamento de Blob usam o modelo de implantação do Azure Resource Manager. Algumas contas v1 de uso geral mais antigas e contas de blob de página premium podem usar o modelo de implantação clássico.

Se 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 o mais rápido 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, consulte As contas de armazenamento clássico 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, consulte Corrigir acesso de leitura anônimo a dados de blob (implantações clássicas). Para obter mais informações sobre modelos de implantação do Azure, consulte Gerenciador de recursos e implantação clássica.

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

Detetar solicitações anônimas de aplicativos cliente

Ao não permitir acesso de leitura anônimo para uma conta de armazenamento, você corre o risco de rejeitar solicitações para contêineres e blobs atualmente configurados para acesso anônimo. Não permitir acesso anônimo para uma conta de armazenamento substitui as configurações de acesso para contêineres individuais nessa conta de armazenamento. Quando o acesso anônimo não for permitido para a conta de armazenamento, quaisquer solicitações anônimas futuras para essa conta falharão.

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

Monitore solicitações anônimas com o 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 rastreie solicitações anônimas:

  1. Navegue para a 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 Metric como Blob. Essa métrica relata solicitações somente no armazenamento de Blob.
    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 em relação ao armazenamento de Blob em um determinado intervalo de tempo. A métrica resultante aparece como mostrado na 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 pedidos anónimos.

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

    1. Defina o valor Property como Authentication.
    2. Defina o campo Operador como o sinal de igual (=).
    3. Defina o campo Valores como Anônimo selecionando-o na lista suspensa ou digitando-o.
  5. No canto superior direito, selecione o intervalo de tempo durante o qual pretende ver a métrica. Você também pode indicar o quão granular deve ser a agregação de solicitações, especificando intervalos de 1 minuto a 1 mês.

Depois de configurar a métrica, as solicitações anônimas começarão a aparecer no gráfico. 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 notificá-lo quando um determinado número de solicitações anônimas for feito contra sua conta de armazenamento. Para obter mais informações, consulte Criar, exibir e gerenciar alertas métricos usando o Azure Monitor.

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

Os logs do Armazenamento do Azure capturam detalhes sobre 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 sua conta de Armazenamento do Azure para avaliar solicitações anônimas, você pode usar o log do Armazenamento do Azure no Azure Monitor. Para obter mais informações, consulte Monitorar o Armazenamento do Azure.

O log do 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 espaço de trabalho do Azure Log Analytics. Para saber mais sobre consultas de log, consulte Tutorial: Introdução às consultas do Log Analytics.

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

Para registar dados do Armazenamento do Azure com o Azure Monitor e analisá-los com o Azure Log Analytics, primeiro tem de criar uma definição de diagnóstico que indique quais os tipos de pedidos e para quais serviços de armazenamento pretende registar os dados. Para criar uma definição de diagnóstico no portal do Azure, siga estes passos:

  1. Crie uma nova área de trabalho do Log Analytics na subscrição que contém a sua conta de Armazenamento do Azure. Depois de configurar o registo para a sua conta de armazenamento, os registos estarão disponíveis na área de trabalho do Log Analytics. Para obter mais informações, consulte Criar uma área de trabalho do Log Analytics no portal do Azure.

  2. Navegue para a sua conta de armazenamento no portal do Azure.

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

  4. Selecione Blob para registar pedidos em relação ao armazenamento de Blobs.

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

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

  7. Em Detalhes da categoria, na seção log , escolha quais tipos de solicitações registrar. Todos os pedidos anónimos são pedidos de leitura, por isso selecione StorageRead para obter pedidos anónimos.

  8. Em Detalhes do destino, selecione Enviar para o Log Analytics. Selecione sua assinatura e o espaço de trabalho 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 definição de diagnóstico, os pedidos para a conta de armazenamento são registados posteriormente de acordo com essa definição. Para obter mais informações, consulte Criar configuração de diagnóstico para coletar logs de recursos e métricas no Azure.

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

Logs de consulta para solicitações anônimas

Os logs do Armazenamento do Azure no Azure Monitor incluem o tipo de autorização que foi usado para fazer uma solicitação a uma conta de armazenamento. Na 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 Blob, abra o espaço de trabalho 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 notificá-lo sobre solicitações anônimas. Para obter mais informações, consulte Criar, exibir e gerenciar alertas de log usando o Azure Monitor.

Respostas a pedidos anónimos

Quando o Armazenamento de Blob recebe uma solicitação anônima, essa solicitação terá êxito se todas as condições a seguir forem verdadeiras:

  • O acesso anônimo é permitido para a conta de armazenamento.
  • O contêiner de destino é configurado para permitir 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 em caso de falha depende se a solicitação anônima foi feita com uma versão do serviço que suporta o desafio do portador. O desafio do portador é suportado 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 suporta o desafio do 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 de serviço que não suporta o desafio do 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 de serviço que não suporta o desafio do 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 ao portador, consulte Desafio ao portador.

Remediar 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 para contêineres nessa conta. Quando você não permite acesso anônimo para uma conta de armazenamento, todos os contêineres configurados para permitir acesso anônimo não são mais acessíveis anonimamente. Se você não permitiu 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 precisem estar disponíveis para acesso anônimo, você deverá mover esses contêineres e seus blobs para contas de armazenamento separadas que são reservadas para acesso anônimo. Em seguida, você pode não permitir acesso anônimo para quaisquer outras contas de armazenamento.

A correção do 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 AllowBlobPublicAccess 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.

Defina a propriedade AllowBlobPublicAccess da conta de armazenamento como False

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

Importante

Não permitir 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 for permitido para a conta de armazenamento, quaisquer solicitações anônimas futuras 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 em sua conta de armazenamento anonimamente, seguindo as etapas descritas em Detetar solicitações anônimas de aplicativos cliente.

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

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

    Screenshot showing how to disallow anonymous access for account

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.

Script de exemplo para correção em massa

O script 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"
}

Verificar se o acesso anônimo foi remediado

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 modificar a configuração de acesso de um contêiner não é permitido e se não é possível criar um contêiner com acesso anônimo habilitado.

Verifique 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 bem-sucedido, 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 próprios valores:

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

Verifique se não é permitido modificar a configuração de acesso do contêiner

Para verificar se a configuração de acesso de um contêiner não pode ser modificada depois que o acesso anônimo não é 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 próprios 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 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 próprios 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

Verifique 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 Gerenciador de Gráficos de Recursos, consulte Guia de início rápido: executar sua primeira consulta do Gráfico de Recursos usando o Azure Resource Graph Explorer.

A execução da seguinte consulta 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 a Política do Azure para auditar a conformidade

Se você tiver um grande número de contas de armazenamento, convém executar 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 quanto à sua conformidade, use a Política do Azure. O 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-o a manter esses recursos em conformidade com os seus padrões empresariais e contratos de nível de serviço. Para obter mais informações, consulte Visão geral da Política do Azure.

Criar uma política com um efeito de auditoria

A Política do Azure dá suporte a efeitos que determinam o que acontece quando uma regra de política é avaliada em relação a um recurso. O efeito Auditoria cria um aviso quando um recurso não está em conformidade, mas não interrompe a solicitação. Para obter mais informações sobre efeitos, consulte Compreender os efeitos da Política do Azure.

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 para o serviço Azure Policy.

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

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

  4. Para o campo Local da definição, selecione 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, 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. Guardar a política.

Atribuir a política

Em seguida, atribua a política a um recurso. O âmbito da política corresponde a esse recurso e a quaisquer recursos por baixo deste. Para obter mais informações sobre atribuição de política, consulte Estrutura de atribuição de política do Azure.

Para atribuir a política com o portal do Azure, siga estes passos:

  1. No portal do Azure, navegue para o serviço Azure Policy.
  2. Na seção Criação, selecione Atribuições.
  3. Selecione Atribuir política para criar uma nova atribuição de política .
  4. Para o campo Escopo , selecione o escopo da atribuição de política.
  5. Para o campo Definição de política, selecione o botão Mais e, em seguida, selecione a política definida na seção anterior na lista.
  6. Indique um nome para a atribuição de política. A descrição é opcional.
  7. Deixe a aplicação da política definida como Habilitada. Esta definição não tem efeito na política de auditoria.
  8. Selecione Rever + criar para criar a atribuição.

Ver relatório de conformidade

Depois de atribuir a política, você pode exibir o relatório de conformidade. O relatório de conformidade de uma política de auditoria fornece informações sobre quais contas de armazenamento não estão em conformidade com a política. Para obter mais informações, consulte Obter dados de conformidade de políticas.

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

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

  1. No portal do Azure, navegue para 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 detalhar o relatório para obter detalhes adicionais, 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 a Política do Azure para impor o acesso autorizado

A Política do Azure dá suporte à governança da nuvem, garantindo que os recursos do Azure cumpram 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 permita 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 Negar para impedir uma solicitação que criaria ou modificaria uma conta de armazenamento para permitir acesso anônimo. Para obter mais informações sobre efeitos, consulte Compreender os efeitos da Política do Azure.

Para criar uma política com um efeito Negar para uma configuração de acesso anônimo que permite solicitações anônimas, siga as mesmas etapas descritas em Usar a Política do Azure para auditar a conformidade, mas forneça o seguinte JSON 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 Negar e atribuí-la a um escopo, um usuário não pode criar uma conta de armazenamento que permita 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 permite acesso anônimo. Tentar fazer isso resulta em um erro. A configuração de acesso anônimo para a conta de armazenamento deve ser definida como false para prosseguir 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 acesso anônimo quando uma política com um efeito Negar 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óximos passos