VENDITE: 1-800-867-1389

Creazione dell'URI di una firma di accesso condiviso

Aggiornamento: maggio 2014

Nell'URI di una firma di accesso condiviso sono inclusi componenti che specificano la risorsa che deve essere resa accessibile, l'intervallo in cui la firma di accesso condiviso è valida, le autorizzazioni associate alla firma, un identificatore facoltativo dei criteri di accesso associati alla richiesta e la firma stessa. Nella figura seguente sono rappresentate le parti dell'URI di una firma di accesso condiviso. Le parti obbligatorie sono indicate in arancione. Le parti dell'URI sono descritte nelle sezioni successive.

Elementi parametro di un URL SAS

Il campo signedversion contiene la versione del servizio per la firma di accesso condiviso. Questo valore specifica la versione dell'autenticazione di accesso condiviso utilizzata dalla firma di accesso condiviso (nel campo signature ); specifica inoltre la versione del servizio delle richieste effettuate utilizzando questa firma di accesso condiviso. Per informazioni sulla versione da utilizzare quando è necessario eseguire richieste con una firma di accesso condiviso, vedere Controllo delle versioni per i servizi Blob, di accodamento e tabelle in Windows Azure e Versioni dei servizi di archiviazione di Azure 2013-08-15 e precedenti. Per informazioni dettagliate sul modo in cui questo parametro influisce sull'autenticazione delle richieste effettuate con una firma di accesso condiviso, vedere Delega dell'accesso con una firma di accesso condiviso.

 

Nome campo Parametro di query Descrizione

signedversion

sv

Obbligatorio e consentito solo nella versione 2012-02-12 e successive. La versione del servizio di archiviazione da utilizzare per l'autenticazione delle richieste effettuate con la firma di accesso condiviso, nonché la versione del servizio da utilizzare per la gestione delle richieste effettuate con tale firma. Per informazioni sulla versione da utilizzare quando è necessario eseguire richieste con una firma di accesso condiviso e sulle modalità con cui i client che eseguono la richiesta possono controllare la versione mediante il parametro di query Controllo delle versioni per i servizi Blob, di accodamento e tabelle in Windows Azure o l'intestazione Versioni dei servizi di archiviazione di Azure 2013-08-15 e precedenti, vedere api-version e x-ms-version.

Negli scenari legacy in cui il parametro signedversion non viene utilizzato, tramite il servizio BLOB vengono applicate delle regole per determinare la versione. Per altre informazioni su queste regole, vedere Controllo delle versioni per i servizi Blob, di accodamento e tabelle in Windows Azure.

ImportantImportante
Nel software client potrebbe verificarsi un comportamento imprevisto del protocollo quando viene utilizzato l'URI di una firma di accesso condiviso che usa una versione del servizio di archiviazione più recente rispetto a quella del software client. Nel codice che genera gli URI delle firme di accesso condiviso è necessario utilizzare versioni riconoscibili dal software client che effettua le richieste del servizio di archiviazione.

Nel campo signedresource viene specificato quali risorse sono accessibili tramite la firma di accesso condiviso. Nella tabella seguente viene descritto come fare riferimento nell'URI a una risorsa BLOB o contenitore.

 

Nome campo Parametro di query Descrizione

signedresource

sr

Obbligatorio.

Specificare b se la risorsa condivisa è un BLOB. Ciò consente l'accesso al contenuto e ai metadati del BLOB.

Specificare c se la risorsa condivisa è un contenitore. Ciò consente l'accesso al contenuto e ai metadati di qualsiasi BLOB incluso nel contenitore, nonché all'elenco dei BLOB presenti nel contenitore.

Per definire valori che consentono la restituzione di determinate intestazioni della risposta quando si utilizza una firma di accesso condiviso in una richiesta, è possibile specificare tali intestazioni nei parametri di query. Questa funzionalità è supportata a partire dalla versione 2013-08-15; le firme di accesso condiviso che utilizzano questa funzionalità devono includere il parametro sv impostato su 2013-08-15.

Le intestazioni della risposta e i corrispondenti parametri di query sono i seguenti:

 

Nome dell'intestazione della risposta Parametro della query SAS corrispondente

Cache-Control

rscc

Content-Disposition

rscd

Content-Encoding

rsce

Content-Language

rscl

Content-Type

rsct

Ad esempio, se si specifica il parametro di query rsct=binary in una firma di accesso condiviso creata con la versione 2013-08-15, l'intestazione della risposta Content-Type viene impostata su binary. Tramite questo valore, l'override del valore dell'intestazione Content-Type archiviato per il BLOB viene eseguito solo per le richieste che utilizzano la firma di accesso condiviso in questione.

Si noti che, se si crea una firma di accesso condiviso che specifica le intestazioni della risposta come parametri di query, è necessario includerle nella stringa da firmare utilizzata per creare la stringa di firma. Per informazioni dettagliate, vedere la sezione Creazione della stringa di firma di seguito. Per altri esempi vedere Esempi di firme di accesso condiviso.

Il campo tablename specifica il nome della tabella da condividere.

 

Nome campo Parametro di query Descrizione

tablename

tn

Obbligatorio. Nome della tabella da condividere.

La parte dell'URI relativa ai criteri di accesso indica il periodo di tempo durante il quale la firma di accesso condiviso è valida e le autorizzazioni da concedere all'utente. Nelle parti dell'URI descritte nella tabella seguente sono inclusi i criteri di accesso.

 

Nome campo Parametro di query Descrizione

signedstart

st

Facoltativo. L'ora in cui la firma di accesso condiviso diventa valida, in un formato compatibile con ISO 8061. Se omesso, come ora di inizio di questa chiamata verrà considerata l'ora in cui il servizio di archiviazione riceve la richiesta.

Nelle versioni precedenti alla 2012-02-12, la durata compresa tra signedstart e signedexpiry non può essere superiore a un'ora, a meno che non vengano usati criteri a livello del contenitore.

signedexpiry

se

Obbligatorio. L'ora in cui la firma di accesso condiviso non è più valida, in un formato compatibile con ISO 8061. Questo campo deve essere omesso se è stato specificato nei criteri di accesso archiviati associati. Per informazioni dettagliate, vedere le impostazioni di durata e di revoca di una firma di accesso condiviso.

signedpermissions

sp

Obbligatorio. Le autorizzazioni associate alla firma di accesso condiviso. L'utente può eseguire solo le operazioni consentite dalle autorizzazioni. Questo campo deve essere omesso se è stato specificato nei criteri di accesso archiviati associati.

startpk

startrk

spk

srk

Solo servizio tabelle.

Facoltativo, ma è necessario utilizzare startpk con startrk. Le chiavi di riga e di partizione minime accessibili con questa firma di accesso condiviso. I valori di chiave specificati sono inclusi nell'intervallo. Se vengono omessi, non viene impostato alcun limite inferiore per le entità della tabella a cui è possibile accedere.

endpk

endrk

epk

erk

Solo servizio tabelle.

Facoltativo, ma è necessario utilizzare endpk con endrk. Le chiavi di riga e di partizione massime accessibili con questa firma di accesso condiviso. I valori di chiave specificati sono inclusi nell'intervallo. Se vengono omessi, non viene impostato alcun limite superiore per le entità della tabella a cui è possibile accedere.

Il campo signedpermissions è obbligatorio nell'URI a meno che non sia specificato come parte dei criteri di accesso archiviati. I campi startpk, startrk, endpk e endrk possono essere specificati solo in una risorsa della tabella.

I campi signedstart e signedexpiry devono essere espressi come ore UTC ed essere conformi a un formato ISO 8061 valido. Di seguito sono elencati alcuni formati ISO 8061 supportati:

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mmTZD

  • YYYY-MM-DDThh:mm:ssTZD

Per la parte relativa alla data di questi formati, YYYY è una rappresentazione dell'anno a quattro cifre, MM è la rappresentazione del mese a due cifre e DD è la rappresentazione del giorno a due cifre. Per la parte relativa all'ora, hh è la rappresentazione dell'ora nel formato a 24 ore, mm è la rappresentazione dei minuti a due cifre e ss è la rappresentazione dei secondi a due cifre. Un identificatore T separa le parti relative alla data e all'ora della stringa, mentre un identificatore di fuso orario TZD specifica un fuso orario.

Le autorizzazioni specificate nell'URI della firma di accesso condiviso indicano quali operazioni sono consentite nella risorsa condivisa. Nelle tabelle seguenti sono illustrate le autorizzazioni supportate da ogni tipo di risorsa.

Autorizzazioni per un BLOB

 

Autorizzazione Simbolo URI Operazioni consentite

Lettura

r

Lettura del contenuto, delle proprietà, dei metadati e dell'elenco dei blocchi. Utilizzo del BLOB come origine di un'operazione di copia.

Monitoraggio

w

Creazione o scrittura del contenuto, delle proprietà, dei metadati o dell'elenco dei blocchi. Creazione di snapshot o impostazione di lease del BLOB. Ridimensionamento del BLOB (solo BLOB di pagine). Utilizzo del BLOB come destinazione di un'operazione di copia nello stesso account.

Eliminazione

d

Eliminazione del BLOB.

Autorizzazioni per un contenitore

 

Autorizzazione Simbolo URI Operazioni consentite

Lettura

r

Lettura del contenuto, delle proprietà, dei metadati o dell'elenco dei blocchi di qualsiasi BLOB incluso nel contenitore. Utilizzo di qualsiasi BLOB incluso nel contenitore come origine di un'operazione di copia.

Monitoraggio

w

Creazione o scrittura del contenuto, delle proprietà, dei metadati o dell'elenco dei blocchi di qualsiasi BLOB incluso nel contenitore. Creazione di snapshot o impostazione di lease del BLOB. Ridimensionamento del BLOB (solo BLOB di pagine). Utilizzo del BLOB come destinazione di un'operazione di copia nello stesso account.

noteNota
Non è possibile concedere autorizzazioni per la lettura o la scrittura delle proprietà o dei metadati del contenitore, né per l'impostazione di un lease di un contenitore.

Eliminazione

d

Eliminazione di qualsiasi BLOB incluso nel contenitore.

noteNota
Non è possibile concedere autorizzazioni per l'eliminazione di un contenitore.

Elenco

l

Elenco dei BLOB presenti in un contenitore.

Autorizzazioni per una coda

 

Autorizzazione Simbolo URI Operazioni consentite

Lettura

r

Lettura dei metadati e delle proprietà, incluso il numero di messaggi. Visualizzazione dei messaggi.

Aggiunta

a

Aggiunta di messaggi alla coda.

Aggiorna

u

Aggiornamento dei messaggi nella coda.

noteNota
Utilizzare l'autorizzazione di elaborazione insieme a quella di aggiornamento in modo da ottenere innanzitutto il messaggio che si desidera aggiornare.

Elaborazione

p

Recupero ed eliminazione dei messaggi dalla coda.

Autorizzazioni per una tabella

 

Autorizzazione Simbolo URI Operazioni consentite

Query

r (per lettura)

Recupero delle entità ed esecuzione di query sulle entità.

Aggiunta

a

Aggiunta di entità.

noteNota
Per le operazioni di aggiornamento e inserimento (upsert) sono necessarie entrambe le autorizzazioni.

Aggiorna

u

Aggiornamento delle entità.

noteNota
Per le operazioni di aggiornamento e inserimento (upsert) sono necessarie entrambe le autorizzazioni.

Eliminazione

d

Eliminazione delle entità.

Specificare le autorizzazioni combinando i simboli URI nel campo signedpermissions dell'URI SAS. Le autorizzazioni possono essere raggruppate per consentire l'esecuzione di più operazioni con la firma specificata. Le autorizzazioni devono essere incluse nell'ordine in cui compaiono nella tabella relativa al tipo di risorsa. Ad esempio, per concedere tutte le autorizzazioni per un contenitore, sarà necessario impostare l'URI nel modo seguente: sp=rwdl. Per concedere solo le autorizzazioni di lettura/scrittura, sarà necessario impostare l'URI nel modo seguente: sp=rw.

Utilizzando le firme di accesso condiviso non è possibile concedere l'accesso ad alcune operazioni:

  • Non è possibile creare, eliminare o elencare i contenitori, le code e le tabelle.

  • Non è possibile leggere o scrivere i metadati e le proprietà dei contenitori.

  • Non è possibile cancellare le code, né è possibile scrivere i relativi metadati.

  • Non è possibile associare un lease ai contenitori.

ImportantImportante
Gli URI delle firme di accesso condiviso sono chiavi che concedono autorizzazioni per le risorse di archiviazione e devono essere protetti in modo analogo a quanto avviene per le chiavi condivise. Le operazioni che utilizzano gli URI delle firme di accesso condiviso devono essere eseguite solo su una connessione HTTPS, mentre gli URI delle firme di accesso condiviso devono essere distribuiti solo in una connessione sicura come HTTPS.

I campi startpk, startrk, endpk e endrk definiscono un intervallo di entità della tabella associato a una firma di accesso condiviso. Le query della tabella restituiranno solo i risultati compresi nell'intervallo; ogni tentativo di utilizzare la firma di accesso condiviso per aggiungere, aggiornare o eliminare entità al di fuori di tale intervallo avrà esito negativo. Se startpk è uguale a endpk, usando la firma di accesso condiviso sarà possibile accedere soltanto alle entità presenti in una sola partizione nella tabella. Se startpk è uguale a endpk e startrk è uguale a endrk, usando la firma di accesso condiviso sarà possibile accedere solo a una singola entità in una singola partizione. Per comprendere come questi campi limitano l'accesso alle entità in una tabella, utilizzare la tabella seguente.

 

Campi presenti Ambito del vincolo

startpk

partitionKey >= startpk

endpk

partitionKey <= endpk

startpk, startrk

(partitionKey > startpk) || (partitionKey == startpk && rowKey >= startrk)

endpk, endrk

(partitionKey < endpk) || (partitionKey == endpk && rowKey <= endrk)

Specificando il campo signedidentifier nell'URI, la firma di accesso condiviso specificata viene associata ai corrispondenti criteri di accesso archiviati. I criteri di accesso archiviati offrono una misura di controllo aggiuntiva su una o più firme di accesso condiviso, oltre a fornire la possibilità di revocare una firma se necessario. Ogni contenitore, coda o tabella può includere fino a 5 criteri di accesso archiviati.

Nella tabella seguente viene descritto come fare riferimento nell'URI a un identificatore firmato.

 

Nome campo Parametro di query Descrizione

signedidentifier

si

Facoltativo. Valore univoco con lunghezza massima di 64 caratteri correlato a criteri di accesso specificati per il contenitore, la coda o la tabella.

I criteri di accesso archiviati includono un identificatore firmato, vale a dire un valore con un massimo di 64 caratteri univoco all'interno della risorsa. Il valore di questo identificatore firmato può essere specificato tramite il campo signedidentifier nell'URI della firma di accesso condiviso. Se si specifica un identificatore firmato nell'URI è possibile associare la firma ai criteri di accesso archiviati. Per informazioni su come stabilire i criteri di accesso a livello del contenitore utilizzando l'API REST, vedere Delega dell'accesso con una firma di accesso condiviso.

Con le firme di accesso condiviso è possibile concedere agli utenti i diritti di accesso alle risorse dell'account di archiviazione. Quando si pianifica l'utilizzo di una firma di accesso condiviso, tenere in considerazione la durata della firma e valutare se sia necessario per l'applicazione revocare i diritti di accesso in determinate condizioni.

Per gestire una firma di accesso condiviso è possibile controllare la sua durata impostando il campo signedexpiry dei criteri di accesso. Per continuare a concedere un accesso client alla risorsa dopo la scadenza, sarà necessario emettere una nuova firma. È consigliabile mantenere una durata breve per le firme di accesso condiviso. Prima della versione 2012-02-12, una firma di accesso condiviso che non fosse associata ai criteri di accesso archiviati non poteva restare attiva per un periodo superiore a un'ora.

Per gestire una firma di accesso condiviso è inoltre possibile associare la firma ai criteri di accesso archiviati. I criteri di accesso archiviati sono rappresentati dal campo signedidentifier nell'URI. I criteri di accesso archiviati offrono una misura di controllo aggiuntiva su una o più firme di accesso condiviso, oltre a fornire la possibilità di revocare una firma se necessario.

Per revocare una firma di accesso condiviso associata a criteri di accesso archiviati, è possibile rimuovere i criteri di accesso archiviati. Se il servizio di archiviazione non è in grado di individuare i criteri di accesso archiviati specificati nella firma di accesso condiviso, il client non potrà accedere alla risorsa indicata dall'URI.

Per revocare una firma di accesso condiviso che non è associata a criteri di accesso archiviati, è necessario modificare la chiave condivisa dell'account di archiviazione utilizzato per creare la firma.

Come procedura consigliata, è opportuno utilizzare la firma di accesso condiviso insieme a un identificatore firmato che faccia riferimento a criteri di accesso archiviati. In alternativa, se non è stato specificato un identificatore firmato, è opportuno che l'intervallo in cui la firma è valida venga mantenuto breve. Per altre informazioni sull'associazione della firma con i criteri di accesso archiviati, vedere Utilizzare un criterio di accesso archiviato.

noteNota
I criteri di accesso per una firma di accesso condiviso contengono l'ora di inizio, l'ora di scadenza e le autorizzazioni relative alla firma. È possibile specificare tutti questi parametri nell'URI della firma e non indicarne nessuno nei criteri di accesso archiviati, specificare tutti i parametri nel contenitore e nessuno nell'URI oppure utilizzare una combinazione di questi due scenari. Tuttavia, non è possibile specificare un determinato parametro sia nell'URI della firma che nei criteri di accesso. Per altre informazioni, vedere Utilizzare un criterio di accesso archiviato.

La parte dell'URI relativa alla firma viene utilizzata per autenticare la richiesta effettuata con la firma di accesso condiviso. Il servizio BLOB utilizza uno schema di autenticazione Chiave condivisa per autenticare la firma di accesso condiviso. Nella tabella seguente viene descritto come specificare la firma nell'URI.

 

Nome campo Parametro di query Descrizione

signature

sig

La stringa da firmare è una stringa univoca generata a partire dai campi che devono essere verificati per autenticare 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.

Per creare la stringa di firma di una firma di accesso condiviso, è necessario innanzitutto generare la stringa da firmare dai campi inclusi nella richiesta, quindi codificare la stringa come UTF-8 e infine calcolare la firma utilizzando l'algoritmo HMAC-SHA256. Si noti che i campi inclusi nella stringa da firmare devono essere decodificati come URL.

Versioni precedenti alla 2012-02-12

Per creare la stringa da firmare per le risorse del servizio BLOB nelle versioni precedenti alla 2012-02-12, utilizzare il formato seguente:


StringToSign = signedpermissions + "\n"
               signedstart + "\n"
               signedexpiry + "\n"
               canonicalizedresource + "\n"
               signedidentifier

Versione 2012-02-12

Per creare la stringa da firmare per le risorse del servizio BLOB nella versione 2012-02-12, utilizzare il seguente formato:


StringToSign = signedpermissions + "\n"
               signedstart + "\n"
               signedexpiry + "\n"
               canonicalizedresource + "\n"
               signedidentifier + "\n"
               signedversion

Versione 2013-08-15

Per creare la stringa da firmare per le risorse del servizio BLOB nella versione 2013-08-15 o successive, utilizzare il formato seguente:

StringToSign = signedpermissions + "\n"
               signedstart + "\n"
               signedexpiry + "\n"
               canonicalizedresource + "\n"
               signedidentifier + "\n"
               signedversion + "\n"
               rscc + "\n"
               rscd + "\n"
               rsce + "\n"
               rscl + "\n"
               rsct

Per creare la stringa da firmare per una tabella, utilizzare il formato seguente:


TableStringToSign = StringToSign + "\n"
                    startpk + "\n"
                    startrk + "\n"
                    endpk + "\n"
                    endrk

Quando si crea la stringa da firmare, tenere presente quanto segue:

  • Se un campo è facoltativo e non è fornito come parte della richiesta, specificare una stringa vuota per il campo. Assicurarsi di includere il carattere di nuova riga (\n) dopo la stringa vuota.

  • La stringa da firmare per una tabella deve includere i parametri aggiuntivi, anche se sono stringhe vuote.

  • La parte signedpermission della stringa deve includere le designazioni delle autorizzazioni in un ordine prestabilito che è specifico per ogni tipo di risorsa. Qualsiasi combinazione di queste autorizzazioni è accettabile, ma l'ordine delle lettere delle autorizzazioni deve corrispondere a quello della tabella seguente.

     

    Tipo di risorsa Ordine delle autorizzazioni

    archiviazione

    rwd

    contenitore

    rwdl

    queue

    raup

    table

    raud

    Ad esempio, le impostazioni valide per un contenitore sono rw, rd, rl, wd, wl e rl. Le seguenti sono impostazioni errate: wr, dr, lr e dw. Non è consentito specificare una designazione di autorizzazione più di una volta.

  • La parte canonicalizedresouce della stringa è un percorso canonico della risorsa firmata. Deve includere il nome dell'account di archiviazione e il nome della risorsa; deve inoltre essere decodificato come URL. I nomi dei BLOB devono includere il contenitore del BLOB. I nomi delle tabelle devono essere in lettere minuscole. Negli esempi seguenti viene illustrato come creare la parte canonicalizedresource della stringa.

    Se la risorsa firmata è un contenitore:

    URL = https://myaccount.blob.core.windows.net/music
    canonicalizedresource = "/myaccount/music"
    
    Se la risorsa firmata è un BLOB:

    URL = https://myaccount.blob.core.windows.net/music/intro.mp3
    canonicalizedresource = "/myaccount/music/intro.mp3"
    
    
    Se la risorsa firmata è una coda:

    URL = https://myaccount.queue.core.windows.net/thumbnails
    canonicalizedresource = "/myaccount/thumbnails"
    
    
    Se la risorsa firmata è una tabella, accertarsi che il nome della tabella sia tutto in lettere minuscole e nella forma canonica:

    URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')
    canonicalizedresource = "/myaccount/employees"
    
    
  • Specificare un valore per la parte signedidentifier della stringa quando si associa la richiesta ai criteri di accesso archiviati.

  • In una firma di accesso condiviso che specifichi una versione del servizio di archiviazione precedente alla 2012-02-12, è possibile condividere soltanto un BLOB o un contenitore. In questo caso è necessario omettere il parametro signedversion e il carattere di nuova riga che lo precede.

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2015 Microsoft