Creare un SAS dell'account

A partire dalla versione 2015-04-05, archiviazione di Azure supporta la creazione di un nuovo tipo di firma di accesso condiviso (SAS) al livello dell'account di archiviazione. La creazione di una firma di accesso condiviso dell'account consente di:

  • Delegare l'accesso alle operazioni a livello di servizio che non sono attualmente disponibili con una firma di accesso condiviso specifica del servizio, ad esempio le Get/Set Service Properties Get Service Stats operazioni e.

  • Delegare l'accesso a più di un servizio in un account di archiviazione alla volta. È ad esempio possibile delegare l'accesso alle risorse sia nei servizi BLOB che nei servizi file con una firma di accesso condiviso dell'account.

  • Delegare l'accesso alle operazioni di scrittura ed eliminazione per contenitori, code, tabelle e condivisioni file, che non sono disponibili con una firma di accesso condiviso specifica dell'oggetto.

  • Specificare un indirizzo IP o un intervallo di indirizzi IP da cui accettare le richieste.

  • Specificare il protocollo HTTP da cui accettare le richieste (HTTPS o HTTP/HTTPS).

I criteri di accesso archiviati non sono attualmente supportati per la firma di accesso condiviso dell'account.

Attenzione

La firma di accesso condiviso è costituita da chiavi che concedono autorizzazioni alle risorse di archiviazione e devono essere protette nello stesso modo in cui si trova una chiave dell'account. È importante proteggere una firma di accesso condiviso da un utilizzo dannoso o imprevisto. Usare la discrezione per la distribuzione di una firma di accesso condiviso e un piano per la revoca di una firma di accesso condiviso compromessa. Le operazioni che usano firme di accesso condiviso devono essere eseguite solo su una connessione HTTPS e gli URI di firma di accesso condiviso devono essere distribuiti solo su una connessione sicura, ad esempio HTTPS.

Autorizzazione di una firma di accesso condiviso dell'account

Una firma di accesso condiviso dell'account viene protetta usando la chiave dell'account di archiviazione. Per creare una firma di accesso condiviso dell'account, un'applicazione client deve possedere la chiave dell'account.

Per usare le credenziali di Azure AD per proteggere una firma di accesso condiviso per un contenitore o un BLOB, creare una firma di accesso condiviso di delega utente. Per altre informazioni, vedere Creare una firma di accesso condiviso di delega utente.

Creazione dell'URI di firma di accesso condiviso dell'account

L'URI di firma di accesso condiviso dell'account è costituito dall'URI della risorsa per la quale la firma di accesso condiviso delegherà l'accesso, seguito dal token SAS. Il token di firma di accesso condiviso è la stringa di query che include tutte le informazioni necessarie per autorizzare una richiesta alla risorsa, nonché per specificare il servizio, la risorsa e le autorizzazioni disponibili per l'accesso e l'intervallo di tempo in cui la firma è valida.

Specifica dei parametri SAS dell'account

La tabella seguente descrive i parametri obbligatori e facoltativi per il token SAS.

Parametro di query SAS Descrizione
api-version Facoltativa. Specifica la versione del servizio di archiviazione da usare per eseguire la richiesta effettuata usando l'URI di firma di accesso condiviso dell'account.
SignedVersion (sv) Obbligatorio. Specifica la versione del servizio di archiviazione firmato da usare per autorizzare le richieste effettuate con la firma di accesso condiviso dell'account. Deve essere impostato sulla versione 2015-04-05 o successiva.
SignedServices (ss) Obbligatorio. Specifica i servizi firmati accessibili con la firma di accesso condiviso dell'account. I valori possibili sono:

-BLOB ( b )
-Queue ( q )
-Table ( t )
-File ( f )

È possibile combinare i valori per consentire l'accesso a più di un servizio. Ad esempio, ss=bf specifica l'accesso agli endpoint BLOB e file.
SignedResourceTypes (srt) Obbligatorio. Specifica i tipi di risorse firmati accessibili con la firma di accesso condiviso dell'account.

-Service ( s ): accesso alle API a livello di servizio (ad esempio, Get/Set Service Properties, Get Service Statistics, List Containers/Queues/Tables/shares)
-Container ( c ): accesso alle API a livello di contenitore (ad esempio, creazione/eliminazione di contenitori, creazione/eliminazione di una coda, creazione/eliminazione di tabelle, creazione/eliminazione di una condivisione, elenco di BLOB/file e directory)
-Object ( o ): accesso alle API a livello di oggetto per BLOB, messaggi di Accodamento, entità di tabella e file,ad esempio Put Blob, query Entity, Get messages, create file e così via.

È possibile combinare i valori per consentire l'accesso a più di un tipo di risorsa. Ad esempio, srt=sc specifica l'accesso alle risorse del servizio e del contenitore.
SignedPermission (sp) Obbligatorio. Specifica le autorizzazioni firmate per la firma di accesso condiviso dell'account. Le autorizzazioni sono valide solo se corrispondono al tipo di risorsa firmato specificato; in caso contrario, vengono ignorati.

-Read ( r ): valido per tutti i tipi di risorse firmati (servizio, contenitore e oggetto). Consente le autorizzazioni di lettura per il tipo di risorsa specificato.
-Write ( w ): valido per tutti i tipi di risorse firmati (servizio, contenitore e oggetto). Consente le autorizzazioni di scrittura per il tipo di risorsa specificato.
-Delete ( d ): valido per i tipi di risorsa contenitore e oggetto, ad eccezione dei messaggi della coda.
-Delete permanente ( y ): valido solo per il tipo di risorsa oggetto del BLOB.
-List ( l ): valido solo per i tipi di risorse del servizio e del contenitore.
-Add ( a ): valido solo per i tipi di risorse di oggetti seguenti: messaggi in coda, entità di tabella e BLOB di Accodamento.
-Create ( c ): valido solo per i seguenti tipi di risorsa oggetto: BLOB e file. Gli utenti possono creare nuovi BLOB o file, ma non possono sovrascrivere i BLOB o i file esistenti.
-Update ( u ): valido solo per i tipi di risorsa oggetto seguenti: messaggi della coda ed entità di tabella.
-Process ( p ): valido solo per il seguente tipo di risorsa oggetto: messaggi in coda.
SignedStart (st) facoltativo. Ora in cui la firma di accesso condiviso diventa valida, espressa in uno dei formati UTC ISO 8601 accettati. Se omesso, si presuppone che l'ora di inizio sia l'ora in cui il servizio di archiviazione riceve la richiesta. Per ulteriori informazioni sui formati UTC accettati, vedere formattazione di valori DateTime.
SignedExpiry (se) Obbligatorio. Data e ora in cui la firma di accesso condiviso diventa non valida, espressa in uno dei formati UTC ISO 8601 accettati. Per ulteriori informazioni sui formati UTC accettati, vedere formattazione di valori DateTime.
SignedIP (sip) facoltativo. Specifica un indirizzo IP o un intervallo di indirizzi IP da cui accettare le richieste. Quando si specifica un intervallo, si noti che l'intervallo è inclusivo.

Ad esempio, sip=168.1.5.65 o sip=168.1.5.60-168.1.5.70.
SignedProtocol (spr) facoltativo. Specifica il protocollo consentito per una richiesta effettuata con la firma di accesso condiviso dell'account. I valori possibili sono HTTPS e HTTP ( https,http ) o solo HTTPS ( https ). Il valore predefinito è https,http.

Si noti che HTTP only non è un valore consentito.
Signature (sig) Obbligatorio. La parte relativa alla firma dell'URI viene utilizzata per autorizzare la richiesta effettuata con la firma di accesso condiviso.

La stringa da firmare è una stringa univoca costruita in base ai campi che devono essere verificati per autorizzare la richiesta. La firma è un HMAC calcolato sulla base della stringa da firmare e della chiave mediante l'algoritmo SHA256, e quindi codificato con la codifica Base64.

Creazione della stringa di firma

Per costruire la stringa di firma per una firma di accesso condiviso dell'account, prima costruire la stringa da firmare dai campi che includono la richiesta, quindi codificare la stringa come UTF-8 e calcolare la firma usando l'algoritmo HMAC-SHA256. Si noti che i campi inclusi nella stringa da firmare devono essere decodificati come URL.

Per costruire la stringa da firmare per una firma di accesso condiviso dell'account, usare il formato seguente:

StringToSign = accountname + "\n" +  
    signedpermissions + "\n" +  
    signedservice + "\n" +  
    signedresourcetype + "\n" +  
    signedstart + "\n" +  
    signedexpiry + "\n" +  
    signedIP + "\n" +  
    signedProtocol + "\n" +  
    signedversion + "\n"  
  

Autorizzazioni SAS dell'account per operazione

Le tabelle nelle sezioni seguenti elencano diverse API per ogni servizio e i tipi di risorsa firmati e le autorizzazioni firmate supportate per ogni operazione.

Servizio BLOB

La tabella seguente elenca le operazioni del servizio BLOB e indica il tipo di risorsa firmato e le autorizzazioni firmate da specificare per delegare l'accesso a tali operazioni.

Operazione Servizio firmato Tipo di risorsa firmato Autorizzazione firmata
List Containers BLOB (b) Servizio/i Elenco (l)
Get Blob Service Properties BLOB (b) Servizio/i Lettura (r)
Set Blob Service Properties BLOB (b) Servizio/i Scrittura (w)
Get Blob Service Stats BLOB (b) Servizio/i Lettura (r)
Create Container BLOB (b) Contenitore (c) Crea (c) o scrivi (w)
Get Container Properties BLOB (b) Contenitore (c) Lettura (r)
Get Container Metadata BLOB (b) Contenitore (c) Lettura (r)
Set Container Metadata BLOB (b) Contenitore (c) Scrittura (w)
Lease Container BLOB (b) Contenitore (c) Write (w) o Delete (d)1
Delete Container BLOB (b) Contenitore (c) Elimina (d)
List Blobs BLOB (b) Contenitore (c) Elenco (l)
Put Blob (Crea nuovo BLOB in blocchi) BLOB (b) Oggetto (o) Crea (c) o scrivi (w)
Put Blob (Sovrascrivi BLOB in blocchi esistente) BLOB (b) Oggetto (o) Scrittura (w)
Put Blob (Crea nuovo BLOB di pagine) BLOB (b) Oggetto (o) Crea (c) o scrivi (w)
Put Blob (Sovrascrivi BLOB di pagine esistente) BLOB (b) Oggetto (o) Scrittura (w)
Get Blob BLOB (b) Oggetto (o) Lettura (r)
Get Blob Properties BLOB (b) Oggetto (o) Lettura (r)
Set Blob Properties BLOB (b) Oggetto (o) Scrittura (w)
Get Blob Metadata BLOB (b) Oggetto (o) Lettura (r)
Set Blob Metadata BLOB (b) Oggetto (o) Scrittura (w)
Ottieni Tag BLOB BLOB (b) Oggetto (o) Tag (t)
Imposta tag BLOB BLOB (b) Oggetto (o) Tag (t)
Trovare i BLOB in base ai tag BLOB (b) Oggetto (o) Find (f)
Delete Blob BLOB (b) Oggetto (o) Elimina (d)
Elimina definitivamente snapshot/versione BLOB (b) Oggetto (o) Eliminazione permanente (y)
Lease Blob BLOB (b) Oggetto (o) Write (w) o Delete (d)1
Snapshot Blob BLOB (b) Oggetto (o) Crea (c) o scrivi (w)
Copy BLOB (la destinazione è un nuovo BLOB) BLOB (b) Oggetto (o) Crea (c) o scrivi (w)
Copy BLOB (la destinazione è un BLOB esistente) BLOB (b) Oggetto (o) Scrittura (w)
Copia incrementale BLOB (b) Oggetto (o) Crea (c) o scrivi (w)
Abort Copy Blob BLOB (b) Oggetto (o) Scrittura (w)
Put Block BLOB (b) Oggetto (o) Scrittura (w)
Put Block List (Crea nuovo BLOB) BLOB (b) Oggetto (o) Scrittura (w)
Put Block List (Aggiorna BLOB esistente) BLOB (b) Oggetto (o) Scrittura (w)
Get Block List BLOB (b) Oggetto (o) Lettura (r)
Put Page BLOB (b) Oggetto (o) Scrittura (w)
Get Page Ranges BLOB (b) Oggetto (o) Lettura (r)
Append Block BLOB (b) Oggetto (o) Aggiungi (a) o scrivi (w)
Cancella pagina BLOB (b) Oggetto (o) Scrittura (w)

Nota

L' Delete autorizzazione consente di suddividere un lease in un BLOB o un contenitore con la versione 2017-07-29 e successive.

Servizio di accodamento

La tabella seguente elenca Servizio di accodamento operazioni e indica il tipo di risorsa firmato e le autorizzazioni firmate da specificare per delegare l'accesso a tali operazioni.

Operazione Servizio firmato Tipo di risorsa firmato Autorizzazione firmata
Get Queue Service Properties Coda (q) Servizio/i Lettura (r)
Set Queue Service Properties Coda (q) Servizio/i Scrittura (w)
Elenca code Coda (q) Servizio/i Elenco (l)
Get Queue Service Stats Coda (q) Servizio/i Lettura (r)
Creare una coda Coda (q) Contenitore (c) Crea (c) o scrivi (w)
Eliminazione code Coda (q) Contenitore (c) Elimina (d)
Operazione Get Queue Metadata Coda (q) Contenitore (c) Lettura (r)
Operazione Set Queue Metadata Coda (q) Contenitore (c) Scrittura (w)
Put Message Coda (q) Oggetto (o) Add (a)
Get Messages Coda (q) Oggetto (o) Elabora (p)
Peek Messages Coda (q) Oggetto (o) Lettura (r)
Eliminazione di messaggi Coda (q) Oggetto (o) Elabora (p)
Clear Messages Coda (q) Oggetto (o) Elimina (d)
Aggiornamento del messaggio Coda (q) Oggetto (o) Aggiornamento (u)

Servizio tabelle

La tabella seguente elenca le operazioni del servizio tabelle e indica il tipo di risorsa firmato e le autorizzazioni firmate da specificare per delegare l'accesso a tali operazioni.

Operazione Servizio firmato Tipo di risorsa firmato Autorizzazione firmata
Get Table Service Properties Tabella (t) Servizio/i Lettura (r)
Set Table Service Properties Tabella (t) Servizio/i Scrittura (w)
Get Table Service Stats Tabella (t) Servizio/i Lettura (r)
Query su tabelle Tabella (t) Contenitore (c) Elenco (l)
Create Table Tabella (t) Contenitore (c) Crea (c) o scrivi (w)
Elimina tabella Tabella (t) Contenitore (c) Elimina (d)
Query Entities Tabella (t) Oggetto (o) Lettura (r)
Insert Entity Tabella (t) Oggetto (o) Add (a)
Insert Or Merge Entity Tabella (t) Oggetto (o) Aggiungi (a) e aggiorna (u)1
Insert Or Replace Entity Tabella (t) Oggetto (o) Aggiungi (a) e aggiorna (u)1
Update Entity Tabella (t) Oggetto (o) Aggiornamento (u)
Merge Entity Tabella (t) Oggetto (o) Aggiornamento (u)
Delete Entity Tabella (t) Oggetto (o) Elimina (d)

1 Le autorizzazioni Aggiungi e aggiorna sono necessarie per le operazioni Upsert nel servizio tabelle.

Servizio file

La tabella seguente elenca le operazioni del servizio file e indica il tipo di risorsa firmato e le autorizzazioni firmate da specificare per delegare l'accesso a tali operazioni.

Operazione Servizio firmato Tipo di risorsa firmato Autorizzazione firmata
Elenco di condivisioni File (f) Servizio/i Elenco (l)
Get File Service Properties File (f) Servizio/i Lettura (r)
Set File Service Properties File (f) Servizio/i Scrittura (w)
Get Share Stats File (f) Contenitore (c) Lettura (r)
Create Share File (f) Contenitore (c) Crea (c) o scrivi (w)
condivisione snapshot File (f) Contenitore (c) Crea (c) o scrivi (w)
Ottenere le proprietà di condivisione File (f) Contenitore (c) Lettura (r)
Set Share Properties File (f) Contenitore (c) Scrittura (w)
Get Share Metadata File (f) Contenitore (c) Lettura (r)
Set Share Metadata File (f) Contenitore (c) Scrittura (w)
Delete Share File (f) Contenitore (c) Elimina (d)
Elenco di directory e file File (f) Contenitore (c) Elenco (l)
Creazione di directory File (f) Oggetto (o) Crea (c) o scrivi (w)
Get Directory Properties File (f) Oggetto (o) Lettura (r)
Ottenere i metadati della directory File (f) Oggetto (o) Lettura (r)
Set Directory Metadata File (f) Oggetto (o) Scrittura (w)
Delete Directory File (f) Oggetto (o) Elimina (d)
Crea file (Crea nuovo) File (f) Oggetto (o) Crea (c) o scrivi (w)
Crea file (Sovrascrivi esistente) File (f) Oggetto (o) Scrittura (w)
Get File File (f) Oggetto (o) Lettura (r)
Get File Properties File (f) Oggetto (o) Lettura (r)
Recupera metadati di file File (f) Oggetto (o) Lettura (r)
Set File Metadata File (f) Oggetto (o) Scrittura (w)
Elimina file File (f) Oggetto (o) Elimina (d)
Put Range File (f) Oggetto (o) Scrittura (w)
List Ranges File (f) Oggetto (o) Lettura (r)
Abort Copy File File (f) Oggetto (o) Scrittura (w)
Copia file File (f) Oggetto (o) Scrittura (w)
Cancella intervallo File (f) Oggetto (o) Scrittura (w)

Esempio di URI di firma di accesso condiviso dell'account

L'esempio seguente illustra un URI di firma di accesso condiviso dell'account che fornisce le autorizzazioni di lettura e scrittura per un BLOB. La tabella suddivide ogni parte dell'URI:

https://myaccount.blob.core.windows.net/?restype=service&comp=properties&sv=2019-02-02&ss=bf&srt=s&st=2019-08-01T22%3A18%3A26Z&se=2019-08-10T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=F%6GRVAZ5Cdj2Pw4tgU7IlSTkWgn7bUkkAg8P6HESXwmf%4B
Nome Parte firma di accesso condiviso Description
URI della risorsa https://myaccount.blob.core.windows.net/?restype=service&comp=properties Endpoint del servizio, con parametri per ottenere le proprietà del servizio (se chiamato con GET) o impostare le proprietà del servizio (se chiamato con SET). In base al valore del campo servizi firmati ( ss ), questa firma di accesso condiviso può essere usata con l'archivio BLOB o con file di Azure.
Versione dei servizi di archiviazione sv=2019-02-02 Per i servizi di archiviazione della versione 2012-02-12 e successive questo parametro indica la versione da usare.
Servizi ss=bf La firma di accesso condiviso si applica ai servizi BLOB e File
Tipi di risorsa srt=s La firma di accesso condiviso si applica alle operazioni a livello di servizio.
Ora di inizio st=2019-08-01T22%3A18%3A26Z Specificata nell'ora UTC. Se si desidera che la firma di accesso condiviso sia immediatamente valida, omettere l'ora di inizio.
Scadenza se=2019-08-10T02%3A23%3A26Z Specificata nell'ora UTC.
Autorizzazioni sp=rw Le autorizzazioni concedono l'accesso alle operazioni di lettura e scrittura.
Intervallo IP sip=168.1.5.60-168.1.5.70 Intervallo di indirizzi IP da cui verrà accettata una richiesta.
Protocollo spr=https Sono consentite solo richieste tramite HTTPS.
Firma sig=F%6GRVAZ5Cdj2Pw4tgU7IlSTkWgn7bUkkAg8P6HESXwmf%4B Usata per autorizzare l'accesso al BLOB. La firma è un HMAC calcolato sulla base di una stringa da firmare e della chiave mediante l'algoritmo SHA256, e quindi codificato con la codifica Base64.

Poiché le autorizzazioni sono limitate a livello di servizio, le operazioni accessibili tramite questa firma di accesso condiviso sono Get Blob Service Properties (lettura) e Set Blob Service Properties (scrittura). Con un URI di risorsa diverso, lo stesso token di firma di accesso condiviso può tuttavia essere usato per delegare l'accesso all'operazione Get Blob Service Stats (lettura).

Vedi anche