Autoriser avec Azure Active DirectoryAuthorize with Azure Active Directory

Le stockage Azure fournit l’intégration avec Azure Active Directory (Azure AD) pour l’autorisation basée sur l’identité des demandes aux services BLOB et de file d’attente.Azure Storage provides integration with Azure Active Directory (Azure AD) for identity-based authorization of requests to the Blob and Queue services. Avec Azure AD, vous pouvez utiliser le contrôle d’accès en fonction du rôle (RBAC) pour accorder l’accès aux ressources d’objets BLOB et de file d’attente à des utilisateurs, des groupes ou des applications.With Azure AD, you can use role-based access control (RBAC) to grant access to blob and queue resources to users, groups, or applications. Vous pouvez accorder des autorisations limitées au niveau d’un conteneur ou d’une file d’attente individuels.You can grant permissions that are scoped to the level of an individual container or queue.

Pour en savoir plus sur l’intégration d’Azure AD dans Azure Storage, consultez autoriser l’accès aux objets BLOB et files d’attente Azure à l’aide de Azure Active Directory.To learn more about Azure AD integration in Azure Storage, see Authorize access to Azure blobs and queues using Azure Active Directory.

Pour plus d’informations sur les avantages de l’utilisation de Azure AD dans votre application, consultez intégration avec Azure Active Directory.For more information on the advantages of using Azure AD in your application, see Integrating with Azure Active Directory.

Conseil

L’autorisation de l’accès aux données BLOB et de file d’attente avec Azure AD offre une sécurité et une facilité d’utilisation supérieures à celles des autres options d’autorisation.Authorizing access to blob and queue data with Azure AD provides superior security and ease of use over other authorization options. Lorsque vous utilisez Azure AD pour autoriser des demandes émanant de vos applications, vous évitez d’avoir à stocker votre clé d’accès de compte avec votre code, comme vous le feriez avec une autorisation de clé partagée.When you use Azure AD to authorize requests make from your applications, you avoid having to store your account access key with your code, as you do with Shared Key authorization. Bien que vous puissiez continuer à utiliser une autorisation de clé partagée avec vos applications d’objet BLOB et de file d’attente, Microsoft recommande de passer à Azure AD dans la mesure du possible.While you can continue to use Shared Key authorization with your blob and queue applications, Microsoft recommends moving to Azure AD where possible. Pour plus d’informations sur l’intégration d’Azure AD dans Azure Storage, consultez autoriser l’accès aux objets BLOB et files d’attente Azure à l’aide de Azure Active Directory.For more information about Azure AD integration in Azure Storage, see Authorize access to Azure blobs and queues using Azure Active Directory.

Utiliser des jetons d’accès OAuth pour l’authentificationUse OAuth access tokens for authentication

Le stockage Azure accepte les jetons d’accès OAuth 2,0 du locataire Azure AD associé à l’abonnement qui contient le compte de stockage.Azure Storage accepts OAuth 2.0 access tokens from the Azure AD tenant associated with the subscription that contains the storage account. Azure Storage accepte les jetons d’accès pour :Azure Storage accepts access tokens for:

  • UtilisateursUsers
  • Principaux de serviceService principals
  • Identités de service managées pour les ressources AzureManaged service identities for Azure resources
  • Applications utilisant des autorisations déléguées par les utilisateursApplications using permissions delegated by users

Le stockage Azure expose une étendue de délégation unique nommée user_impersonation qui permet aux applications d’effectuer toutes les actions autorisées par l’utilisateur.Azure Storage exposes a single delegation scope named user_impersonation that permits applications to take any action allowed by the user.

Pour demander des jetons pour le stockage Azure, spécifiez la valeur https://storage.azure.com/ de l’ID de ressource.To request tokens for Azure Storage, specify the value https://storage.azure.com/ for the Resource ID.

Pour plus d’informations sur la demande de jetons d’accès à partir d’Azure AD pour les utilisateurs et les principaux de service, consultez Scénarios d’authentification pour Azure AD.For more information on requesting access tokens from Azure AD for users and service principals, see Authentication scenarios for Azure AD.

Pour plus d’informations sur la demande de jetons d’accès pour les ressources configurées avec des identités gérées, consultez comment utiliser des identités gérées pour les ressources Azure sur une machine virtuelle Azure pour obtenir un jeton d’accès.For more information about requesting access tokens for resources configured with managed identities, see How to use managed identities for Azure resources on an Azure VM to acquire an access token.

Appeler des opérations de stockage avec des jetons OAuthCall storage operations with OAuth tokens

Pour appeler les opérations des services Blob et de File d’attente à l’aide des jetons d’accès OAuth, passez le jeton d’accès dans l’en-tête Authorization en utilisant le schéma Bearer et spécifiez une version de service 2017-11-09 ou ultérieure, comme indiqué dans l’exemple suivant :To call Blob and Queue service operations using OAuth access tokens, pass the access token in the Authorization header using the Bearer scheme, and specify a service version of 2017-11-09 or higher, as shown in the following example:

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!!

Défi du porteurBearer Challenge

La stimulation du porteur fait partie du protocole OAuth RFC 6750 et est utilisée pour la découverte de l’autorité.Bearer challenge is part of the OAuth protocol RFC 6750 and is used for authority discovery. Pour les demandes anonymes ou les demandes avec un jeton de porteur OAuth non valide, le serveur retourne le code d’état 401 (non autorisé) avec le fournisseur d’identité et les informations sur les ressources.For anonymous requests, or requests with an invalid OAuth bearer token, the server will return status code 401 (Unauthorized) with identity provider and resource information. Pour plus d’informations sur l’utilisation de ces valeurs lors de l’authentification avec Azure AD, consultez le lien .Refer to link for how to use these values during authentication with Azure AD.

Les services de file d’attente et de Azure Storage Blob renvoient une demande de support pour la version 2019-12-12 et les versions ultérieures.Azure Storage Blob and Queue services return a bearer challenge for version 2019-12-12 and newer. Azure Data Lake Storage Gen2 renvoie une demande de support pour la version 2017-11-09 et les versions ultérieures.Azure Data Lake Storage Gen2 returns a bearer challenge for version 2017-11-09 and newer.

Voici un exemple de réponse de stimulation du porteur lorsque la demande du client n’inclut pas le jeton du porteur dans la demande de téléchargement d’objet BLOB anonyme :The following is an example of a bearer challenge response when the client request does not include the bearer token in the anonymous download blob request:

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>
ParamètreParameter DescriptionDescription
authorization_uriauthorization_uri L’URI (point de terminaison physique) du serveur d’autorisation.The URI (physical endpoint) of the authorization server. Cette valeur est également utilisée comme clé de recherche pour obtenir plus d’informations sur le serveur à partir d’un point de terminaison de détection.This value is also used as a lookup key to get more information about the server from a discovery endpoint. Le client doit valider l’approbation du serveur d’autorisation.The client must validate that the authorization server is trusted. Lorsque la ressource est protégée par Azure AD, il suffit de vérifier que l’URL commence par https://login.microsoftonline.com ou un autre nom d’hôte pris en charge par Azure ad.When the resource is protected by Azure AD, it is sufficient to verify that the URL begins with https://login.microsoftonline.com or other hostname that Azure AD supports. Une ressource spécifique au client doit toujours retourner un URI d’autorisation spécifique au client.A tenant-specific resource should always return a tenant-specific authorization URI.
resource_idresource_id Retourne l’identificateur unique de la ressource.Returns the unique identifier of the resource. L’application cliente peut utiliser cet identificateur comme valeur du paramètre de ressource lorsqu’il demande un jeton d’accès pour la ressource.The client application can use this identifier as the value of the resource parameter when it requests an access token for the resource. Il est important pour l’application cliente de vérifier cette valeur. sinon, un service malveillant peut être en mesure de provoquer une attaque par élévation de privilèges.It is important for the client application to verify this value, otherwise a malicious service might be able to induce an elevation-of-privileges attack. La stratégie recommandée pour empêcher une attaque consiste à vérifier que le resource_id correspond à la base de l’URL de l’API Web qui fait l’objet de l’accès.The recommended strategy for preventing an attack is to verify that the resource_id matches the base of the web API URL that being accessed. https://storage.azure.comest l’ID de ressource de stockage Azure généralement utilisé.https://storage.azure.com is the generally used Azure Storage resource ID.

Gérer les droits d’accès à l’aide de RBACManage access rights with RBAC

Azure AD gère l’autorisation d’accès aux ressources sécurisées par le biais de RBAC.Azure AD handles the authorization of access to secured resources through RBAC. À l’aide de RBAC, vous pouvez assigner des rôles à des utilisateurs, des groupes ou des principaux de service.Using RBAC, you can assign roles to users, groups, or service principals. Chaque rôle englobe un ensemble d’autorisations pour une ressource.Each role encompasses a set of permissions for a resource. Une fois que le rôle est attribué à l’utilisateur, au groupe ou au principal du service, il a accès à cette ressource.Once the role is assigned to the user, group, or service principal, they have access to that resource. Vous pouvez affecter des droits d’accès à l’aide des Portail Azure, des outils en ligne de commande Azure et des API de gestion Azure.You can assign access rights using the Azure portal, Azure command-line tools, and Azure Management APIs. Pour plus d’informations sur RBAC, consultez prise en main de la Access Control basée sur les rôles.For more information on RBAC, see Get started with Role-Based Access Control.

Pour le stockage Azure, vous pouvez accorder l’accès aux données dans un conteneur ou une file d’attente dans le compte de stockage.For Azure Storage, you can grant access to data in a container or queue in the storage account. Le Stockage Azure propose l’utilisation de ces rôles RBAC intégrés avec Azure AD :Azure Storage offers these built-in RBAC roles for use with Azure AD:

Pour plus d’informations sur la définition des rôles intégrés pour le stockage Azure, consultez comprendre les définitions de rôles pour les ressources Azure.For more information about how built-in roles are defined for Azure Storage, see Understand role definitions for Azure resources.

Vous pouvez également définir des rôles personnalisés à utiliser avec le stockage d’objets BLOB et les files d’attente Azure.You can also define custom roles for use with Blob storage and Azure Queues. Pour plus d’informations, consultez Créer des rôles personnalisés pour le contrôle d’accès en fonction du rôle Azure.For more information, see Create custom roles for Azure Role-Based Access Control.

Autorisations pour l’appel d’opérations de données d’objet BLOB et de file d’attentePermissions for calling blob and queue data operations

Les tableaux suivants décrivent les autorisations nécessaires à un Azure AD un utilisateur, un groupe ou un principal de service pour appeler des opérations de stockage Azure spécifiques.The following tables describe the permissions necessary for an Azure AD user, group, or service principal to call specific Azure Storage operations. Pour permettre à un client d’appeler une opération particulière, vérifiez que le rôle RBAC attribué au client offre des autorisations suffisantes pour cette opération.To enable a client to call a particular operation, ensure that the client's assigned RBAC role offers sufficient permissions for that operation.

Autorisations pour les opérations de service BLOBPermissions for Blob service operations

Opération de service d’objet blobBlob service operation Action RBACRBAC action
Répertorier les conteneursList Containers Microsoft. Storage/storageAccounts/blobServices/containers/Read (étendu au compte de stockage)Microsoft.Storage/storageAccounts/blobServices/containers/read (scoped to the storage account)
Définition des propriétés du service BlobSet Blob Service Properties Microsoft.Storage/storageAccounts/blobServices/writeMicrosoft.Storage/storageAccounts/blobServices/write
Obtention des propriétés du service BLOBGet Blob Service Properties Microsoft.Storage/storageAccounts/blobServices/readMicrosoft.Storage/storageAccounts/blobServices/read
Demande préliminaire d’objet BLOBPreflight Blob Request AnonymeAnonymous
Obtient les statistiques du service BLOBGet Blob Service Stats Microsoft.Storage/storageAccounts/blobServices/readMicrosoft.Storage/storageAccounts/blobServices/read
Récupérer la clé de délégation d’utilisateurGet User Delegation Key Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKeyMicrosoft.Storage/storageAccounts/blobServices/generateUserDelegationKey
Créer un conteneurCreate Container Microsoft.Storage/storageAccounts/blobServices/containers/writeMicrosoft.Storage/storageAccounts/blobServices/containers/write
Get Container PropertiesGet Container Properties Microsoft.Storage/storageAccounts/blobServices/containers/readMicrosoft.Storage/storageAccounts/blobServices/containers/read
Get Container MetadataGet Container Metadata Microsoft.Storage/storageAccounts/blobServices/containers/readMicrosoft.Storage/storageAccounts/blobServices/containers/read
Définir les métadonnées de conteneurSet Container Metadata Microsoft.Storage/storageAccounts/blobServices/containers/writeMicrosoft.Storage/storageAccounts/blobServices/containers/write
Get Container ACLGet Container ACL Non disponible via OAuthNot available via OAuth
Set Container ACLSet Container ACL Non disponible via OAuthNot available via OAuth
Delete ContainerDelete Container Microsoft.Storage/storageAccounts/blobServices/containers/deleteMicrosoft.Storage/storageAccounts/blobServices/containers/delete
Lease ContainerLease Container Microsoft.Storage/storageAccounts/blobServices/containers/writeMicrosoft.Storage/storageAccounts/blobServices/containers/write
Lister les objets blobList Blobs Microsoft. Storage/storageAccounts/blobServices/containers/BLOB/Read (étendu au conteneur)Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read (scoped to container)
Put BlobPut Blob Pour Create or replace : Microsoft. Storage/storageAccounts/blobServices/containers/BLOB/WriteFor create or replace: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Pour créer un objet BLOB : Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Add/actionTo create new blob: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Get BlobGet Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/read
Get Blob PropertiesGet Blob Properties Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/read
Set Blob PropertiesSet Blob Properties Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Get Blob MetadataGet Blob Metadata Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/read
Set Blob MetadataSet Blob Metadata Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Bail de l’objet BLOBLease Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Snapshot BlobSnapshot Blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Write ouMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write or
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/actionMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Copy BlobCopy Blob Pour l’objet blob de destination : Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Write ou Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Add/action (lors de l’écriture d’un nouvel objet BLOB dans la destination)For destination blob: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write or Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (when writing a new blob to the destination)
Pour un objet BLOB source dans le même compte de stockage : Microsoft. Storage/storageAccounts/blobServices/containers/BLOB/ReadFor source blob in the same storage account: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Pour un objet BLOB source dans un compte de stockage différent : disponible en tant que anonyme ou inclure un jeton SAS valideFor source blob in a different storage account: Available as anonymous, or include valid SAS token
Abort Copy BlobAbort Copy Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Delete BlobDelete Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/delete
Put BlockPut Block Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Put Block ListPut Block List Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Get Block ListGet Block List Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/read
Put PagePut Page Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Obtenir les portées de pageGet Page Ranges Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/read
Copie incrémentielle BLOBIncremental Copy Blob Pour l’objet blob de destination : Microsoft. Storage/storageAccounts/blobServices/containers/BLOB/WriteFor destination blob: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Pour l’objet BLOB source : Microsoft. Storage/storageAccounts/blobServices/containers/BLOB/ReadFor source blob: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Pour nouvel objet BLOB : Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Add/actionFor new blob: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Append BlockAppend Block Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Write ou Microsoft. Storage/storageAccounts/blobServices/containers/blobs/Add/actionMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write or Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action

Autorisations pour les opérations de service de File d’attentePermissions for Queue service operations

Opération de service de File d’attenteQueue service operation Action RBACRBAC action
Répertorier les files d’attenteList Queues Microsoft. Storage/storageAccounts/queueServices/files d’attente/lecture (compte de stockage étendu)Microsoft.Storage/storageAccounts/queueServices/queues/read (scoped storage account)
Définition des propriétés du service de File d’attenteSet Queue Service Properties Microsoft.Storage/storageAccounts/queueServices/readMicrosoft.Storage/storageAccounts/queueServices/read
Obtient les propriétés du service de file d’attenteGet Queue Service Properties Microsoft.Storage/storageAccounts/queueServices/readMicrosoft.Storage/storageAccounts/queueServices/read
Demande de file d'attente préliminairePreflight Queue Request AnonymeAnonymous
Obtention des statistiques du service de File d'attenteGet Queue Service Stats Microsoft.Storage/storageAccounts/queueServices/readMicrosoft.Storage/storageAccounts/queueServices/read
Créer une file d’attenteCreate Queue Microsoft.Storage/storageAccounts/queueServices/queues/writeMicrosoft.Storage/storageAccounts/queueServices/queues/write
Supprimer une file d’attenteDelete Queue Microsoft.Storage/storageAccounts/queueServices/queues/deleteMicrosoft.Storage/storageAccounts/queueServices/queues/delete
Obtention de métadonnées file d'attenteGet Queue Metadata Microsoft.Storage/storageAccounts/queueServices/queues/readMicrosoft.Storage/storageAccounts/queueServices/queues/read
Définition de métadonnées de file d'attenteSet Queue Metadata Microsoft.Storage/storageAccounts/queueServices/queues/writeMicrosoft.Storage/storageAccounts/queueServices/queues/write
Get Queue ACLGet Queue ACL Non disponible via OAuthNot available via OAuth
Définition de liste de contrôle d’accès aux files d'attenteSet Queue ACL Non disponible via OAuthNot available via OAuth
Put MessagePut Message Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/ajout/action ou Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/écritureMicrosoft.Storage/storageAccounts/queueServices/queues/messages/add/action or Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Get MessagesGet Messages Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/processus/action ou (Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/supprimer et Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/lecture)Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action or (Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete and Microsoft.Storage/storageAccounts/queueServices/queues/messages/read)
Peek MessagesPeek Messages Microsoft.Storage/storageAccounts/queueServices/queues/messages/readMicrosoft.Storage/storageAccounts/queueServices/queues/messages/read
Supprimer un messageDelete Message Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/processus/action ou Microsoft. Storage/storageAccounts/queueServices/files d’attente/messages/supprimerMicrosoft.Storage/storageAccounts/queueServices/queues/messages/process/action or Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Clear MessagesClear Messages Microsoft.Storage/storageAccounts/queueServices/queues/messages/deleteMicrosoft.Storage/storageAccounts/queueServices/queues/messages/delete
Mise à jour de messageUpdate Message Microsoft.Storage/storageAccounts/queueServices/queues/messages/writeMicrosoft.Storage/storageAccounts/queueServices/queues/messages/write

Voir aussiSee also