Autoriser avec Azure Active Directory

Stockage Azure fournit l’intégration à Azure Active Directory (Azure AD) pour l’autorisation basée sur l’identité des demandes adressées aux services Blob, File d’attente et Table. 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, de file d’attente et de table aux utilisateurs, groupes ou applications. Vous pouvez accorder des autorisations limitées au niveau d’un conteneur, d’une file d’attente ou d’une table individuelle.

Pour en savoir plus sur l’intégration d’Azure AD dans Stockage Azure, consultez Autoriser l’accès aux objets blob et aux files d’attente Azure à l’aide d’Azure Active Directory.

Pour plus d’informations sur les avantages de l’utilisation d’Azure AD dans votre application, consultez Intégration à Azure Active Directory.

Conseil

L’autorisation de l’accès aux données d’objet blob, de file d’attente et de table avec Azure AD offre une sécurité et une facilité d’utilisation supérieures par rapport aux autres options d’autorisation. 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. Bien que vous puissiez continuer à utiliser l’autorisation de clé partagée avec vos applications d’objet blob, de file d’attente et de table, Microsoft recommande de passer à Azure AD si possible. Pour plus d’informations sur l’intégration d’Azure AD dans Stockage Azure, consultez Autoriser l’accès aux objets blob et aux files d’attente Azure à l’aide d’Azure Active Directory.

Utiliser des jetons d’accès OAuth pour l’authentification

Stockage Azure accepte les jetons d’accès OAuth 2.0 du locataire Azure AD associé à l’abonnement qui contient le compte de stockage. Stockage Azure accepte les jetons d’accès pour :

  • Utilisateurs et groupes
  • Principaux de service
  • Identités managées pour les ressources Azure
  • Applications utilisant des autorisations déléguées par les utilisateurs

Stockage Azure expose une étendue de délégation unique nommée user_impersonation qui permet aux applications d’effectuer toute action autorisée par l’utilisateur.

Pour demander des jetons pour stockage Azure, spécifiez la valeur https://storage.azure.com/ de l’ID de ressource. Pour plus d’informations sur l’ID de ressource, consultez Plateforme d'identités Microsoft étendues, autorisations, & consentement.

Pour plus d’informations sur la demande de jetons d’accès auprès d’Azure AD pour les utilisateurs et les principaux de service, consultez Flux d’authentification et scénarios d’application.

Pour plus d’informations sur la demande de jetons d’accès pour les ressources configurées avec des identités managées, consultez Comment utiliser des identités managées pour les ressources Azure sur une machine virtuelle Azure afin d’acquérir un jeton d’accès.

Appeler des opérations de stockage avec des jetons OAuth

Pour appeler des opérations de service Blob, File d’attente et Table à l’aide de jetons d’accès OAuth, passez le jeton d’accès dans l’en-tête d’autorisation à l’aide du schéma du porteur et spécifiez une version de service du 09-11-2017 ou ultérieure, comme illustré dans l’exemple suivant :

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 porteur

Le défi du porteur fait partie du protocole OAuth RFC 6750 et est utilisé pour la découverte d’autorité. Pour les demandes anonymes ou avec un jeton de porteur OAuth non valide, le serveur retourne le code d’état 401 (Non autorisé) avec des informations sur le fournisseur d’identité et les ressources. Reportez-vous au lien pour savoir comment utiliser ces valeurs lors de l’authentification avec Azure AD.

Les services d’objets blob et de file d’attente stockage Azure retournent un défi au porteur pour les versions 2019-12-12 et ultérieures. Le service Table de stockage Azure retourne un défi du porteur à partir de la version 2020-12-06. Azure Data Lake Storage Gen2 retourne un défi du porteur pour la version 2017-11-09 et ultérieure.

Voici un exemple de réponse au défi du porteur lorsque la demande cliente n’inclut pas le jeton du porteur dans la demande d’objet blob de téléchargement anonyme :

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ètre Description
authorization_uri L’URI (point de terminaison physique) du serveur d’autorisation. 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. Le client doit valider l’approbation du serveur d’autorisation. Lorsque la ressource est protégée par Azure AD, il suffit de vérifier que l’URL commence https://login.microsoftonline.com par ou par un autre nom d’hôte pris en charge par Azure AD. Une ressource spécifique au client doit toujours retourner un URI d’autorisation spécifique au client.
resource_id Retourne l’identificateur unique de la ressource. L’application cliente peut utiliser cet identificateur comme valeur du paramètre de ressource lorsqu’elle demande un jeton d’accès pour la ressource. Il est important que l’application cliente vérifie cette valeur, sinon un service malveillant peut provoquer une attaque par élévation de privilèges. 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 accessible. L’ID de ressource stockage Azure est https://storage.azure.com.

Gérer les droits d’accès à l’aide de RBAC

Azure AD gère l’autorisation d’accès aux ressources sécurisées via RBAC. À l’aide de RBAC, vous pouvez attribuer des rôles à des utilisateurs, des groupes ou des principaux de service. Chaque rôle englobe un ensemble d’autorisations pour une ressource. Une fois le rôle attribué à l’utilisateur, au groupe ou au principal de service, ils ont accès à cette ressource. Vous pouvez attribuer des droits d’accès à l’aide des Portail Azure, des outils en ligne de commande Azure et des API de gestion Azure. Pour plus d’informations sur RBAC, consultez Prise en main de Role-Based Access Control.

Pour Stockage Azure, vous pouvez accorder l’accès aux données dans un conteneur ou une file d’attente dans le compte de stockage. Le Stockage Azure propose l’utilisation de ces rôles RBAC intégrés avec Azure AD :

Pour plus d’informations sur la façon dont les rôles intégrés sont définis pour Stockage Azure, consultez Comprendre les définitions de rôle pour les ressources Azure.

Vous pouvez également définir des rôles personnalisés à utiliser avec le stockage Blob et les files d’attente Azure. 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.

Autorisations pour appeler des opérations de données

Les tableaux suivants décrivent les autorisations nécessaires pour qu’un utilisateur, un groupe ou un principal de service Azure AD appelle des opérations de stockage Azure spécifiques. 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.

Autorisations pour les opérations de service Blob

Opération de service d’objet blob Action RBAC
Lister des conteneurs Microsoft.Storage/storageAccounts/blobServices/containers/read (étendue au compte de stockage ou au-dessus)
Définition des propriétés du service Blob Microsoft.Storage/storageAccounts/blobServices/write
Obtenir les propriétés du service Blob Microsoft.Storage/storageAccounts/blobServices/read
Demande d’objet blob en pré-vol Anonyme
Obtenir les statistiques du service Blob Microsoft.Storage/storageAccounts/blobServices/read
Obtenir des informations sur le compte Non prise en charge
Obtenir la clé de délégation d’utilisateur Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
Créer un conteneur Microsoft.Storage/storageAccounts/blobServices/containers/write
Get Container Properties Microsoft.Storage/storageAccounts/blobServices/containers/read
Get Container Metadata Microsoft.Storage/storageAccounts/blobServices/containers/read
Définir les métadonnées de conteneur Microsoft.Storage/storageAccounts/blobServices/containers/write
Get Container ACL Non prise en charge
Set Container ACL Non prise en charge
Lease Container Microsoft.Storage/storageAccounts/blobServices/containers/write
Delete Container Microsoft.Storage/storageAccounts/blobServices/containers/delete
Restaurer un conteneur Microsoft.Storage/storageAccounts/blobServices/containers/write
Lister les objets blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Rechercher des objets blob par étiquettes dans le conteneur Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action
Put Blob Pour créer ou remplacer : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/blobs/write
Pour créer un objet blob : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Placer un objet blob à partir de l’URL Pour créer ou remplacer : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/blobs/write
Pour créer un objet blob : Microsoft.Storage/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
Obtenir les étiquettes d’objet blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
Définir des étiquettes d’objet blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
Rechercher un objet blob par étiquettes Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action
Bail Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Snapshot Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write ou
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Copy 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)
Pour l’objet blob source dans le même compte de stockage : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Pour l’objet blob source dans un autre compte de stockage : Disponible en tant qu’anonyme ou inclure un jeton SAP valide
Copier un objet blob à partir d’une URL 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)
Pour l’objet blob source dans le même compte de stockage : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Pour l’objet blob source dans un autre compte de stockage : Disponible en tant qu’anonyme ou inclure un jeton SAP valide
Abort Copy Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Delete Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
Annuler la suppression d’un objet blob Microsoft.Storage/storageAccounts/blobServices/containers/write
Set Blob Tier Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Lot d’objets blob Requête parente : Microsoft.Storage/storageAccounts/blobServices/containers/write
Sous-demandes : consultez autorisations pour ce type de demande.
Définir la stratégie d’immuabilité Microsoft.Storage/storageAccounts/blobServices/containers/write
Supprimer la stratégie d’immuabilité Microsoft.Storage/storageAccounts/blobServices/containers/write
Définir la conservation légale des objets blob Microsoft.Storage/storageAccounts/blobServices/containers/write
Put Block Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Put Block from URL 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
Contenu de l’objet blob de requête Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Put Page Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Placer la page à partir de l’URL Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Obtenir les portées de page Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Copie incrémentielle BLOB Pour l’objet blob de destination : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Pour l’objet blob source : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Pour les nouveaux objets blob : Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Append Block Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write ou Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Ajouter un bloc à partir d’une URL Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write ou Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Définir l’expiration des objets blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Autorisations pour les opérations de service file d’attente

Opération de service de file d’attente Action RBAC
Lister les files d’attente Microsoft.Storage/storageAccounts/queueServices/queues/read (étendue au compte de stockage ou au-dessus)
Définition des propriétés du service de File d’attente Microsoft.Storage/storageAccounts/queueServices/read
Obtenir les propriétés du service de file d’attente Microsoft.Storage/storageAccounts/queueServices/read
Demande de file d'attente préliminaire Anonyme
Obtention des statistiques du service de File d'attente Microsoft.Storage/storageAccounts/queueServices/read
Créer une file d’attente Microsoft.Storage/storageAccounts/queueServices/queues/write
Supprimer une file d’attente Microsoft.Storage/storageAccounts/queueServices/queues/delete
Obtention de métadonnées file d'attente Microsoft.Storage/storageAccounts/queueServices/queues/read
Définir les métadonnées de file d’attente Microsoft.Storage/storageAccounts/queueServices/queues/write
Get Queue ACL Non disponible via OAuth
Définition de liste de contrôle d’accès aux files d'attente Non disponible via OAuth
Put Message Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action ou Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Get Messages Microsoft.Storage/storageAccounts/queueServices/queueServices/files/messages/process/action ou (Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete et Microsoft.Storage/storageAccounts/queueServices/queues/messages/read)
Peek Messages Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Supprimer un message Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action ou Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Effacer les messages Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Mettre à jour un message Microsoft.Storage/storageAccounts/queueServices/queues/messages/write

Autorisations pour les opérations de service de table

Opération de service de table Action RBAC
Définition des propriétés du service de Table Microsoft.Storage/storageAccounts/tableServices/write
Obtenir les propriétés du service de table Microsoft.Storage/storageAccounts/tableServices/read
Demande de table préliminaire Anonyme
Obtenir les statistiques du service Table Microsoft.Storage/storageAccounts/tableServices/read
Exécution de transactions de groupe d’entités La sous-opération autorise séparément
Tables de requête Microsoft.Storage/storageAccounts/tableServices/tables/read (limité au compte de stockage ou supérieur)
Créer une table Microsoft.Storage/storageAccounts/tableServices/tables/write
Supprimer une table Microsoft.Storage/storageAccounts/tableServices/tables/delete
Get Table ACL Non disponible via OAuth
Set Table ACL Non disponible via OAuth
Query Entities Microsoft.Storage/storageAccounts/tableServices/tables/entities/read
Insert Entity Microsoft.Storage/storageAccounts/tableServices/tables/entities/write ou Microsoft.Storage/storageAccounts/tableServices/tables/entities/add/action
Insérer ou fusionner une entité Microsoft.Storage/storageAccounts/tableServices/tables/entities/write ou (Microsoft.Storage/storageAccounts/tableServices/tables/entities/add/action et Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action)
Insérer ou remplacer une entité Microsoft.Storage/storageAccounts/tableServices/tables/entities/write ou (Microsoft.Storage/storageAccounts/tableServices/tables/entities/add/action et Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action)
Update Entity Microsoft.Storage/storageAccounts/tableServices/tables/entities/write ou Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action
Merge Entity Microsoft.Storage/storageAccounts/tableServices/tables/entities/write ou Microsoft.Storage/storageAccounts/tableServices/tables/entities/update/action
Delete Entity Microsoft.Storage/storageAccounts/tableServices/tables/entities/delete

Voir aussi