Correggere l'accesso in lettura anonimo ai dati BLOB (distribuzioni di Azure Resource Manager)

Archiviazione BLOB di Azure supporta l'accesso in lettura anonimo facoltativo ai contenitori e ai BLOB. Tuttavia, l'accesso anonimo può presentare un rischio per la sicurezza. È consigliabile disabilitare l'accesso anonimo per una sicurezza ottimale. Non consentire l'accesso anonimo consente di evitare violazioni dei dati causate dall'accesso anonimo indesiderato.

Per impostazione predefinita, l'accesso anonimo ai dati BLOB è sempre vietato. La configurazione predefinita per un account di archiviazione di Azure Resource Manager impedisce agli utenti di configurare l'accesso anonimo ai contenitori e ai BLOB in un account di archiviazione. Questa configurazione predefinita non consente l'accesso anonimo a un account di archiviazione di Azure Resource Manager, indipendentemente dall'impostazione di accesso per un singolo contenitore.

Quando l'accesso anonimo per l'account di archiviazione non è consentito, Archiviazione di Azure rifiuta tutte le richieste di lettura anonime sui dati BLOB. Gli utenti non possono successivamente configurare l'accesso anonimo per i contenitori in tale account. Tutti i contenitori già configurati per l'accesso anonimo non accetteranno più richieste anonime.

Avviso

Quando un contenitore è configurato per l'accesso anonimo, qualsiasi client può leggere i dati in tale contenitore. L'accesso anonimo presenta un potenziale rischio per la sicurezza, quindi se lo scenario non lo richiede, è consigliabile non consentire l'account di archiviazione.

Correzione per Azure Resource Manager e account di archiviazione classici

Questo articolo descrive come usare un framework DRAG (Detection-Remediation-Audit-Governance) per gestire continuamente l'accesso anonimo per gli account di archiviazione che usano il modello di distribuzione Azure Resource Manager. Tutti gli account di archiviazione per utilizzo generico v2, gli account di archiviazione BLOB in blocchi Premium, gli account di condivisione file Premium e gli account di Archiviazione BLOB usano il modello di distribuzione Azure Resource Manager. Alcuni account per utilizzo generico v1 meno recenti e account BLOB di pagine Premium possono usare il modello di distribuzione classica.

Se l'account di archiviazione usa il modello di distribuzione classica, è consigliabile eseguire la migrazione al modello di distribuzione Azure Resource Manager il prima possibile. Archiviazione di Azure account che usano il modello di distribuzione classica verranno ritirati il 31 agosto 2024. Per altre informazioni, vedere Gli account di archiviazione classica di Azure verranno ritirati il 31 agosto 2024.

Se al momento non è possibile eseguire la migrazione degli account di archiviazione classici, è necessario correggere l'accesso anonimo a tali account. Per informazioni su come correggere l'accesso anonimo per gli account di archiviazione classici, vedere Correggere l'accesso in lettura anonimo ai dati BLOB (distribuzioni classiche). Per altre informazioni sui modelli di distribuzione di Azure, vedere Resource Manager e distribuzione classica.

Informazioni sull'accesso in lettura anonimo

L'accesso anonimo ai dati è sempre vietato per impostazione predefinita. Esistono due impostazioni separate che influiscono sull'accesso anonimo:

  1. Impostazione di accesso anonimo per l'account di archiviazione. Un account di archiviazione di Azure Resource Manager offre un'impostazione per consentire o impedire l'accesso anonimo per l'account. Microsoft consiglia di non consentire l'accesso anonimo per gli account di archiviazione per una sicurezza ottimale.

    Quando l'accesso anonimo è consentito a livello di account, i dati BLOB non sono disponibili per l'accesso in lettura anonimo, a meno che l'utente non esegua il passaggio aggiuntivo per configurare in modo esplicito l'impostazione di accesso anonimo del contenitore.

  2. Configurare l'impostazione di accesso anonimo del contenitore. Per impostazione predefinita, l'impostazione di accesso anonimo di un contenitore è disabilitata, ovvero l'autorizzazione è necessaria per ogni richiesta al contenitore o ai relativi dati. Un utente con le autorizzazioni appropriate può modificare l'impostazione di accesso anonimo di un contenitore per abilitare l'accesso anonimo solo se l'accesso anonimo è consentito per l'account di archiviazione.

Nella tabella seguente viene riepilogato il modo in cui le due impostazioni influiscono sull'accesso anonimo per un contenitore.

Il livello di accesso anonimo per il contenitore è impostato su Privato (impostazione predefinita) Il livello di accesso anonimo per il contenitore è impostato su Contenitore Il livello di accesso anonimo per il contenitore è impostato su BLOB
L'accesso anonimo non è consentito per l'account di archiviazione Nessun accesso anonimo a alcun contenitore nell'account di archiviazione. Nessun accesso anonimo a alcun contenitore nell'account di archiviazione. L'impostazione dell'account di archiviazione sostituisce l'impostazione del contenitore. Nessun accesso anonimo a alcun contenitore nell'account di archiviazione. L'impostazione dell'account di archiviazione sostituisce l'impostazione del contenitore.
L'accesso anonimo è consentito per l'account di archiviazione Nessun accesso anonimo a questo contenitore (configurazione predefinita). L'accesso anonimo è consentito a questo contenitore e ai relativi BLOB. L'accesso anonimo è consentito ai BLOB in questo contenitore, ma non al contenitore stesso.

Quando l'accesso anonimo è consentito per un account di archiviazione e configurato per un contenitore specifico, una richiesta di lettura di un BLOB in tale contenitore passato senza un'intestazione di autorizzazione viene accettata dal servizio e i dati del BLOB vengono restituiti nella risposta.

Rilevare le richieste anonime dalle applicazioni client

Quando si impedisce l'accesso in lettura anonimo per un account di archiviazione, si rischia di rifiutare le richieste ai contenitori e ai BLOB attualmente configurati per l'accesso anonimo. Non consentire l'accesso anonimo per un account di archiviazione sostituisce le impostazioni di accesso per i singoli contenitori in tale account di archiviazione. Quando l'accesso anonimo non è consentito per l'account di archiviazione, eventuali future richieste anonime a tale account avranno esito negativo.

Per comprendere come impedire l'accesso anonimo può influire sulle applicazioni client, è consigliabile abilitare la registrazione e le metriche per tale account e analizzare i modelli di richieste anonime in un intervallo di tempo. Usare le metriche per determinare il numero di richieste anonime all'account di archiviazione e usare i log per determinare i contenitori a cui si accede in modo anonimo.

Monitorare le richieste anonime con Esplora metriche

Per tenere traccia delle richieste anonime a un account di archiviazione, usare Esplora metriche di Azure nella portale di Azure. Per altre informazioni su Esplora metriche, vedere Analizzare le metriche con Esplora metriche di Monitoraggio di Azure.

Seguire questa procedura per creare una metrica che tiene traccia delle richieste anonime:

  1. Passare all'account di archiviazione nel portale di Azure. Nella sezione Monitoraggio selezionare Metriche.

  2. Selezionare Aggiungi metrica. Nella finestra di dialogo Metrica specificare i valori seguenti:

    1. Lasciare il campo Ambito impostato sul nome dell'account di archiviazione.
    2. Impostare spazio dei nomi della metrica su BLOB. Questa metrica segnala solo le richieste per l'archiviazione BLOB.
    3. Impostare il campo Metrica su Transazioni.
    4. Impostare il campo Aggregazione su Somma.

    La nuova metrica visualizza la somma del numero di transazioni rispetto all'archivio BLOB in un determinato intervallo di tempo. La metrica risultante viene visualizzata come illustrato nell'immagine seguente:

    Screenshot showing how to configure metric to sum blob transactions

  3. Selezionare quindi il pulsante Aggiungi filtro per creare un filtro sulla metrica per le richieste anonime.

  4. Nella finestra di dialogo Filtro specificare i valori seguenti:

    1. Impostare il valore della proprietà su Autenticazione.
    2. Impostare il campo Operatore sul segno di uguale (=).
    3. Impostare il campo Valori su Anonimo selezionandolo dall'elenco a discesa o digitandolo.
  5. Nell'angolo in alto a destra, selezionare l'intervallo di tempo in cui si vuole visualizzare la metrica. È anche possibile indicare come deve essere granulare l'aggregazione delle richieste specificando intervalli da 1 minuto a 1 mese.

Dopo aver configurato la metrica, le richieste anonime inizieranno a essere visualizzate nel grafico. L'immagine seguente mostra le richieste anonime aggregate negli ultimi 30 minuti.

Screenshot showing aggregated anonymous requests against Blob storage

È anche possibile configurare una regola di avviso per notificare quando viene effettuato un determinato numero di richieste anonime sull'account di archiviazione. Per altre informazioni, vedere Creare, visualizzare e gestire gli avvisi delle metriche con Monitoraggio di Azure.

Analizzare i log per identificare i contenitori che ricevono richieste anonime

Archiviazione di Azure log acquisisce i dettagli sulle richieste effettuate sull'account di archiviazione, inclusa la modalità di autorizzazione di una richiesta. È possibile analizzare i log per determinare quali contenitori ricevono richieste anonime.

Per registrare le richieste all'account Archiviazione di Azure per valutare le richieste anonime, è possibile usare Archiviazione di Azure registrazione in Monitoraggio di Azure. Per altre informazioni, vedere Monitorare Archiviazione di Azure.

Archiviazione di Azure la registrazione in Monitoraggio di Azure supporta l'uso di query di log per analizzare i dati di log. Per eseguire query sui log, è possibile usare un'area di lavoro Log Analytics di Azure. Per altre informazioni sulle query di log, vedere Esercitazione: Introduzione alle query di Log Analytics.

Creare un'impostazione di diagnostica nella portale di Azure

Per registrare Archiviazione di Azure dati con Monitoraggio di Azure e analizzarli con Analisi dei log di Azure, è prima necessario creare un'impostazione di diagnostica che indica quali tipi di richieste e per quali servizi di archiviazione si vogliono registrare i dati. Per creare un'impostazione di diagnostica nel portale di Azure, seguire questa procedura:

  1. Creare una nuova area di lavoro Analisi dei log nella sottoscrizione contenente l'account Archiviazione di Azure. Dopo aver configurato la registrazione per l'account di archiviazione, i log saranno disponibili nell'area di lavoro Analisi dei log. Per altre informazioni, vedere Creare un'area di lavoro Log Analytics nel portale di Azure.

  2. Passare all'account di archiviazione nel portale di Azure.

  3. Nella sezione Monitoraggio selezionare Impostazioni di diagnostica.

  4. Selezionare BLOB per registrare le richieste effettuate nell'archivio BLOB.

  5. Selezionare Aggiungi impostazione di diagnostica.

  6. Immettere un nome per le impostazioni di diagnostica.

  7. In Dettagli categoria, nella sezione log , scegliere i tipi di richieste da registrare. Tutte le richieste anonime sono richieste di lettura, quindi, selezionare StorageRead per acquisire richieste anonime.

  8. In Dettagli destinazione, selezionare Invia ad Analisi dei log. Selezionare la sottoscrizione e l'area di lavoro Log Analytics creata in precedenza, come illustrato nell'immagine seguente.

    Screenshot showing how to create a diagnostic setting for logging requests

Dopo aver creato l'impostazione di diagnostica, le richieste all'account di archiviazione vengono successivamente registrate in base a tale impostazione. Per altre informazioni, vedere Creare un'impostazione di diagnostica per raccogliere i log delle risorse e le metriche in Azure.

Per un riferimento ai campi disponibili in Archiviazione di Azure log in Monitoraggio di Azure, vedere Log delle risorse.

Eseguire query sui log per le richieste anonime

Archiviazione di Azure log in Monitoraggio di Azure includono il tipo di autorizzazione usato per effettuare una richiesta a un account di archiviazione. Nella query di log filtrare la proprietà AuthenticationType per visualizzare le richieste anonime.

Per recuperare i log per gli ultimi sette giorni per le richieste anonime nell'archivio BLOB, aprire l'area di lavoro Log Analytics. Incollare quindi la query seguente in una nuova query di log ed eseguirla:

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

È anche possibile configurare una regola di avviso basata su questa query per inviare una notifica alle richieste anonime. Per altre informazioni, vedere Creare, visualizzare e gestire gli avvisi dei log con Monitoraggio di Azure.

Risposte alle richieste anonime

Quando blob Archiviazione riceve una richiesta anonima, tale richiesta avrà esito positivo se tutte le condizioni seguenti sono vere:

  • L'accesso anonimo è consentito per l'account di archiviazione.
  • Il contenitore di destinazione è configurato per consentire l'accesso anonimo.
  • La richiesta è per l'accesso in lettura.

Se una di queste condizioni non è vera, la richiesta avrà esito negativo. Il codice di risposta in caso di errore dipende dal fatto che la richiesta anonima sia stata effettuata con una versione del servizio che supporta la richiesta di connessione. La sfida di connessione è supportata con le versioni del servizio 2019-12-12 e successive:

  • Se la richiesta anonima è stata effettuata con una versione del servizio che supporta la richiesta di connessione, il servizio restituisce il codice di errore 401 (non autorizzato).
  • Se la richiesta anonima è stata effettuata con una versione del servizio che non supporta la richiesta di connessione e l'accesso anonimo non è consentito per l'account di archiviazione, il servizio restituisce il codice di errore 409 (Conflitto).
  • Se la richiesta anonima è stata effettuata con una versione del servizio che non supporta la richiesta di connessione e l'accesso anonimo è consentito per l'account di archiviazione, il servizio restituisce il codice di errore 404 (Non trovato).

Per altre informazioni sulla sfida di connessione, vedere Bearer challenge.For more information about the bearer challenge, see Bearer challenge.

Correggere l'accesso anonimo per l'account di archiviazione

Dopo aver valutato le richieste anonime ai contenitori e ai BLOB nell'account di archiviazione, è possibile intervenire per correggere l'accesso anonimo per l'intero account impostando la proprietà AllowBlobPublicAccess dell'account su False.

L'impostazione di accesso anonimo per un account di archiviazione sostituisce le singole impostazioni per i contenitori in tale account. Quando si impedisce l'accesso anonimo per un account di archiviazione, tutti i contenitori configurati per consentire l'accesso anonimo non sono più accessibili in modo anonimo. Se non è stato consentito l'accesso anonimo per l'account, non è necessario disabilitare l'accesso anonimo per singoli contenitori.

Se lo scenario richiede che determinati contenitori siano disponibili per l'accesso anonimo, è necessario spostare tali contenitori e i relativi BLOB in account di archiviazione separati riservati per l'accesso anonimo. È quindi possibile impedire l'accesso anonimo per qualsiasi altro account di archiviazione.

La correzione dell'accesso anonimo richiede la versione 2019-04-01 o successiva del provider di risorse Archiviazione di Azure. Per altre informazioni, vedere Archiviazione di Azure API REST del provider di risorse.

Autorizzazioni per impedire l'accesso anonimo

Per impostare la proprietà AllowBlobPublicAccess per l'account di archiviazione, un utente deve disporre delle autorizzazioni per creare e gestire gli account di archiviazione. I ruoli controllo degli accessi in base al ruolo di Azure che forniscono queste autorizzazioni includono Microsoft.ArchiviazioneAzione /storageAccounts/write. I ruoli predefiniti con questa azione includono:

Le assegnazioni di ruolo devono avere come ambito il livello dell'account di archiviazione o superiore per consentire a un utente di non consentire l'accesso anonimo per l'account di archiviazione. Per altre informazioni sull'ambito del ruolo, vedere Informazioni sull'ambito per il controllo degli accessi in base al ruolo di Azure.

Prestare attenzione a limitare l'assegnazione di questi ruoli solo agli utenti amministratori che richiedono la possibilità di creare un account di archiviazione o di aggiornarne le proprietà. Usare il principio dei privilegi minimi per assicurarsi che gli utenti dispongano delle autorizzazioni più poche necessarie per eseguire le attività. Per altre informazioni sulla gestione dell'accesso con il controllo degli accessi in base al ruolo di Azure, vedere Procedure consigliate per il controllo degli accessi in base al ruolo di Azure.

Questi ruoli non forniscono l'accesso ai dati in un account di archiviazione tramite Microsoft Entra ID. Tuttavia, includono Microsoft.Archiviazione /storageAccounts/listkeys/action, che concede l'accesso alle chiavi di accesso dell'account. Con questa autorizzazione, un utente può usare le chiavi di accesso dell'account per accedere a tutti i dati in un account di archiviazione.

Microsoft.Archiviazione /storageAccounts/listkeys/action concede l'accesso ai dati tramite le chiavi dell'account, ma non concede a un utente la possibilità di modificare la proprietà AllowBlobPublicAccess per un account di archiviazione. Per gli utenti che devono accedere ai dati nell'account di archiviazione, ma non devono avere la possibilità di modificare la configurazione dell'account di archiviazione, valutare la possibilità di assegnare ruoli come Archiviazione Collaboratore ai dati BLOB, Archiviazione lettore di dati BLOB o Lettore e Accesso ai dati.

Nota

I ruoli di amministratore della sottoscrizione classica Service Amministrazione istrator e Co-Amministrazione istrator includono l'equivalente del ruolo proprietario di Azure Resource Manager. Il ruolo Proprietario include tutte le azioni, quindi un utente con uno di questi ruoli amministrativi può anche creare account di archiviazione e gestire la configurazione dell'account. Per altre informazioni, vedere Ruoli di Azure, ruoli di Microsoft Entra e ruoli di amministratore della sottoscrizione classica.

Impostare la proprietà AllowBlobPublicAccess dell'account di archiviazione su False

Per impedire l'accesso anonimo per un account di archiviazione, impostare la proprietà AllowBlobPublicAccess dell'account su False.

Importante

Non consentire l'accesso anonimo per un account di archiviazione sostituisce le impostazioni di accesso per tutti i contenitori in tale account di archiviazione. Quando l'accesso anonimo non è consentito per l'account di archiviazione, eventuali future richieste anonime a tale account avranno esito negativo. Prima di modificare questa impostazione, assicurarsi di comprendere l'impatto sulle applicazioni client che potrebbero accedere ai dati nell'account di archiviazione in modo anonimo seguendo i passaggi descritti in Rilevare le richieste anonime dalle applicazioni client.

Per impedire l'accesso anonimo per un account di archiviazione nel portale di Azure, seguire questa procedura:

  1. Passare all'account di archiviazione nel portale di Azure.

  2. Individuare l'impostazione Di configurazione in Impostazioni.

  3. Impostare Consenti accesso anonimo BLOB su Disabilitato.

    Screenshot showing how to disallow anonymous access for account

Nota

Non consentire l'accesso anonimo per un account di archiviazione non influisce sui siti Web statici ospitati in tale account di archiviazione. Il contenitore $web è sempre accessibile pubblicamente.

Dopo aver aggiornato l'impostazione di accesso anonimo per l'account di archiviazione, potrebbero essere necessari fino a 30 secondi prima che la modifica venga propagata completamente.

Script di esempio per la correzione bulk

Lo script di PowerShell di esempio seguente viene eseguito su tutti gli account di archiviazione di Azure Resource Manager in una sottoscrizione e imposta l'impostazione AllowBlobPublicAccess per tali account su 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"
}

Verificare che l'accesso anonimo sia stato corretto

Per verificare che l'accesso anonimo sia stato corretto per un account di archiviazione, è possibile verificare che l'accesso anonimo a un BLOB non sia consentito, che la modifica dell'impostazione di accesso di un contenitore non sia consentita e che non sia possibile creare un contenitore con accesso anonimo abilitato.

Verificare che l'accesso anonimo a un BLOB non sia consentito

Per verificare che l'accesso anonimo a un BLOB specifico non sia consentito, è possibile tentare di scaricare il BLOB tramite il relativo URL. Se il download ha esito positivo, il BLOB è ancora disponibile pubblicamente. Se il BLOB non è accessibile pubblicamente perché l'accesso anonimo non è consentito per l'account di archiviazione, verrà visualizzato un messaggio di errore che indica che l'accesso anonimo non è consentito in questo account di archiviazione.

L'esempio seguente illustra come usare PowerShell per tentare di scaricare un BLOB tramite il relativo URL. Ricordarsi di sostituire i valori segnaposto tra parentesi quadre con i propri valori:

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

Verificare che la modifica dell'impostazione di accesso del contenitore non sia consentita

Per verificare che l'impostazione di accesso di un contenitore non possa essere modificata dopo che l'accesso anonimo non è consentito per l'account di archiviazione, è possibile tentare di modificare l'impostazione. La modifica dell'impostazione di accesso del contenitore ha esito negativo se l'accesso anonimo non è consentito per l'account di archiviazione.

L'esempio seguente illustra come usare PowerShell per tentare di modificare l'impostazione di accesso di un contenitore. Ricordarsi di sostituire i valori segnaposto tra parentesi quadre con i propri valori:

$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

Verificare che non sia possibile creare un contenitore con accesso anonimo abilitato

Se l'accesso anonimo non è consentito per l'account di archiviazione, non sarà possibile creare un nuovo contenitore con accesso anonimo abilitato. Per verificare, è possibile provare a creare un contenitore con accesso anonimo abilitato.

L'esempio seguente illustra come usare PowerShell per tentare di creare un contenitore con accesso anonimo abilitato. Ricordarsi di sostituire i valori segnaposto tra parentesi quadre con i propri valori:

$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

Controllare l'impostazione di accesso anonimo per più account

Per controllare l'impostazione di accesso anonimo in un set di account di archiviazione con prestazioni ottimali, è possibile usare Azure Resource Graph Explorer nella portale di Azure. Per altre informazioni sull'uso di Resource Graph Explorer, vedere Avvio rapido: Eseguire la prima query di Resource Graph usando Azure Resource Graph Explorer.

L'esecuzione della query seguente in Resource Graph Explorer restituisce un elenco di account di archiviazione e visualizza l'impostazione di accesso anonimo per ogni account:

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

L'immagine seguente mostra i risultati di una query in una sottoscrizione. Per gli account di archiviazione in cui è stata impostata in modo esplicito la proprietà AllowBlobPublicAccess , i risultati vengono visualizzati come true o false. Se la proprietà AllowBlobPublicAccess non è stata impostata per un account di archiviazione, viene visualizzata come vuota (o null) nei risultati della query.

Screenshot showing query results for anonymous access setting across storage accounts

Usare Criteri di Azure per controllare la conformità

Se si dispone di un numero elevato di account di archiviazione, è consigliabile eseguire un controllo per assicurarsi che tali account siano configurati per impedire l'accesso anonimo. Per controllare un set di account di archiviazione per la conformità, usare Criteri di Azure. Criteri di Azure è un servizio che è possibile usare per creare, assegnare e gestire criteri che applicano regole alle risorse di Azure. Criteri di Azure consente di mantenere tali risorse conformi agli standard aziendali e ai contratti di servizio. Per altre informazioni, vedere Panoramica di Criteri di Azure.

Creare un criterio con un effetto Audit

Criteri di Azure supporta effetti che determinano cosa accade quando una regola dei criteri viene valutata rispetto a una risorsa. L'effetto Audit crea un avviso quando una risorsa non è conforme, ma non arresta la richiesta. Per altre informazioni sugli effetti, vedere Informazioni sugli effetti Criteri di Azure.

Per creare un criterio con effetto Controllo per l'impostazione di accesso anonimo per un account di archiviazione con il portale di Azure, seguire questa procedura:

  1. Nel portale di Azure, andare al servizio Criteri di Azure.

  2. Nella sezione Creazione selezionare Definizioni.

  3. Selezionare Aggiungi definizione di criteri per creare una nuova definizione di criteri.

  4. Per il campo Percorso definizione selezionare il pulsante Altro per specificare dove si trova la risorsa dei criteri di controllo.

  5. Specificare un nome per il criterio. Facoltativamente, è possibile specificare una descrizione e una categoria.

  6. In Regola dei criteri aggiungere la definizione di criteri seguente alla sezione policyRule .

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. Salvare il criterio.

Assegnare i criteri

Assegnare quindi il criterio a una risorsa. L'ambito dei criteri corrisponde a tale risorsa e a tutte le risorse sottostanti. Per altre informazioni sull'assegnazione dei criteri, vedere Criteri di Azure struttura di assegnazione.

Per assegnare il criterio con il portale di Azure, seguire questa procedura:

  1. Nel portale di Azure, andare al servizio Criteri di Azure.
  2. Nella sezione Creazione selezionare Assegnazioni.
  3. Selezionare Assegna criteri per creare una nuova assegnazione di criteri.
  4. Per il campo Ambito selezionare l'ambito dell'assegnazione dei criteri.
  5. Per il campo Definizione criteri selezionare il pulsante Altro , quindi selezionare il criterio definito nella sezione precedente nell'elenco.
  6. Immettere un nome per l'assegnazione del criterio. La descrizione è facoltativa.
  7. Lasciare l'opzione Imposizione criteri impostata su Abilitato. Questa impostazione non ha alcun effetto sui criteri di controllo.
  8. Selezionare Rivedi e crea per creare l'assegnazione.

Visualizzare il report di conformità

Dopo aver assegnato i criteri, è possibile visualizzare il report di conformità. Il report di conformità per un criterio di controllo fornisce informazioni su quali account di archiviazione non sono conformi ai criteri. Per altre informazioni, vedere Ottenere i dati di conformità dei criteri.

La disponibilità del report di conformità dopo la creazione dell'assegnazione dei criteri potrebbe richiedere alcuni minuti.

Per visualizzare il report di conformità nel portale di Azure, seguire questa procedura:

  1. Nel portale di Azure, andare al servizio Criteri di Azure.

  2. Selezionare Conformità.

  3. Filtrare i risultati per il nome dell'assegnazione di criteri creata nel passaggio precedente. Il report mostra quante risorse non sono conformi ai criteri.

  4. È possibile eseguire il drill-down nel report per altri dettagli, incluso un elenco di account di archiviazione che non sono conformi.

    Screenshot showing compliance report for audit policy for anonymous access

Usare Criteri di Azure per applicare l'accesso autorizzato

Criteri di Azure supporta la governance del cloud assicurandosi che le risorse di Azure rispettino i requisiti e gli standard. Per garantire che gli account di archiviazione nell'organizzazione consentano solo le richieste autorizzate, è possibile creare criteri che impediscono la creazione di un nuovo account di archiviazione con un'impostazione di accesso anonimo che consente richieste anonime. Questo criterio impedirà inoltre tutte le modifiche di configurazione a un account esistente se l'impostazione di accesso anonimo per tale account non è conforme ai criteri.

I criteri di imposizione usano l'effetto Deny per impedire una richiesta che creerebbe o modificasse un account di archiviazione per consentire l'accesso anonimo. Per altre informazioni sugli effetti, vedere Informazioni sugli effetti Criteri di Azure.

Per creare un criterio con effetto Nega per un'impostazione di accesso anonimo che consente le richieste anonime, seguire la stessa procedura descritta in Usare Criteri di Azure per controllare la conformità, ma specificare il codice JSON seguente nella sezione policyRule della definizione dei criteri:

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

Dopo aver creato il criterio con l'effetto Nega e assegnarlo a un ambito, un utente non può creare un account di archiviazione che consenta l'accesso anonimo. Né un utente può apportare modifiche di configurazione a un account di archiviazione esistente che attualmente consente l'accesso anonimo. Se si tenta di eseguire questa operazione, si verifica un errore. L'impostazione di accesso anonimo per l'account di archiviazione deve essere impostata su false per procedere con la creazione o la configurazione dell'account.

L'immagine seguente mostra l'errore che si verifica se si tenta di creare un account di archiviazione che consente l'accesso anonimo quando un criterio con effetto Deny richiede che l'accesso anonimo non sia consentito.

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

Passaggi successivi