Configurare l'accesso in lettura anonimo per contenitori e BLOB

Archiviazione di Azure supporta l'accesso in lettura anonimo facoltativo per contenitori e BLOB. Per impostazione predefinita, l'accesso anonimo ai dati non è mai consentito. A meno che non si abiliti in modo esplicito l'accesso anonimo, tutte le richieste a un contenitore e i relativi BLOB devono essere autorizzati. Quando si configura l'impostazione del livello di accesso di un contenitore per consentire l'accesso anonimo, i client possono leggere i dati in tale contenitore senza autorizzare la richiesta.

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 correggere l'accesso anonimo per l'account di archiviazione.

Questo articolo descrive come configurare l'accesso in lettura anonimo per un contenitore e i relativi BLOB. Per informazioni su come correggere l'accesso anonimo per una sicurezza ottimale, vedere uno di questi articoli:

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, ossia è necessaria l'autorizzazione 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 questo è 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 ad alcun contenitore nell'account di archiviazione. Nessun accesso anonimo ad alcun contenitore nell'account di archiviazione. L'impostazione dell'account di archiviazione sostituisce l'impostazione del contenitore. Nessun accesso anonimo ad 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 passata senza un'intestazione Autorizzazione viene accettata dal servizio e i dati del BLOB vengono restituiti nella risposta.

Consentire o impedire l'accesso in lettura anonimo per un account di archiviazione

Quando è consentito l'accesso anonimo per un account di archiviazione, un utente con le autorizzazioni appropriate può modificare l'impostazione di accesso anonimo di un contenitore per abilitare l'accesso anonimo ai dati in tale contenitore. I dati BLOB non sono mai 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.

Tenere presente che l'accesso anonimo a un contenitore è sempre disattivato per impostazione predefinita e deve essere configurato in modo esplicito per consentire le richieste anonime. Indipendentemente dall'impostazione nell'account di archiviazione, i dati non saranno mai disponibili per l'accesso anonimo, a meno che un utente con autorizzazioni appropriate non esegua questo passaggio aggiuntivo per abilitare l'accesso anonimo nel contenitore.

Il divieto di accesso anonimo per l'account di archiviazione sostituisce le impostazioni di accesso per tutti i contenitori in tale account di archiviazione, impedendo l'accesso anonimo ai dati BLOB in tale account. Quando l'accesso anonimo non è consentito per l'account, non è possibile configurare l'impostazione di accesso per un contenitore per consentire l'accesso anonimo e le 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. Per altre informazioni, vedere Impedire l'accesso in lettura anonimo a contenitori e BLOB.

Importante

Dopo aver disabilitato l'accesso anonimo per un account di archiviazione, i client che usano la richiesta di connessione anonima vedranno che Archiviazione di Azure restituisce un errore 403 (Accesso negato) anziché un errore 401 (Non autorizzato). È consigliabile rendere privati tutti i contenitori per mitigare questo problema. Per altre informazioni sulla modifica dell'impostazione di accesso anonimo per i contenitori, vedere Impostare il livello di accesso per un contenitore.

Per consentire o impedire l'accesso anonimo è necessaria la versione 2019-04-01 o successiva del provider di risorse di Archiviazione di Azure. Per altre informazioni, vedere API REST del provider di risorse di Archiviazione di Azure.

Autorizzazioni per impedire l'accesso anonimo

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

Le assegnazioni di ruolo devono avere come ambito minimo il livello dell'account di archiviazione per consentire a un utente di disabilitare 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 abbiano le autorizzazioni minime 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.Storage/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.

Il ruolo Microsoft.Storage/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, valutare la possibilità di assegnare ruoli come Collaboratore ai dati dei BLOB di archiviazione, Lettore dati dei BLOB di archiviazioneo Lettore e accesso ai dati.

Nota

I ruoli di amministratore della sottoscrizione classica Amministratore del servizio e Coamministratore includono l'equivalente del ruolo di Proprietario di Azure Resource Manager. Il ruolo di 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

Per consentire o impedire l'accesso anonimo per un account di archiviazione, impostare la proprietà AllowBlobPublicAccess dell'account. Questa proprietà è disponibile per tutti gli account di archiviazione creati con il modello di distribuzione Azure Resource Manager. Per altre informazioni, vedere Panoramica dell'account di archiviazione.

Per consentire o 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 Configurazione in Impostazioni.

  3. Impostare Consenti accesso anonimo ai BLOB su Abilitato o Disabilitato.

    Screenshot showing how to allow or disallow anonymous access for account

Nota

La disabilitazione dell'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.

Quando un contenitore è configurato per l'accesso anonimo, le richieste di lettura dei BLOB in tale contenitore non devono essere autorizzate. Tuttavia, tutte le regole del firewall configurate per l'account di archiviazione rimangono attive e bloccano il traffico inline con gli ACL configurati.

Per consentire o impedire l'accesso anonimo è necessaria la versione 2019-04-01 o successiva del provider di risorse di Archiviazione di Azure. Per altre informazioni, vedere API REST del provider di risorse di Archiviazione di Azure.

Negli esempi di questa sezione è stato illustrato come leggere la proprietà AllowBlobPublicAccess per l'account di archiviazione per determinare se l'accesso anonimo è attualmente consentito o non consentito. Per informazioni su come verificare che l'impostazione di accesso anonimo di un account sia configurata per impedire l'accesso anonimo, vedere Correggere l'accesso anonimo per l'account di archiviazione.

Impostare il livello di accesso anonimo per un contenitore

Per concedere agli utenti anonimi l'accesso in lettura a un contenitore e ai relativi BLOB, prima di tutto consentire l'accesso anonimo per l'account di archiviazione, quindi impostare il livello di accesso anonimo del contenitore. Se l'accesso anonimo viene negato per l'account di archiviazione, non sarà possibile configurare l'accesso anonimo per un contenitore.

Attenzione

Microsoft consiglia di evitare l'accesso anonimo ai dati BLOB nell'account di archiviazione.

Quando l'accesso anonimo è consentito per un account di archiviazione, è possibile configurare un contenitore con le autorizzazioni seguenti:

  • Nessun accesso in lettura pubblico: è possibile accedere al contenitore e ai relativi BLOB solo con una richiesta autorizzata. Questa opzione è l'impostazione predefinita per tutti i nuovi contenitori.
  • Accesso in lettura pubblico solo per i BLOB: i dati del BLOB all'interno del contenitore possono essere letti tramite richiesta anonima, ma i dati del contenitore non sono disponibili in forma anonima. I client anonimi non possono enumerare i BLOB all'interno del contenitore.
  • Accesso in lettura pubblico per il contenitore e i relativi BLOB: i dati di contenitore e BLOB possono essere letti tramite richiesta anonima, ad eccezione delle impostazioni di autorizzazione del contenitore e dei metadati del contenitore. I client possono enumerare i BLOB all'interno del contenitore tramite richiesta anonima, ma non sono in grado di enumerare i contenitori all'interno dell'account di archiviazione.

Non è possibile modificare il livello di accesso anonimo per un singolo BLOB. Il livello di accesso anonimo è impostato solo a livello di contenitore. È possibile impostare il livello di accesso anonimo del contenitore quando si crea il contenitore oppure è possibile aggiornare l'impostazione in un contenitore esistente.

Per aggiornare il livello di accesso anonimo per uno o più contenitori esistenti nel portale di Azure, seguire questa procedura:

  1. Passare alla panoramica dell'account di archiviazione nel portale di Azure.

  2. In Archiviazione dati nel pannello del menu selezionare Contenitori.

  3. Selezionare i contenitori per cui si vuole impostare il livello di accesso anonimo.

  4. Usare il pulsante Modifica livello di accesso per visualizzare le impostazioni di accesso anonimo.

  5. Selezionare il livello di accesso anonimo desiderato dall'elenco a discesa Livello di accesso anonimo e fare clic sul pulsante OK per applicare la modifica ai contenitori selezionati.

    Screenshot showing how to set anonymous access level in the portal.

Quando l'accesso anonimo non è consentito per l'account di archiviazione, non è possibile impostare il livello di accesso anonimo di un contenitore. Se si tenta di impostare il livello di accesso anonimo del contenitore, si noterà che l'impostazione è disabilitata perché l'accesso anonimo non è consentito per l'account.

Screenshot showing that setting a container's anonymous access level is blocked when anonymous access disallowed for the account

Controllare l'impostazione di accesso anonimo per un set di contenitori

È possibile controllare quali contenitori in uno o più account di archiviazione sono configurati per l'accesso anonimo elencando i contenitori e controllando l'impostazione di accesso anonimo. Questo approccio è un'opzione pratica quando un account di archiviazione non contiene un numero elevato di contenitori o quando si controlla l'impostazione in un numero ridotto di account di archiviazione. Tuttavia, le prestazioni possono risentirne se si tenta di enumerare un numero elevato di contenitori.

L'esempio seguente usa PowerShell per ottenere l'impostazione di accesso anonimo per tutti i contenitori in un account di archiviazione. Ricordare di sostituire i valori segnaposto tra parentesi con i valori personalizzati:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Supporto funzionalità

Il supporto per questa funzionalità potrebbe essere influenzato dall'abilitazione di Azure Data Lake Storage Gen2, del protocollo NFS (Network File System) 3.0 o del SSH File Transfer Protocol SFTP (FTP sicuro). Se è stata abilitata una di queste funzionalità, vedere Supporto delle funzionalità di Archivio BLOB negli account di Archiviazione di Azure per valutare il supporto per questa funzionalità.

Passaggi successivi