Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Una firma di accesso condiviso (SAS) permette all'utente di concedere l'accesso limitato a contenitori e BLOB nell'account di archiviazione. Quando si crea una firma di accesso condiviso, si specificano i relativi vincoli, incluse le risorse di Archiviazione di Azure alle quali un client è autorizzato ad accedere, le autorizzazioni di cui dispone per tali risorse e la durata della validità della firma di accesso condiviso.
Ogni SAS è firmata con una chiave. È possibile firmare un SAS in uno dei due modi:
- Con una chiave creata utilizzando le credenziali di Microsoft Entra. Una SAS firmata con credenziali Microsoft Entra è una SAS delegata dall'utente. A un client che crea una SAS di delega utente deve essere assegnato un ruolo RBAC di Azure che include l'azione Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Per saperne di più, vedere Creare una firma di accesso condiviso delegata dall'utente.
- Con la chiave dell’account di archiviazione. Una chiave di accesso condiviso del servizio e una chiave di accesso condiviso dell'account sono entrambe firmate con la chiave dell'account condivisa. Il client che crea una SAS di servizio deve avere accesso diretto alla chiave dell'account oppure deve essergli assegnata l'autorizzazione Microsoft.Storage/storageAccounts/listkeys/action. Per altre informazioni, vedere Creare una firma di accesso condiviso del servizio oppure Creare una firma di accesso condiviso dell'account.
Nota
Una firma di accesso condiviso di delega utente offre una sicurezza superiore rispetto a una firma di accesso condiviso di delega utente firmata con la chiave dell'account di archiviazione. Quando possibile, Microsoft consiglia di usare una SAS di delega utente. Per altre informazioni, vedere Concedere accesso limitato ai dati con firme di accesso condiviso.
Questo articolo mostra come utilizzare le credenziali Microsoft Entra per creare un SAS di delega utente per un container o un blob con la interfaccia della riga di comando di Azure.
Informazioni sulla firma di accesso condiviso (SAS) delegata all'utente
Un token SAS per accedere a un contenitore o a un BLOB può essere protetto usando le credenziali di Microsoft Entra o la chiave dell'account. Una SAS protetta con le credenziali di Microsoft Entra è chiamata SAS di delega utente, perché il token OAuth 2.0 usato per firmare la SAS viene richiesto per conto dell'utente.
Microsoft raccomanda di usare le credenziali di Microsoft Entra, quando è possibile, come procedura consigliata per la sicurezza, invece di usare la chiave dell'account, che può essere compromessa più facilmente. Se la progettazione dell'applicazione richiede firme di accesso condiviso (SAS), usa le credenziali di Microsoft Entra per creare una SAS di delega utente per una sicurezza superiore. Per altre informazioni sulla SAS di delega utente, vedi Creare una SAS di delega utente.
Caution
Qualsiasi client che possiede una SAS valida può accedere ai dati nel tuo account di archiviazione, secondo quanto previsto da quella SAS. È importante proteggere una SAS da un uso malevolo o non intenzionale. Agisci con prudenza nel distribuire un SAS e predisponi un piano per revocare un SAS compromesso. Per evitare usi non intenzionali, usa un SAS delegato dall'utente associato a uno specifico utente, che associa il token SAS all'utente finale designato e non può essere usato da nessun altro.
Per ulteriori informazioni sulle firme di accesso condiviso, vedere Concedere accesso limitato alle risorse di Archiviazione di Azure usando firme di accesso condiviso (SAS).
Installa l'ultima versione della interfaccia della riga di comando di Azure
Per utilizzare la interfaccia della riga di comando di Azure e mettere in sicurezza un SAS con credenziali Microsoft Entra, assicurati prima di aver installato l'ultima versione di interfaccia della riga di comando di Azure. Per maggiori informazioni sull'installazione della interfaccia della riga di comando di Azure, vedi Installa la interfaccia della riga di comando di Azure.
Per creare un SAS di delega utente usando la CLI di interfaccia della riga di comando di Azure, assicurati di aver installato la versione 2.0.78 o successiva. Per controllare la versione installata, usa il az --version comando.
Accedere con le credenziali di Microsoft Entra
Accedi alla CLI di interfaccia della riga di comando di Azure con le tue credenziali Microsoft Entra. Per altre informazioni, vedere Accedere con l'interfaccia della riga di comando di Azure.
Assegna i permessi con Azure RBAC
Per creare un SAS di delegazione utente da Azure PowerShell, l'account Microsoft Entra utilizzato per accedere ad interfaccia della riga di comando di Azure deve essere assegnato a un ruolo che includa la Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey azione. Questo permesso consente a quell'account Microsoft Entra di richiedere la chiave di delega utente. La chiave di delega utente viene utilizzata per firmare il SAS di delega utente. Il ruolo che fornisce l'azione Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey deve essere assegnata a livello dell'account di storage, del gruppo di risorse o dell'abbonamento.
Se non disponi di autorizzazioni sufficienti per assegnare ruoli di Azure a un'entità di sicurezza di Microsoft Entra, potresti dover chiedere al proprietario dell'account o all'amministratore di assegnare le autorizzazioni necessarie.
Il seguente esempio assegna il ruolo Storage Blob Data Contributor, che include l'azione Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey. Il ruolo è definito a livello dell'account di archiviazione.
È necessario ricordare di sostituire i valori segnaposto tra parentesi uncinate con i valori personalizzati:
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"
Per altre informazioni sui ruoli predefiniti che includono l'azione Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey, vedere ruoli predefiniti di Azure.
Usa le credenziali Microsoft Entra per ottenere un SAS
Quando crei una SAS di delega utente con interfaccia della riga di comando di Azure, la chiave di delega utente utilizzata per firmare la SAS viene creata automaticamente per te. L'ora di inizio e la scadenza che specifichi per il SAS sono anch'esse usate come ora di inizio e di scadenza per la chiave di delega utente.
Poiché l'intervallo massimo in cui la chiave di delega utente è valida è di 7 giorni dalla data di inizio, dovresti specificare un tempo di scadenza per il SAS entro 7 giorni dall'inizio del momento. L'SAS diventa invalido dopo la scadenza della chiave di delega utente, quindi un SAS con una scadenza superiore a 7 giorni sarà comunque valido solo per 7 giorni.
Quando si crea un SAS di delega utente, --auth-mode login e --as-user parameters sono obbligatori. Specifica il login per il --auth-mode parametro in modo che le richieste fatte su Archiviazione di Azure siano autorizzate con le tue credenziali Microsoft Entra. Specifica il --as-user parametro per indicare che il SAS restituito deve essere un SAS di delegazione utente.
Crea un SAS di delegazione utente per un container
Per creare un SAS di delega utente per un contenitore con l'interfaccia della riga di comando di Azure, esegui il comando az storage container generate-sas.
I permessi supportati per una delega utente SAS su un container includono Aggiungi, Crea, Elimina, Elenca, Lettura e Scrive. I permessi possono essere specificati singolarmente o combinati. Per maggiori informazioni su questi permessi, vedi Crea una delega utente SAS.
Il seguente esempio restituisce un token SAS di delegazione utente per un container. Ricordare di sostituire i valori segnaposto tra parentesi con i valori personalizzati:
az storage container generate-sas \
--account-name <storage-account> \
--name <container> \
--permissions acdlrw \
--expiry <date-time> \
--auth-mode login \
--as-user
Il token SAS della delega utente restituito sarà simile a:
se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>
Nota
Il token SAS restituito da gestione rete virtuale di Azure non include il carattere delimitatore ('?') per la stringa di query URL. Se stai aggiungendo il token SAS a un URL di risorsa, ricorda di aggiungere anche il carattere delimitatore.
Crea un SAS di delegazione utente per un blob
Per creare un SAS di delega utente per un blob con la interfaccia della riga di comando di Azure, chiama il comando az, storage blob generate-sas.
I permessi supportati per una delega utente SAS su un blob includono Aggiungi, Crea, Elimina, Lettura e Scrittura. I permessi possono essere specificati singolarmente o combinati. Per maggiori informazioni su questi permessi, vedi Crea una delega utente SAS.
La seguente sintassi restituisce un SAS di delega utente per un blob. L'esempio specifica il --full-uri parametro, che restituisce l'URI del blob con il token SAS aggiunto. Ricordare di sostituire i valori segnaposto tra parentesi con i valori personalizzati:
az storage blob generate-sas \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--permissions acdrw \
--expiry <date-time> \
--auth-mode login \
--as-user \
--full-uri
L'URI SAS della delega utente restituita sarà simile a:
https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>
Nota
Il token SAS restituito da interfaccia della riga di comando di Azure non include il carattere delimitatore ('?') per la stringa di query URL. Se si aggiunge il token di firma di accesso condiviso a un URL della risorsa, ricordarsi di aggiungere il carattere delimitatore all'URL della risorsa prima di aggiungere il token di firma di accesso condiviso.
Un SAS di delega utente non supporta la definizione dei permessi con una politica di accesso memorizzata.
Revocare una SAS di delega utente
Per revocare un SAS di delega utente da interfaccia della riga di comando di Azure, esegui il comando az storage account revoke-delegation-keys. Questo comando revoca tutte le chiavi di delega utente associate all'account di archiviazione specificato. Qualsiasi firma di accesso condivisa associata a queste chiavi viene invalidata.
È necessario ricordare di sostituire i valori segnaposto tra parentesi uncinate con i valori personalizzati:
az storage account revoke-delegation-keys \
--name <storage-account> \
--resource-group <resource-group>
Importante
Sia la chiave di delega utente che le assegnazioni dei ruoli di Azure sono memorizzate nella cache da Archiviazione di Azure, quindi potrebbe esserci un ritardo tra l'avvio del processo di revoca e il momento in cui una delega utente esistente SAS diventa invalida.