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 :
- Propriétaire des données Blob du stockage
- Contributeur aux données Blob du stockage
- Lecteur des données blob du stockage
- Délégation du Stockage Blob
- Contributeur aux données en file d’attente du stockage
- Lecteur des données en file d’attente du stockage
- Processeur de messages de données en file d’attente du stockage
- Expéditeur de messages de données en file d’attente du stockage
- Lecteur de données de table du stockage
- Contributeur aux données de table du stockage
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 |