Autoriser avec Azure Active Directory

stockage Azure fournit une intégration avec Azure Active Directory (Azure AD) pour l’autorisation basée sur l’identité des demandes aux services Blob, de file d’attente et de 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 individuels.

pour en savoir plus sur l’intégration d’Azure AD dans stockage Azure, consultez autoriser l’accès aux objets blob et files d’attente Azure à l’aide de 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 à celles des 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 une autorisation de clé partagée avec vos applications d’objet BLOB, de file d’attente et de table, Microsoft recommande de passer à Azure AD dans la mesure du possible. pour plus d’informations sur l’intégration d’Azure AD dans stockage Azure, consultez autoriser l’accès aux objets blob et files d’attente Azure à l’aide de 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
  • Principaux de service
  • Identités géré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 toutes les actions autorisées 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 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.

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.

Appeler des opérations de stockage avec des jetons OAuth

Pour appeler des opérations de service BLOB, de file d’attente et de table à l’aide de jetons d’accès OAuth, transmettez le jeton d’accès dans l’en-tête d’autorisation à l’aide du modèle de porteur , puis spécifiez une version de service de 2017-11-09 ou supé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

La stimulation du porteur fait partie du protocole OAuth RFC 6750 et est utilisée pour la découverte de l’autorité. 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. Pour plus d’informations sur l’utilisation de ces valeurs lors de l’authentification avec Azure AD, consultez le lien .

stockage Azure Les services d’objets BLOB et de file d’attente renvoient une demande de support pour la version 2019-12-12 et les versions ultérieures. stockage Azure Le service de table renvoie une demande de support de la version 2020-12-06. Azure Data Lake Storage Gen2 renvoie une demande de support pour la version 2017-11-09 et les versions ultérieures.

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 :

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 par https://login.microsoftonline.com ou 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’il demande un jeton d’accès pour la ressource. 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. 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. https://storage.azure.comest l’ID de ressource généralement utilisé stockage Azure.

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 par le biais de RBAC. À l’aide de RBAC, vous pouvez assigner 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 que le rôle est attribué à l’utilisateur, au groupe ou au principal du service, il a accès à cette ressource. 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. Pour plus d’informations sur RBAC, consultez prise en main de Role-Based Access Control.

par stockage Azure, vous pouvez accorder l’accès aux données d’un conteneur ou d’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 définition des rôles intégrés pour stockage Azure, consultez comprendre les définitions de rôles pour les ressources Azure.

Vous pouvez également définir des rôles personnalisés à utiliser avec le stockage d’objets 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 à un Azure AD un utilisateur, un groupe ou un principal de service pour appeler 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 Librairie. Stockage/storageAccounts/blobServices/containers/read (étendue au compte de stockage)
Définition des propriétés du service Blob Microsoft.Storage/storageAccounts/blobServices/write
Obtient les propriétés du service BLOB Microsoft.Storage/storageAccounts/blobServices/read
Demande préliminaire d’objet BLOB Anonyme
Obtient les statistiques du service BLOB Microsoft.Storage/storageAccounts/blobServices/read
Récupérer la clé de délégation d’utilisateur Librairie. Stockage/storageAccounts/blobServices/generateUserDelegationKey
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 disponible via OAuth
Set Container ACL Non disponible via OAuth
Delete Container Microsoft.Storage/storageAccounts/blobServices/containers/delete
Lease Container Microsoft.Storage/storageAccounts/blobServices/containers/write
Lister les objets blob Librairie. Stockage/storageAccounts/blobServices/containers/blobs/read (étendue au conteneur)
Put Blob Pour Create or replace : Microsoft. Stockage/storageAccounts/blobServices/containers/blobs/write
Pour créer un objet BLOB : Microsoft. Stockage/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
Bail Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Snapshot Blob Librairie. Stockage/storageAccounts/blobServices/containers/blobs/write ou
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Copy Blob Pour l’objet blob de destination : Microsoft. Stockage/storageAccounts/blobServices/containers/blobs/write ou Microsoft. Stockage/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. Stockage/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 valide
Abort Copy Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Delete 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
Obtenir les portées de page Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Copie incrémentielle BLOB Pour l’objet blob de destination : Microsoft. Stockage/storageAccounts/blobServices/containers/blobs/write
Pour l’objet BLOB source : Microsoft. Stockage/storageAccounts/blobServices/containers/blobs/read
Pour nouvel objet BLOB : Microsoft. Stockage/storageAccounts/blobServices/containers/blobs/add/action
Append Block Librairie. Stockage/storageAccounts/blobServices/containers/blobs/write ou Microsoft. Stockage/storageAccounts/blobServices/containers/blobs/add/action

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

Opération de service de File d’attente Action RBAC
Répertorier les files d’attente Librairie. Stockage/storageAccounts/queueServices/queues/read (compte de stockage étendu)
Définition des propriétés du service de File d’attente Microsoft.Storage/storageAccounts/queueServices/read
Obtient 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 Librairie. Stockage/storageAccounts/queueServices/queues/messages/add/action ou Microsoft. Stockage/storageAccounts/queueServices/queues/messages/write
Get Messages Librairie. Stockage/storageAccounts/queueServices/queues/messages/process/action ou (microsoft. Stockage/storageAccounts/queueServices/queues/messages/delete et microsoft. Stockage/storageAccounts/queueServices/queues/messages/read)
Peek Messages Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Supprimer le message Librairie. Stockage/storageAccounts/queueServices/queues/messages/process/action ou Microsoft. Stockage/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
Obtient 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 Librairie. Stockage/storageAccounts/tableServices/tables/read (compte de stockage étendu)
Créer une table Microsoft.Storage/storageAccounts/tableServices/tables/write
Supprimer la 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 Librairie. Stockage/storageAccounts/tableServices/tables/entities/write ou Microsoft. Stockage/storageAccounts/tableServices/tables/entities/add/action
Insérer ou fusionner une entité Librairie. Stockage/storageAccounts/tableServices/tables/entities/write ou (microsoft. Stockage/storageAccounts/tableServices/tables/entities/add/action et microsoft. Stockage/storageAccounts/tableServices/tables/entities/update/action)
Insérer ou remplacer une entité Librairie. Stockage/storageAccounts/tableServices/tables/entities/write ou (microsoft. Stockage/storageAccounts/tableServices/tables/entities/add/action et microsoft. Stockage/storageAccounts/tableServices/tables/entities/update/action)
Update Entity Librairie. Stockage/storageAccounts/tableServices/tables/entities/write ou Microsoft. Stockage/storageAccounts/tableServices/tables/entities/update/action
Merge Entity Librairie. Stockage/storageAccounts/tableServices/tables/entities/write ou Microsoft. Stockage/storageAccounts/tableServices/tables/entities/update/action
Delete Entity Microsoft.Storage/storageAccounts/tableServices/tables/entities/delete

Voir aussi