Autorizzare con Azure Active Directory

Archiviazione di Azure l'integrazione con Azure Active Directory (Azure AD) per l'autorizzazione basata sull'identità delle richieste ai servizi BLOB, code e tabelle. Con Azure AD, è possibile usare il controllo degli accessi in base al ruolo per concedere l'accesso alle risorse BLOB, code e tabelle a utenti, gruppi o applicazioni. È possibile concedere autorizzazioni con ambito al livello di un singolo contenitore, coda o tabella.

Per altre informazioni sull'integrazione Azure AD in Archiviazione di Azure, vedere Autorizzare l'accesso a BLOB e code di Azure usando Azure Active Directory.

Per altre informazioni sui vantaggi dell'uso di Azure AD nell'applicazione, vedere Integrazione con Azure Active Directory .

Suggerimento

L'autorizzazione dell'accesso ai dati di BLOB, code e tabelle con Azure AD offre sicurezza e facilità d'uso superiori rispetto ad altre opzioni di autorizzazione. Quando si usa Azure AD per autorizzare le richieste effettuate dalle applicazioni, evitare di dover archiviare la chiave di accesso dell'account con il codice, come si fa con l'autorizzazione della chiave condivisa. Anche se è possibile continuare a usare l'autorizzazione con chiave condivisa con le applicazioni BLOB, code e tabelle, Microsoft consiglia di passare a Azure AD laddove possibile. Per altre informazioni sull'Azure AD in Archiviazione di Azure, vedere Autorizzarel'accesso a BLOB e code di Azure usando Azure Active Directory .

Usare i token di accesso OAuth per l'autenticazione

Archiviazione di Azure accetta i token di accesso OAuth 2.0 dal tenant Azure AD associato alla sottoscrizione che contiene l'account di archiviazione. Archiviazione di Azure accetta i token di accesso per:

  • Utenti
  • Entità servizio
  • Identità gestite per le risorse di Azure
  • Applicazioni che usano autorizzazioni delegate dagli utenti

Archiviazione di Azure un singolo ambito di delega denominato che consente alle applicazioni di user_impersonation eseguire qualsiasi azione consentita dall'utente.

Per richiedere i token per Archiviazione di Azure, specificare il valore https://storage.azure.com/ per l'ID risorsa.

Per altre informazioni sulla richiesta di token di accesso da Azure AD per utenti ed entità servizio, vedere Scenari di autenticazione per Azure AD.

Per altre informazioni sulla richiesta di token di accesso per le risorse configurate con identità gestite, vedere Come usare le identità gestite per le risorse di Azure in una macchina virtuale di Azure per acquisire un token di accesso.

Chiamare le operazioni di archiviazione con i token OAuth

Per chiamare operazioni del servizio BLOB, coda e tabella usando i token di accesso OAuth, passare il token di accesso nell'intestazione Authorization usando lo schema Bearer e specificare una versione del servizio 2017-11-09 o successiva, come illustrato nell'esempio seguente:

Request:
GET /container/file.txt
x-ms-version: 2017-11-09
Authorization: Bearer eyJ0eXAiO...V09ccgQ
User-Agent: PostmanRuntime/7.6.0
Accept: */*
Host: sampleoautheast2.blob.core.windows.net
accept-encoding: gzip, deflate

Response:
HTTP/1.1 200
status: 200
Content-Length: 28
Content-Type: text/plain
Content-MD5: dxG7IgOBzApXPcGHxGg5SA==
Last-Modified: Wed, 30 Jan 2019 07:21:32 GMT
Accept-Ranges: bytes
ETag: "0x8D686838F9E8BA7"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 09f31964-e01e-00a3-8066-d4e6c2000000
x-ms-version: 2017-11-09
x-ms-creation-time: Wed, 29 Aug 2018 04:22:47 GMT
x-ms-lease-status: unlocked
x-ms-lease-state: available
x-ms-blob-type: BlockBlob
x-ms-server-encrypted: true
Date: Wed, 06 Mar 2019 21:50:50 GMT
Welcome to Azure Storage!!

Sfida di bearer

La richiesta di connessione fa parte del protocollo OAuth RFC 6750 e viene usata per l'individuazione dell'autorità. Per le richieste anonime o le richieste con un bearer token OAuth non valido, il server restituirà il codice di stato 401 (non autorizzato) con informazioni sul provider di identità e sulle risorse. Fare riferimento al collegamento per informazioni su come usare questi valori durante l'autenticazione con Azure AD.

Archiviazione di Azure I servizi BLOB e code restituiscono una richiesta di accesso per la versione 2019-12-12 e versioni più recente. Archiviazione di Azure Il servizio tabelle restituisce una richiesta di portante dalla versione 2020-12-06. Azure Data Lake Archiviazione Gen2 restituisce una richiesta di connessione per la versione 2017-11-09 e versioni più recente.

Di seguito è riportato un esempio di risposta di richiesta di connessione quando la richiesta client non include il bearer token nella richiesta blob di download anonimo:

Request:
GET /container/file.txt
x-ms-version: 2019-12-12
Host: sampleoautheast2.blob.core.windows.net

Response:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer authorization_uri=https://login.microsoftonline.com/<tenant_id>/oauth2/authorize resource_uri=https://storage.azure.com

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>NoAuthenticationInformation</Code>
    <Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:ec4f02d7-1003-0006-21f9-c55bc8000000
Time:2020-01-08T08:01:46.2063459Z</Message>
</Error>
Parametro Descrizione
authorization_uri URI (endpoint fisico) del server di autorizzazione. Questo valore viene usato anche come chiave di ricerca per ottenere altre informazioni sul server da un endpoint di individuazione. Il client deve convalidare l'attendibilità del server di autorizzazione. Quando la risorsa è protetta da Azure AD, è sufficiente verificare che l'URL inizi con o con un altro nome https://login.microsoftonline.com host Azure AD supporta. Una risorsa specifica del tenant deve sempre restituire un URI di autorizzazione specifico del tenant.
resource_id Restituisce l'identificatore univoco della risorsa. L'applicazione client può usare questo identificatore come valore del parametro resource quando richiede un token di accesso per la risorsa. È importante che l'applicazione client verifichi questo valore, in caso contrario un servizio dannoso potrebbe essere in grado di provocare un attacco di elevazione dei privilegi. La strategia consigliata per impedire un attacco consiste nel verificare che il resource_id corrisponda alla base dell'URL dell'API Web a cui si accede. https://storage.azure.comè l'ID risorsa Archiviazione di Azure usato in genere.

Gestire i diritti di accesso con il controllo degli accessi in base al ruolo

Azure AD gestisce l'autorizzazione di accesso alle risorse protette tramite il controllo degli accessi in base al ruolo. Tramite il controllo degli accessi in base al ruolo è possibile assegnare ruoli a utenti, gruppi o entità servizio. Ogni ruolo include un set di autorizzazioni per una risorsa. Dopo che il ruolo è stato assegnato all'utente, al gruppo o all'entità servizio, ha accesso a tale risorsa. È possibile assegnare i diritti di accesso usando portale di Azure, gli strumenti da riga di comando di Azure e le API di gestione di Azure. Per altre informazioni sul controllo degli accessi in base al ruolo, vedere Introduzione al Role-Based di accesso.

Ad Archiviazione di Azure, è possibile concedere l'accesso ai dati in un contenitore o in una coda nell'account di archiviazione. Archiviazione di Azure offre i ruoli predefiniti seguenti da usare con Azure AD:

Per altre informazioni sulla definizione dei ruoli predefiniti per Archiviazione di Azure, vedere Informazioni sulle definizioni dei ruoli per le risorse di Azure.

È anche possibile definire ruoli personalizzati da usare con l'archiviazione BLOB e le code di Azure. Per altre informazioni, vedere Creare ruoli personalizzati per il controllo degli accessi in base al ruolo di Azure.

Autorizzazioni per la chiamata di operazioni sui dati

Nelle tabelle seguenti vengono descritte le autorizzazioni necessarie per Azure AD utente, gruppo o entità servizio per chiamare operazioni Archiviazione di Azure specifiche. Per consentire a un client di chiamare una determinata operazione, assicurarsi che il ruolo Controllo degli accessi in base al ruolo assegnato del client disponga di autorizzazioni sufficienti per tale operazione.

Autorizzazioni per le operazioni del servizio BLOB

Operazione del servizio BLOB Azione controllo degli accessi in base al ruolo
Elencare i contenitori Microsoft. Archiviazione/storageAccounts/blobServices/containers/read (con ambito per l'account di archiviazione)
Impostare le proprietà del servizio BLOB Microsoft.Storage/storageAccounts/blobServices/write
Ottenere le proprietà del servizio BLOB Microsoft.Storage/storageAccounts/blobServices/read
Richiesta BLOB preliminare Anonimo
Ottenere le statistiche del servizio BLOB Microsoft.Storage/storageAccounts/blobServices/read
Ottenere la chiave di delega utente Microsoft. Archiviazione/storageAccounts/blobServices/generateUserDelegationKey
Create Container Microsoft.Storage/storageAccounts/blobServices/containers/write
Ottenere le proprietà del contenitore Microsoft.Storage/storageAccounts/blobServices/containers/read
Get Container Metadata Microsoft.Storage/storageAccounts/blobServices/containers/read
Impostare i metadati del contenitore Microsoft.Storage/storageAccounts/blobServices/containers/write
Get Container ACL Non disponibile tramite OAuth
Set Container ACL Non disponibile tramite OAuth
Delete Container Microsoft.Storage/storageAccounts/blobServices/containers/delete
Lease Container Microsoft.Storage/storageAccounts/blobServices/containers/write
Elencare i BLOB Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/read (con ambito contenitore)
Put Blob Per creare o sostituire: Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/write
Per creare un nuovo BLOB: Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/add/action
Get Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Get Blob Properties Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Set Blob Properties Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Get Blob Metadata Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Set Blob Metadata Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Lease BLOB Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Snapshot Blob Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/write o
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Copy Blob Per il BLOB di destinazione: Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/write o Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/add/action (quando si scrive un nuovo BLOB nella destinazione)
Per il BLOB di origine nello stesso account di archiviazione: Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/read
Per il BLOB di origine in un account di archiviazione diverso: disponibile come anonimo o includere un token di firma di accesso condiviso valido
Abort Copy Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Eliminare un BLOB Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
Put Block Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Put Block List Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Get Block List Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Put Page Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Get Page Ranges Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Incremental Copy Blob Per il BLOB di destinazione: Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/write
Per il BLOB di origine: Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/read
Per il nuovo BLOB: Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/add/action
Append Block Microsoft. Archiviazione/storageAccounts/blobServices/containers/BLOBs/write o Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/add/action

Autorizzazioni per le Servizio di accodamento predefinite

Servizio di accodamento operazione Azione controllo degli accessi in base al ruolo
Elencare le code Microsoft. Archiviazione/storageAccounts/queueServices/queues/read (account di archiviazione con ambito)
Impostare le proprietà del servizio di accodamento Microsoft.Storage/storageAccounts/queueServices/read
Ottenere le proprietà del servizio di accodamento Microsoft.Storage/storageAccounts/queueServices/read
Richiesta coda preliminare Anonimo
Get Queue Service Stats Microsoft.Storage/storageAccounts/queueServices/read
Creare una coda Microsoft.Storage/storageAccounts/queueServices/queues/write
Elimina coda Microsoft.Storage/storageAccounts/queueServices/queues/delete
Operazione Get Queue Metadata Microsoft.Storage/storageAccounts/queueServices/queues/read
Impostare i metadati della coda Microsoft.Storage/storageAccounts/queueServices/queues/write
Get Queue ACL Non disponibile tramite OAuth
Set Queue ACL Non disponibile tramite OAuth
Put Message Microsoft. Archiviazione/storageAccounts/queueServices/queues/messages/add/action o Microsoft. Archiviazione/storageAccounts/queueServices/queues/messages/write
Get Messages Microsoft. Archiviazione/storageAccounts/queueServices/queues/messages/process/action o (Microsoft.Archiviazione/storageAccounts/queueServices/queues/messages/delete e Microsoft. Archiviazione/storageAccounts/queueServices/queues/messages/read)
Peek Messages Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Elimina messaggio Microsoft. Archiviazione/storageAccounts/queueServices/queues/messages/process/action o Microsoft. Archiviazione/storageAccounts/queueServices/queues/messages/delete
Cancella messaggi Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Aggiornare un messaggio Microsoft.Storage/storageAccounts/queueServices/queues/messages/write

Autorizzazioni per le operazioni del servizio tabelle

Operazione del servizio tabelle Azione controllo degli accessi in base al ruolo
Set Table Service Properties Microsoft. Archiviazione/storageAccounts/tableServices/write
Get Table Service Properties Microsoft. Archiviazione/storageAccounts/tableServices/read
Richiesta tabella preliminare Anonimo
Operazione Get Table Service Stats Microsoft. Archiviazione/storageAccounts/tableServices/read
Performing Entity Group Transactions L'operazione secondaria autorizza separatamente
Eseguire query su tabelle Microsoft. Archiviazione/storageAccounts/tableServices/tables/read (account di archiviazione con ambito)
Create Table Microsoft. Archiviazione/storageAccounts/tableServices/tables/write
Elimina tabella Microsoft. Archiviazione/storageAccounts/tableServices/tables/delete
Get Table ACL Non disponibile tramite OAuth
Set Table ACL Non disponibile tramite OAuth
Eseguire query su entità Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/read
Insert Entity Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/write o Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/add/action
Inserire o unire entità Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/write o (Microsoft.Archiviazione/storageAccounts/tableServices/tables/entities/add/action e Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/update/action)
Inserire o sostituire un'entità Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/write o (Microsoft.Archiviazione/storageAccounts/tableServices/tables/entities/add/action e Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/update/action)
Aggiornare l'entità Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/write o Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/update/action
Merge Entity Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/write o Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/update/action
Delete Entity Microsoft. Archiviazione/storageAccounts/tableServices/tables/entities/delete

Vedi anche