Impostare l'ACL del contenitore
L'operazione Set Container ACL
imposta le autorizzazioni per il contenitore specificato. Le autorizzazioni indicano se è possibile accedere pubblicamente ai BLOB in un contenitore.
A partire dalla versione 2009-09-19, le autorizzazioni del contenitore forniscono le opzioni seguenti per la gestione dell'accesso al contenitore:
Accesso in lettura pubblico completo: i dati contenitore e BLOB possono essere letti tramite richiesta anonima. I client possono enumerare i BLOB all'interno del contenitore tramite una richiesta anonima, ma non possono enumerare i contenitori all'interno dell'account di archiviazione.
accesso in lettura pubblico solo per i BLOB: i dati BLOB all'interno di questo contenitore possono essere letti tramite richiesta anonima, ma i dati del contenitore non sono disponibili. I client non possono enumerare i BLOB all'interno del contenitore tramite una richiesta anonima.
Nessun accesso in lettura pubblico: i dati contenitore e BLOB possono essere letti solo dal proprietario dell'account.
Set Container ACL
imposta anche un criterio di accesso archiviato da usare con firme di accesso condiviso. Per altre informazioni, vedere Definire un criterio di accesso archiviato.
Tutto l'accesso pubblico al contenitore è anonimo, così come è l'accesso tramite una firma di accesso condiviso.
Richiesta
La richiesta di Set Container ACL
può essere costruita nel modo seguente. È consigliabile usare HTTPS. Sostituire myaccount con il nome dell'account di archiviazione:
Metodo | URI della richiesta | Versione HTTP |
---|---|---|
PUT |
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl |
HTTP/1.1 |
Richiesta del servizio di archiviazione emulata
Quando si effettua una richiesta per il servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta del servizio BLOB come 127.0.0.1:10000
, seguito dal nome dell'account di archiviazione emulato:
Metodo | URI della richiesta | Versione HTTP |
---|---|---|
PUT |
http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl |
HTTP/1.1 |
Per altre informazioni, vedere Usare l'emulatore Azurite per lo sviluppo locale di Archiviazione di Azure.
Parametri URI
È possibile specificare i parametri aggiuntivi seguenti nell'URI della richiesta:
Parametro | Descrizione |
---|---|
timeout |
Opzionale. Il parametro timeout è espresso in secondi. Per altre informazioni, vedere Impostare timeout per le operazioni del servizio BLOB. |
Intestazioni della richiesta
Le intestazioni di richiesta obbligatorie e facoltative sono descritte nella tabella seguente:
Intestazione della richiesta | Descrizione |
---|---|
Authorization |
Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account e la firma. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. |
Date o x-ms-date |
Obbligatorio. Specifica l'ora UTC (Coordinated Universal Time) per la richiesta. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. |
x-ms-version |
Opzionale. Specifica la versione dell'operazione da utilizzare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure. |
x-ms-blob-public-access |
Opzionale. Specifica se è possibile accedere pubblicamente ai dati nel contenitore e al livello di accesso. I valori possibili includono: - container : specifica l'accesso in lettura pubblico completo per i dati del contenitore e del BLOB. I client possono enumerare i BLOB all'interno del contenitore tramite una richiesta anonima, ma non possono enumerare i contenitori all'interno dell'account di archiviazione.- blob: Specifica l'accesso in lettura pubblico per i BLOB. I dati BLOB all'interno di questo contenitore possono essere letti tramite richiesta anonima, ma i dati del contenitore non sono disponibili. I client non possono enumerare i BLOB all'interno del contenitore tramite una richiesta anonima.Se questa intestazione non è inclusa nella richiesta, i dati del contenitore sono privati per il proprietario dell'account. Si noti che l'impostazione dell'accesso pubblico per un contenitore in un account di Archiviazione Premium di Azure non è consentita. |
x-ms-lease-id: <ID> |
Facoltativo, versione 2012-02-12 e successive. Se è specificato, Set Container ACL ha esito positivo solo se il lease del contenitore è attivo e corrisponde a questo ID. Se non è presente alcun lease attivo o l'ID non corrisponde, viene restituito 412 (Precondizione non riuscita). |
x-ms-client-request-id |
Opzionale. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 kibibyte (KiB) registrato nei log quando viene configurata la registrazione. È consigliabile usare questa intestazione per correlare le attività sul lato client alle richieste ricevute dal server. Per altre informazioni, vedere Monitorare l'archiviazione BLOB di Azure. |
Questa operazione supporta anche l'uso di intestazioni condizionali per eseguire l'operazione solo se viene soddisfatta una condizione specificata. Per altre informazioni, vedere Specificare le intestazioni condizionali per le operazioni del servizio BLOB.
Corpo della richiesta
Per specificare un criterio di accesso archiviato, specificare un identificatore univoco e un criterio di accesso nel corpo della richiesta per l'operazione di Set Container ACL
.
L'elemento SignedIdentifier
include l'identificatore univoco, come specificato nell'elemento Id
e i dettagli dei criteri di accesso, come specificato nell'elemento AccessPolicy
. La lunghezza massima dell'identificatore univoco è di 64 caratteri.
I campi Start
e Expiry
devono essere espressi come ore UTC e devono essere conformi a un formato ISO 8061 valido. I formati ISO 8061 supportati includono quanto segue:
YYYY-MM-DD
YYYY-MM-DDThh:mmTZD
YYYY-MM-DDThh:mm:ssTZD
YYYY-MM-DDThh:mm:ss.fffffffTZD
Per la parte data di questi formati, YYYY
è una rappresentazione dell'anno a quattro cifre, MM
è una rappresentazione mensile a due cifre e DD
è una rappresentazione di giorno a due cifre. Per la parte temporale, hh
è la rappresentazione dell'ora nella notazione di 24 ore, mm
è la rappresentazione di minuti a due cifre, ss
è la rappresentazione in seconda cifra e fffffff
è la rappresentazione in millisecondi a sette cifre. Un designatore dell'ora T
separa le parti di data e ora della stringa e un designatore del fuso orario TZD
specifica un fuso orario.
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
<SignedIdentifier>
<Id>unique-64-character-value</Id>
<AccessPolicy>
<Start>start-time</Start>
<Expiry>expiry-time</Expiry>
<Permission>abbreviated-permission-list</Permission>
</AccessPolicy>
</SignedIdentifier>
</SignedIdentifiers>
Richiesta di esempio
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1
Request Headers:
x-ms-version: 2011-08-18
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT
x-ms-blob-public-access: container
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=
Request Body:
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
<SignedIdentifier>
<Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>
<AccessPolicy>
<Start>2009-09-28T08:49:37.0000000Z</Start>
<Expiry>2009-09-29T08:49:37.0000000Z</Expiry>
<Permission>rwd</Permission>
</AccessPolicy>
</SignedIdentifier>
</SignedIdentifiers>
Risposta
La risposta include un codice di stato HTTP e un set di intestazioni di risposta.
Codice di stato
Un'operazione riuscita restituisce il codice di stato 200 (OK).
Per altre informazioni sui codici di stato, vedere Stato e codici di errore.
Intestazioni di risposta
La risposta per questa operazione include le intestazioni seguenti. La risposta può includere anche intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1 .
Intestazione della risposta | Descrizione |
---|---|
ETag |
ETag per il contenitore. Se la versione della richiesta è 2011-08-18 o successiva, il valore ETag è racchiuso tra virgolette. |
Last-Modified |
Restituisce la data e l'ora dell'ultima modifica del contenitore. Il formato della data segue RFC 1123. Per altre informazioni, vedere Rappresentare valori di data/ora nelle intestazioni. Qualsiasi operazione che modifica il contenitore o le relative proprietà o metadati aggiorna l'ora dell'ultima modifica, inclusa l'impostazione delle autorizzazioni del contenitore. Le operazioni sui BLOB non influiscono sull'ora dell'ultima modifica del contenitore. |
x-ms-request-id |
Identifica in modo univoco la richiesta effettuata e può essere usata per risolvere i problemi della richiesta. Per altre informazioni, vedere Risolvere i problemi relativi alle operazioni API |
x-ms-version |
Indica la versione del servizio BLOB usata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate rispetto alla versione 2009-09-19 e successive. |
Date |
Valore di data/ora UTC generato dal servizio, che indica l'ora di avvio della risposta. |
x-ms-client-request-id |
Può essere usato per risolvere i problemi relativi alle richieste e alle risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id se è presente nella richiesta e il valore non contiene più di 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, non sarà presente nella risposta. |
Risposta di esempio
Response Status:
HTTP/1.1 200 OK
Response Headers:
Transfer-Encoding: chunked
Date: Sun, 25 Sep 2011 22:42:55 GMT
ETag: "0x8CB171613397EAB"
Last-Modified: Sun, 25 Sep 2011 22:42:55 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Autorizzazione
L'autorizzazione è necessaria quando si chiama un'operazione di accesso ai dati in Archiviazione di Azure. È possibile autorizzare l'operazione di Set Container ACL
come descritto di seguito.
Importante
Microsoft consiglia di usare l'ID Microsoft Entra con identità gestite per autorizzare le richieste ad Archiviazione di Azure. Microsoft Entra ID offre maggiore sicurezza e facilità d'uso rispetto all'autorizzazione con chiave condivisa.
Archiviazione di Azure supporta l'uso di Microsoft Entra ID per autorizzare le richieste ai dati BLOB. Con Microsoft Entra ID è possibile usare il controllo degli accessi in base al ruolo di Azure per concedere le autorizzazioni a un'entità di sicurezza. L'entità di sicurezza può essere un utente, un gruppo, un'entità servizio applicazione o un'identità gestita di Azure. L'entità di sicurezza viene autenticata da Microsoft Entra ID per restituire un token OAuth 2.0. Il token può quindi essere usato per autorizzare una richiesta sul servizio BLOB.
Per altre informazioni sull'autorizzazione con Microsoft Entra ID, vedere Autorizzare l'accesso ai BLOB usando Microsoft Entra ID.
Autorizzazioni
Di seguito è riportata l'azione controllo degli accessi in base al ruolo necessaria per un utente, un gruppo, un'identità gestita o un'entità servizio di Microsoft Entra per chiamare l'operazione di Set Container ACL
e il ruolo controllo degli accessi in base al ruolo di Azure con privilegi minimi che include questa azione:
- 'azione controllo degli accessi in base al ruolo di Azure:Microsoft.Storage/storageAccounts/blobServices/containers/setAcl/action
- Ruolo predefinito con privilegi minimi:proprietario dei dati dei BLOB di archiviazione
Per altre informazioni sull'assegnazione dei ruoli tramite il controllo degli accessi in base al ruolo di Azure, vedere Assegnare un ruolo di Azure per l'accesso ai dati BLOB.
Osservazioni
Quando si impostano le autorizzazioni per un contenitore, le autorizzazioni esistenti vengono sostituite. Per aggiornare le autorizzazioni del contenitore, chiamare Get Container ACL per recuperare tutti i criteri di accesso associati al contenitore. Modificare i criteri di accesso da modificare e quindi chiamare Set Container ACL
con il set completo di dati per eseguire l'aggiornamento.
Abilitare l'accesso pubblico anonimo nei dei dati del contenitore
Per abilitare l'accesso in lettura pubblico anonimo sui dati del contenitore, chiamare Set Container ACL
con l'intestazione x-ms-blob-public-access
impostata su container
o blob
. Per disabilitare l'accesso anonimo, chiamare Set Container ACL
senza specificare l'intestazione x-ms-blob-public-access
.
Se si imposta x-ms-blob-public-access
su blob
, i client possono chiamare le operazioni seguenti in modo anonimo:
Ottenere BLOB
get block list (solo per l'elenco di blocchi di cui è stato eseguito il commit)
Se si imposta x-ms-blob-public-access
su container
, i client possono chiamare le operazioni seguenti in modo anonimo:
Le operazioni di accesso ai BLOB elencate nella sezione precedente.
Stabilire criteri di accesso a livello di contenitore
I criteri di accesso archiviati possono specificare l'ora di inizio, l'ora di scadenza e le autorizzazioni per le firme di accesso condiviso a cui è associata. A seconda di come si vuole controllare l'accesso al contenitore o alla risorsa BLOB, è possibile specificare tutti questi parametri all'interno dei criteri di accesso archiviati e ometterli dall'URL per la firma di accesso condiviso. In questo modo, è possibile modificare il comportamento della firma associata in qualsiasi momento o revocarlo. In alternativa, è possibile specificare uno o più parametri dei criteri di accesso all'interno dei criteri di accesso archiviati e gli altri nell'URL. Infine, è possibile specificare tutti i parametri nell'URL. In questo caso, è possibile usare i criteri di accesso archiviati per revocare la firma, ma non per modificarne il comportamento. Per altre informazioni, vedere Definire un criterio di accesso archiviato.
Insieme, la firma di accesso condiviso e i criteri di accesso archiviati devono includere tutti i campi necessari per autorizzare la firma. Se mancano campi obbligatori, la richiesta ha esito negativo. Analogamente, se un campo viene specificato sia nell'URL della firma di accesso condiviso che nei criteri di accesso archiviati, la richiesta ha esito negativo con codice di stato 400 (richiesta non valida).
Al massimo, è possibile impostare cinque criteri di accesso separati per un singolo contenitore in qualsiasi momento. Se nel corpo della richiesta vengono passati più di cinque criteri di accesso, il servizio restituisce il codice di stato 400 (richiesta non valida).
È possibile emettere una firma di accesso condiviso in un contenitore o in un BLOB indipendentemente dal fatto che i dati del contenitore siano disponibili per l'accesso in lettura anonimo. Una firma di accesso condiviso offre una maggiore misura del controllo su come, quando e a chi una risorsa viene resa accessibile.
Nota
Quando si stabilisce un criterio di accesso archiviato in un contenitore, l'applicazione dei criteri potrebbe richiedere fino a 30 secondi. Durante questo intervallo, fino a quando il criterio non diventa attivo, una firma di accesso condiviso associata ai criteri di accesso archiviati non riesce con codice di stato 403 (Accesso negato).
Fatturazione
Le richieste di prezzi possono provenire dai client che usano le API di archiviazione BLOB, direttamente tramite l'API REST dell'archiviazione BLOB o da una libreria client di Archiviazione di Azure. Queste richieste accumulano addebiti per transazione. Il tipo di transazione influisce sulla modalità di addebito dell'account. Ad esempio, le transazioni di lettura si accumulano in una categoria di fatturazione diversa rispetto alle transazioni di scrittura. La tabella seguente illustra la categoria di fatturazione per Set Container ACL
richieste in base al tipo di account di archiviazione:
Operazione | Tipo di account di archiviazione | Categoria di fatturazione |
---|---|---|
Impostare l'ACL del contenitore | BLOB in blocchi Premium Standard per utilizzo generico v2 |
Altre operazioni |
Impostare l'ACL del contenitore | Standard per utilizzo generico v1 | Operazioni di scrittura |
Per informazioni sui prezzi per la categoria di fatturazione specificata, vedere prezzi di Archiviazione BLOB di Azure.
Vedere anche
Limitare l'accesso a contenitori e BLOB
Delegare l'accesso con una firma di accesso condiviso
Creare e usare una firma di accesso condiviso
Definire un criterio di accesso archiviato
Get Container ACL
Autorizzare le richieste ad Archiviazione di Azure
codici di errore e stato
codici di errore del servizio BLOB