Creare una firma di accesso condiviso di delega utente per un contenitore o un BLOB con l'interfaccia della riga di comando di Azure

Una firma di accesso condiviso consente di concedere l'accesso limitato a contenitori e BLOB nell'account di archiviazione. Quando si crea una firma di accesso condiviso, si specificano i vincoli, tra cui quali Archiviazione di Azure risorse a cui un client è autorizzato ad accedere, quali autorizzazioni hanno per tali risorse e per quanto tempo la firma di accesso condiviso è valida.

Ogni firma di accesso condiviso viene firmata con una chiave. È possibile firmare una firma di accesso condiviso in uno dei due modi seguenti:

  • Con una chiave creata usando le credenziali di Microsoft Entra. Una firma di accesso condiviso firmata con le credenziali di Microsoft Entra è una firma di accesso condiviso della delega utente. A un client che crea una firma di accesso condiviso della delega utente deve essere assegnato un ruolo controllo degli accessi in base al ruolo di Azure che include Microsoft.ArchiviazioneAzione /storageAccounts/blobServices/generateUserDelegationKey. Per altre informazioni, vedere Creare una firma di accesso condiviso di delega utente.
  • Con la chiave dell'account di archiviazione. Sia una firma di accesso condiviso del servizio che una firma di accesso condiviso dell'account di archiviazione sono firmate con la chiave dell'account di archiviazione. Il client che crea una firma di accesso condiviso del servizio deve avere accesso diretto alla chiave dell'account o deve essere assegnato a Microsoft.ArchiviazioneAutorizzazione /storageAccounts/listkeys/action. Per altre informazioni, vedere Creare una firma di accesso condiviso del servizio o Creare una firma di accesso condiviso dell'account.

Nota

Una firma di accesso condiviso della delega utente offre una sicurezza superiore a una firma di accesso condiviso firmata con la chiave dell'account di archiviazione. Quando possibile, Microsoft consiglia di usare una firma di accesso condiviso per la delega utente. Per altre informazioni, vedere Concedere l'accesso limitato ai dati con firme di accesso condiviso.

Questo articolo illustra come usare le credenziali di Microsoft Entra per creare una firma di accesso condiviso di delega utente per un contenitore o un BLOB con l'interfaccia della riga di comando di Azure.

Informazioni sulla firma di accesso condiviso della delega utente

Un token di firma di accesso condiviso per l'accesso a un contenitore o a un BLOB può essere protetto usando le credenziali di Microsoft Entra o una chiave dell'account. Una firma di accesso condiviso protetta con le credenziali di Microsoft Entra è detta firma di accesso condiviso della delega utente, perché il token OAuth 2.0 usato per firmare la firma di accesso condiviso viene richiesto per conto dell'utente.

Microsoft consiglia di usare le credenziali di Microsoft Entra quando possibile come procedura consigliata per la sicurezza, anziché usare la chiave dell'account, che può essere compromessa più facilmente. Quando la progettazione dell'applicazione richiede firme di accesso condiviso, usare le credenziali di Microsoft Entra per creare una firma di accesso condiviso di delega utente per una maggiore sicurezza. Per altre informazioni sulla firma di accesso condiviso della delega utente, vedere Creare una firma di accesso condiviso per la delega utente.

Attenzione

Qualsiasi client che possiede una firma di accesso condiviso valido può accedere ai dati nell'account di archiviazione, come consentito da tale firma di accesso condiviso. È importante proteggere una firma di accesso condiviso da usi dannosi o imprevisti. Usare la discrezione nella distribuzione di una firma di accesso condiviso e disporre di un piano per revocare una firma di accesso condiviso compromessa.

Per altre informazioni sulle firme di accesso condiviso, vedere Concedere accesso limitato alle risorse di archiviazione di Azure tramite firme di accesso condiviso.

Installare la versione più recente dell'interfaccia della riga di comando di Azure

Per usare l'interfaccia della riga di comando di Azure per proteggere una firma di accesso condiviso con le credenziali di Microsoft Entra, assicurarsi di aver installato la versione più recente dell'interfaccia della riga di comando di Azure. Per altre informazioni sull'installazione dell'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure.

Per creare una firma di accesso condiviso della delega utente usando l'interfaccia della riga di comando di Azure, assicurarsi di aver installato la versione 2.0.78 o successiva. Per controllare la versione installata, usare il az --version comando .

Accedere con le credenziali di Microsoft Entra

Accedere all'interfaccia della riga di comando di Azure con le credenziali di Microsoft Entra. Per altre informazioni, vedere Accedere tramite l'interfaccia della riga di comando di Azure.

Assegnare autorizzazioni con il controllo degli accessi in base al ruolo di Azure

Per creare una firma di accesso condiviso della delega utente da Azure PowerShell, all'account Microsoft Entra usato per accedere all'interfaccia della riga di comando di Azure deve essere assegnato un ruolo che include Microsoft.ArchiviazioneAzione /storageAccounts/blobServices/generateUserDelegationKey. Questa autorizzazione consente all'account Microsoft Entra di richiedere la chiave di delega dell'utente. La chiave di delega utente viene usata per firmare la firma di accesso condiviso della delega utente. Ruolo che fornisce Microsoft.Archiviazione L'azione /storageAccounts/blobServices/generateUserDelegationKey deve essere assegnata al livello dell'account di archiviazione, del gruppo di risorse o della sottoscrizione.

Se non si dispone di autorizzazioni sufficienti per assegnare ruoli di Azure a un'entità di sicurezza di Microsoft Entra, potrebbe essere necessario chiedere al proprietario dell'account o all'amministratore di assegnare le autorizzazioni necessarie.

Nell'esempio seguente viene assegnato il ruolo Collaboratore dati BLOB Archiviazione, che include Microsoft.Archiviazione Azione /storageAccounts/blobServices/generateUserDelegationKey. Il ruolo è limitato al 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 Microsoft.Archiviazione/storageAccounts/blobServices/generateUserDelegationKey action, vedere Ruoli predefiniti di Azure.

Usare le credenziali di Microsoft Entra per proteggere una firma di accesso condiviso

Quando si crea una firma di accesso condiviso della delega utente con l'interfaccia della riga di comando di Azure, la chiave di delega utente usata per firmare la firma di accesso condiviso viene creata in modo implicito. L'ora di inizio e l'ora di scadenza specificate per la firma di accesso condiviso vengono usate anche come ora di inizio e 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, è necessario specificare un'ora di scadenza per la firma di accesso condiviso entro 7 giorni dall'ora di inizio. La firma di accesso condiviso non è valida dopo la scadenza della chiave di delega utente, quindi una firma di accesso condiviso con una scadenza maggiore di 7 giorni rimarrà valida solo per 7 giorni.

Quando si crea una firma di accesso condiviso della delega utente, e --auth-mode login--as-user parameters sono necessari. Specificare l'account di accesso per il --auth-mode parametro in modo che le richieste effettuate a Archiviazione di Azure siano autorizzate con le credenziali di Microsoft Entra. Specificare il --as-user parametro per indicare che la firma di accesso condiviso restituita deve essere una firma di accesso condiviso della delega utente.

Creare una firma di accesso condiviso di delega utente per un contenitore

Per creare una firma di accesso condiviso di delega utente per un contenitore con l'interfaccia della riga di comando di Azure, chiamare il comando az storage container generate-sas .

Le autorizzazioni supportate per una firma di accesso condiviso di delega utente in un contenitore includono Add, Create, Delete, List, Read e Write. Le autorizzazioni possono essere specificate in modo singly o combinato. Per altre informazioni su queste autorizzazioni, vedere Creare una firma di accesso condiviso di delega utente.

Nell'esempio seguente viene restituito un token di firma di accesso condiviso della delega utente per un contenitore. Ricordarsi di sostituire i valori segnaposto tra parentesi quadre con i propri valori:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Il token di firma di accesso condiviso della delega utente restituito sarà simile al seguente:

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 di firma di accesso condiviso restituito dal BLOB Archiviazione 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 anche il carattere delimitatore.

Creare una firma di accesso condiviso di delega utente per un BLOB

Per creare una firma di accesso condiviso di delega utente per un BLOB con l'interfaccia della riga di comando di Azure, chiamare il comando az storage blob generate-sas .

Le autorizzazioni supportate per una firma di accesso condiviso di delega utente in un BLOB includono Aggiunta, Creazione, Eliminazione, Lettura e Scrittura. Le autorizzazioni possono essere specificate in modo singly o combinato. Per altre informazioni su queste autorizzazioni, vedere Creare una firma di accesso condiviso di delega utente.

La sintassi seguente restituisce una firma di accesso condiviso di delega utente per un BLOB. Nell'esempio viene specificato il --full-uri parametro , che restituisce l'URI del BLOB con il token di firma di accesso condiviso aggiunto. Ricordarsi di sostituire i valori segnaposto tra parentesi quadre con i propri valori:

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 di firma di accesso condiviso della delega utente restituito sarà simile al seguente:

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 di firma di accesso condiviso restituito dall'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.

Una firma di accesso condiviso della delega utente non supporta la definizione delle autorizzazioni con criteri di accesso archiviati.

Revocare una firma di accesso condiviso di delega utente

Per revocare una firma di accesso condiviso della delega utente dall'interfaccia della riga di comando di Azure, chiamare il comando az storage account revoke-delegation-keys . Questo comando revoca tutte le chiavi di delega utente associate all'account di archiviazione specificato. Tutte le firme di accesso condiviso associate a tali chiavi vengono invalidate.

È 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 di ruolo di Azure vengono memorizzate nella cache da Archiviazione di Azure, quindi potrebbe verificarsi un ritardo tra l'avvio del processo di revoca e quando una firma di accesso condiviso della delega utente esistente non è valida.

Passaggi successivi