Usare l'interfaccia della riga di comando di Azure per gestire gli elenchi di controllo di accesso in Azure Data Lake Storage
Questo articolo illustra come usare l'interfaccia della riga di comando di Azure per ottenere, impostare e aggiornare gli elenchi di controllo di accesso di directory e file.
L'ereditarietà di ACL è già disponibile per i nuovi elementi figlio creati in una directory padre Ma è anche possibile aggiungere, aggiornare e rimuovere gli ACL in modo ricorsivo sugli elementi figlio esistenti di una directory padre senza dover apportare queste modifiche singolarmente per ogni elemento figlio.
Esempi di | riferimento | Inviare commenti e suggerimenti
Prerequisiti
Una sottoscrizione di Azure. Per altre informazioni, vedere Ottenere la versione di valutazione gratuita di Azure.
Un account di archiviazione con spazio dei nomi gerarchico abilitato. Per crearne uno, seguire queste istruzioni.
Interfaccia della riga di comando di Azure versione
2.14.0
o successiva.Una delle autorizzazioni di sicurezza seguenti:
Entità di sicurezza microsoft Entra ID di cui è stato effettuato il provisioning a cui è stato assegnato il ruolo Proprietario dati BLOB di archiviazione, con ambito al contenitore di destinazione, all'account di archiviazione, al gruppo di risorse padre o alla sottoscrizione.
Utente proprietario del contenitore o della directory di destinazione a cui si prevede di applicare le impostazioni ACL. Per impostare gli ACL in modo ricorsivo, include tutti gli elementi figlio nel contenitore o nella directory di destinazione.
Chiave dell'account di archiviazione.
Assicurarsi che sia installata la versione corretta dell'interfaccia della riga di comando di Azure
Aprire Azure Cloud Shello aprire un'applicazione console comando come Windows PowerShell, se è stata installata l'interfaccia della riga di comando di Azure in locale.
Verificare con il comando seguente che la versione dell'interfaccia della riga di comando di Azure installata corrisponda a
2.14.0
o successive.az --version
Se la versione dell'interfaccia della riga di comando di Azure fosse inferiore a
2.14.0
, installare una versione successiva. Per altre informazioni, vedere Installare l'interfaccia della riga di comando di Azure.
Effettuare la connessione all'account
Se si usa l'interfaccia della riga di comando di Azure in locale, eseguire il comando di accesso.
az login
Se l'interfaccia della riga di comando può aprire il browser predefinito, eseguirà questa operazione e caricherà una pagina di accesso di Azure.
In caso contrario, aprire una pagina del browser all'indirizzo https://aka.ms/devicelogin e immettere il codice di autorizzazione visualizzato nel terminale. Quindi, accedere con le credenziali dell'account nel browser.
Per altre informazioni sui diversi metodi di autenticazione, vedere Autorizzare l'accesso ai dati BLOB o ai dati della coda con l'interfaccia della riga di comando di Azure.
Se la propria identità è associata a più sottoscrizioni, impostare come sottoscrizione attiva quella dell’account di archiviazione destinato a ospitare il sito Web statico.
az account set --subscription <subscription-id>
Sostituire il valore segnaposto
<subscription-id>
con l'ID della sottoscrizione.
Nota
L'esempio presentato in questo articolo illustra l'autorizzazione Microsoft Entra. Per altre informazioni sui metodi di autorizzazione, vedere Autorizzare l'accesso ai dati BLOB o ai dati della coda con l'interfaccia della riga di comando di Azure.
Ottenere elenchi di controllo di accesso
Ottenere l'ACL di una directory usando il comando az storage fs access show.
Questo esempio illustra come recuperare l'ACL di una directory e quindi come stampare l'ACL nella console.
az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Ottenere le autorizzazioni di accesso di un file usando il comando az storage fs access show.
Questo esempio illustra come recuperare l'ACL di un file e quindi come stampare l'ACL nella console.
az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login
Nell'immagine seguente illustra l'output dopo aver recuperato l'ACL di una directory.
In questo esempio, l'utente proprietario è provvisto delle autorizzazioni di lettura, scrittura ed esecuzione. Il gruppo proprietario è provvisto delle sole autorizzazioni di lettura ed esecuzione. Per altre informazioni sugli elenchi di controllo di accesso, vedere Controllo di accesso in Azure Data Lake Storage.
Impostare gli ACL
Quando si imposta un elenco di controllo di accesso, si sostituisce l'intero ACL, incluse tutte le voci. Se si vuole modificare il livello di autorizzazione di un'entità di sicurezza o aggiungere una nuova entità di sicurezza all'ACL senza influire sulle altre voci esistenti, è consigliabile aggiornare invece l'ACL. Per aggiornare un elenco di controllo di accesso anziché sostituirlo, vedere la sezione Aggiornare gli ACL di questo articolo.
Se si sceglie di impostare l'ACL, è necessario aggiungere una voce per l'utente proprietario, una voce per il gruppo proprietario e una voce per tutti gli altri utenti. Per altre informazioni sull'utente proprietario, sul gruppo proprietario e su tutti gli altri utenti, vedere Utenti e identità.
Questa sezione illustra come:
- Impostare un ACL
- Impostare ricorsivamente gli elenchi di controllo di accesso
Impostare un ACL
Usare il comando az storage fs access set per impostare l'ACL di una directory.
Questo esempio illustra come impostare l'ACL in una directory per l'utente proprietario, il gruppo proprietario o altri utenti, quindi stampa l'ACL nella console.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Questo esempio illustra come impostare l'ACL predefinito in una directory per l'utente proprietario, il gruppo proprietario o altri utenti, infine stampa l'ACL nella console.
az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Usare il comando az storage fs access set per impostare l'acl di un file.
Questo esempio illustra come impostare l'ACL in un file per l'utente proprietario, il gruppo proprietario o altri utenti, quindi stampa l'ACL nella console.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login
Nota
Per impostare l'elenco di controllo di accesso di un gruppo o di un utente specifico, usare i rispettivi ID oggetto. Ad esempio, per impostare l'ACL di un gruppo, usare group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
. Per impostare l'ACL di un utente, usare user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Nell'immagine seguente illustra l'output dopo aver impostato l'ACL di un file.
In questo esempio, l'utente proprietario e il gruppo proprietario sono provvisti delle sole autorizzazioni di lettura e scrittura. Tutti gli altri utenti sono provvisti di autorizzazioni di scrittura ed esecuzione. Per altre informazioni sugli elenchi di controllo di accesso, vedere Controllo di accesso in Azure Data Lake Storage.
Impostare ricorsivamente gli elenchi di controllo di accesso
Impostare gli ACL in modo ricorsivo usando il comando az storage fs access set-recursive .
In questo esempio viene impostato l'ACL di una directory denominata my-parent-directory
. Queste voci assegnano all'utente le autorizzazioni di lettura, scrittura ed esecuzione proprietarie, assegnano al gruppo proprietario solo autorizzazioni di lettura ed esecuzione e non consentono l'accesso a tutti gli altri utenti. L'ultima voce ACL in questo esempio fornisce a un utente specifico le autorizzazioni di lettura ed esecuzione con l'ID oggetto "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".
az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Nota
Se si desidera impostare una voce ACL predefinita , aggiungere il prefisso default:
a ogni voce. Ad esempio, default:user::rwx
o default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x
.
Aggiornare gli elenchi di controllo di accesso
Quando si aggiorna un ACL, si modifica l'ACL anziché sostituirlo. Ad esempio, è possibile aggiungere una nuova entità di sicurezza all'ACL senza influire sulle altre entità di sicurezza elencate nell'ACL. Per sostituire l'ACL invece di aggiornarlo, vedere la sezione Impostare gli ACL di questo articolo.
Per aggiornare un elenco di controllo di accesso, creare un nuovo oggetto ACL con la voce ACL da aggiornare e quindi usare tale oggetto nell'operazione di aggiornamento dell'elenco di controllo di accesso. Non ottenere l'ACL esistente, specificare solo le voci ACL da aggiornare.
Questa sezione illustra come:
- Aggiornare un ACL
- Aggiornare gli ACL in modo ricorsivo
Aggiornare un ACL
Aggiornare l'ACL di un file usando il comando az storage fs access update-recursive .
In questo esempio viene aggiornata una voce ACL con autorizzazione di scrittura.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login
Per aggiornare l'ACL di un gruppo o un utente specifico, usare i rispettivi ID oggetto. Ad esempio, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
o user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Nota
L'aggiornamento dell'elenco di controllo di accesso di una singola directory senza aggiornare l'elenco di controllo di accesso degli elementi figlio non è supportato dall'interfaccia della riga di comando di Azure. Per aggiornare l'ACL di una directory senza modificare gli elenchi di controllo di accesso di tutti gli elementi figlio in tale directory, usare uno degli altri strumenti e SDK supportati. Vedere Come impostare gli elenchi di controllo di accesso.
Aggiornare gli ACL in modo ricorsivo
Aggiornare gli ACL in modo ricorsivo usando il comando az storage fs access update-recursive .
In questo esempio viene aggiornata una voce ACL con autorizzazione di scrittura.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Nota
Se si vuole aggiornare una voce ACL predefinita , aggiungere il prefisso default:
a ogni voce. Ad esempio: default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x
.
Rimuovere le voci ACL in modo ricorsivo
È possibile rimuovere una o più voci ACL in modo ricorsivo. Per rimuovere una voce ACL, creare un nuovo oggetto ACL per la voce ACL da rimuovere e quindi usare tale oggetto nell'operazione di rimozione dell'elenco di controllo di accesso. Non ottenere l'ACL esistente, specificare solo le voci ACL da rimuovere.
Rimuovere le voci ACL usando il comando az storage fs access remove-recursive .
In questo esempio viene rimossa una voce ACL dalla directory radice del contenitore.
az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Nota
Se si desidera rimuovere una voce ACL predefinita , aggiungere il prefisso default:
a ogni voce. Ad esempio: default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Ripristino da errori
È possibile che si verifichino errori di runtime o di autorizzazione durante la modifica degli elenchi di controllo di accesso in modo ricorsivo. Per gli errori di runtime, riavviare il processo dall'inizio. Gli errori di autorizzazione possono verificarsi se l'entità di sicurezza non dispone di autorizzazioni sufficienti per modificare l'ACL di una directory o di un file presente nella gerarchia di directory da modificare. Risolvere il problema di autorizzazione, quindi scegliere di riprendere il processo dal punto di errore usando un token di continuazione o riavviare il processo dall'inizio. Non è necessario usare il token di continuazione se si preferisce riavviare dall'inizio. È possibile riapplicare le voci ACL senza alcun impatto negativo.
In caso di errore, è possibile restituire un token di continuazione impostando il --continue-on-failure
parametro su false
. Dopo aver affrontato gli errori, è possibile riprendere il processo dal punto di errore eseguendo di nuovo il comando e quindi impostando il --continuation
parametro sul token di continuazione.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Se si desidera che il processo venga completato senza interruzioni dagli errori di autorizzazione, è possibile specificare tale fatto.
Per assicurarsi che il processo venga completato senza interruzioni, impostare il --continue-on-failure
parametro su true
.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Procedure consigliate
Questa sezione fornisce alcune linee guida sulle procedure consigliate per l'impostazione degli ACL in modo ricorsivo.
Gestione degli errori di runtime
Un errore di runtime può verificarsi per molti motivi (ad esempio, un'interruzione o un problema di connettività client). Se si verifica un errore di runtime, riavviare il processo ACL ricorsivo. Gli ACL possono essere riapplicati agli elementi senza causare un impatto negativo.
Gestione degli errori di autorizzazione (403)
Se si verifica un'eccezione di controllo di accesso durante l'esecuzione di un processo ACL ricorsivo, l'entità di sicurezza di Active Directory potrebbe non disporre di autorizzazioni sufficienti per applicare un ACL a uno o più elementi figlio nella gerarchia di directory. Quando si verifica un errore di autorizzazione, il processo viene arrestato e viene fornito un token di continuazione. Risolvere il problema di autorizzazione, quindi usare il token di continuazione per elaborare il set di dati rimanente. Le directory e i file che sono già stati elaborati correttamente non dovranno essere elaborati di nuovo. È anche possibile scegliere di riavviare il processo ACL ricorsivo. Gli ACL possono essere riapplicati agli elementi senza causare un impatto negativo.
Credenziali
È consigliabile effettuare il provisioning di un'entità di sicurezza di Microsoft Entra assegnata al ruolo Proprietario dati BLOB di archiviazione nell'ambito dell'account di archiviazione o del contenitore di destinazione.
Prestazioni
Per ridurre la latenza, è consigliabile eseguire il processo ACL ricorsivo in una macchina virtuale di Azure che si trova nella stessa area dell'account di archiviazione.
Limiti ACL
Il numero massimo di ACL che è possibile applicare a una directory o a un file è 32 ACL di accesso e 32 ACL predefiniti. Per altre informazioni, vedere Access control in Azure Data Lake Storage Gen2 (Controllo di accesso in Azure Data Lake Storage Gen2).