Sélectionner et configurer une méthode appropriée pour l’accès aux files d’attente Azure

Effectué

Le Stockage Azure prend en charge l’utilisation de Microsoft Entra ID pour autoriser les requêtes aux données de file d’attente. Avec l’ID Microsoft Entra, vous pouvez utiliser le contrôle d’accès en fonction du rôle Azure (Azure RBAC) pour accorder des autorisations à un principal de sécurité, qui peut être un utilisateur, un groupe ou un principal de service d’application. Le principal de sécurité est authentifié par Microsoft Entra ID pour retourner un jeton OAuth 2.0. Le jeton peut ensuite être utilisé pour autoriser une demande auprès du service de files d'attente.

L’autorisation avec l’ID Microsoft Entra offre une sécurité et une facilité d’utilisation supérieures sur l’autorisation de clé partagée. Microsoft recommande d’utiliser l’autorisation Microsoft Entra avec vos applications de file d’attente dans la mesure du possible pour garantir l’accès avec les privilèges minimum requis. Pour les applications s’exécutant dans Azure, utilisez des identités managées pour éliminer la nécessité de stocker les informations d’identification dans votre code.

L’autorisation avec l’ID Microsoft Entra est disponible pour tous les comptes de stockage à usage général dans toutes les régions publiques et clouds nationaux. Seuls les comptes de stockage créés avec le modèle de déploiement Azure Resource Manager prennent en charge l’autorisation Microsoft Entra.

Vue d’ensemble de l’ID Microsoft Entra pour les files d’attente

Lorsqu’un principal de sécurité (un utilisateur, un groupe ou une application) tente d’accéder à une ressource de file d’attente, la demande doit être autorisée. Avec l’ID Microsoft Entra, l’accès à une ressource est un processus en deux étapes :

  • Authentification : l’identité du principal de sécurité est authentifiée et un jeton OAuth 2.0 est retourné. L’étape d’authentification nécessite qu’une application demande un jeton d’accès OAuth 2.0 au moment de l’exécution. Si une application s’exécute à partir d’une entité Azure telle qu’une machine virtuelle Azure, un groupe de machines virtuelles identiques ou une application Azure Functions, elle peut utiliser une identité managée pour accéder aux données de file d’attente. L’utilisation d’identités managées est l’approche recommandée , car elle élimine la nécessité de gérer les informations d’identification.
  • Autorisation : le jeton est transmis dans le cadre d’une demande au service file d’attente et utilisé par le service pour autoriser l’accès à la ressource spécifiée. L’étape d’autorisation nécessite qu’un ou plusieurs rôles RBAC Azure soient attribués au principal de sécurité effectuant la requête.

Utiliser un compte Microsoft Entra avec le portail, PowerShell ou Azure CLI

Pour en savoir plus sur l’accès aux données dans le portail Azure avec un compte Microsoft Entra, consultez l’accès aux données à partir du portail Azure. Pour savoir comment appeler des commandes Azure PowerShell ou Azure CLI avec un compte Microsoft Entra, consultez l’accès aux données à partir de PowerShell ou d’Azure CLI.

Utiliser l’ID Microsoft Entra pour autoriser l’accès dans le code de l’application

Pour autoriser l’accès au stockage Azure avec l’ID Microsoft Entra, vous pouvez utiliser l’une des bibliothèques clientes suivantes pour acquérir un jeton OAuth 2.0 :

  • La bibliothèque de client Azure Identity est recommandée pour la plupart des scénarios de développement.
  • La bibliothèque d’authentification Microsoft (MSAL) peut convenir à certains scénarios avancés.

Bibliothèque de client Azure Identity

La bibliothèque de client Azure Identity simplifie le processus d’obtention d’un jeton d’accès OAuth 2.0 pour l’autorisation avec Microsoft Entra ID via le Kit de développement logiciel (SDK) Azure. Les dernières versions des bibliothèques clientes stockage Azure pour .NET, Java, Python, JavaScript et Go s’intègrent aux bibliothèques Azure Identity pour chacun de ces langages afin de fournir un moyen simple et sécurisé d’acquérir un jeton d’accès pour l’autorisation des demandes de stockage Azure.

L’avantage de la bibliothèque de client Azure Identity est qu’elle vous permet d’utiliser le même code pour acquérir le jeton d’accès, que votre application s’exécute dans l’environnement de développement ou dans Azure. La bibliothèque cliente Azure Identity retourne un jeton d’accès pour un principal de sécurité. Lorsque votre code s’exécute dans Azure, le principal de sécurité peut être une identité managée pour les ressources Azure, un principal de service ou un utilisateur ou un groupe. Dans l’environnement de développement, la bibliothèque cliente fournit un jeton d’accès pour un utilisateur ou un principal de service à des fins de test.

Le jeton d’accès retourné par la bibliothèque cliente Azure Identity est encapsulé dans des informations d’identification de jeton. Vous pouvez ensuite utiliser les informations d’identification du jeton pour obtenir un objet client de service à utiliser pour effectuer des opérations autorisées sur stockage Azure. Un moyen simple d’obtenir le jeton d’accès et les informations d’identification du jeton consiste à utiliser la classe DefaultAzureCredential fournie par la bibliothèque cliente Azure Identity. DefaultAzureCredential tente d’obtenir les informations d’identification du jeton en essayant séquentiellement plusieurs types d’informations d’identification différents. DefaultAzureCredential fonctionne à la fois dans l’environnement de développement et dans Azure.

Le tableau suivant pointe vers des informations supplémentaires pour autoriser l’accès aux données dans différents scénarios :

Langage .NET Java JavaScript Python Go
Vue d’ensemble de l’authentification avec l’ID Microsoft Entra Comment authentifier des applications .NET avec des services Azure Authentification Azure avec Java et Azure Identity Authentifier des applications JavaScript sur Azure à l’aide du kit de développement logiciel (SDK) Azure Authentifier des applications Python sur Azure à l’aide du du Kit de développement logiciel (SDK) Azure N/A
Authentification à l’aide de principaux de service de développeur Authentifier des applications .NET auprès des services Azure pendant le développement local à l’aide de principaux de service Authentification Azure avec un principal de service Authentification des applications JS auprès des services Azure avec un principal de service Authentifier des applications Python auprès des services Azure pendant le développement local à l’aide de principaux de service Authentification Azure SDK pour Go avec un principal de service
Authentification à l’aide de comptes de développeur ou d’utilisateur Authentifier des applications .NET auprès des services Azure pendant le développement local à l’aide de comptes de développeur Authentification Azure avec des informations d’identification d’utilisateur Authentifier les applications JavaScript dans les services Azure avec des comptes développeur Authentifier des applications Python auprès des services Azure pendant le développement local à l’aide de comptes de développeur Authentification Azure avec le SDK Azure pour Go
Authentification à partir d’applications hébergées par Azure Authentification des applications hébergées dans Azure auprès des ressources Azure avec le Kit de développement logiciel (SDK) Azure pour .NET Authentifier les applications Java hébergées par Azure Authentification des applications JavaScript hébergées par Azure sur des ressources Azure avec le Kit de développement logiciel (SDK) Azure pour JavaScript l’authentification des applications hébergées par Azure sur des ressources Azure avec le Kit de développement logiciel (SDK) Azure pour Python Authentification avec Azure SDK pour Go en utilisant une identité managée
Authentification à partir d’applications locales s’authentifier auprès des ressources Azure à partir d’applications .NET hébergées localement N/A Authentifier des applications JavaScript locales sur des ressources Azure s’authentifier auprès des ressources Azure à partir d’applications Python hébergées localement N/A
Vue d’ensemble de la bibliothèque de client Identity Bibliothèque cliente Azure Identity pour .NET bibliothèque de client Azure Identity pour Java bibliothèque de client Azure Identity pour javaScript bibliothèque de client Azure Identity pour Python Bibliothèque cliente Azure Identity pour Go

Bibliothèque d’authentification Microsoft (MSAL)

Bien que Microsoft recommande d’utiliser la bibliothèque de client Azure Identity si possible, la bibliothèque MSAL peut être appropriée pour l’utiliser dans certains scénarios avancés.

Lorsque vous utilisez MSAL pour acquérir un jeton OAuth pour accéder au stockage Azure, vous devez fournir un ID de ressource Microsoft Entra. L’ID de ressource Microsoft Entra indique l’audience pour laquelle un jeton émis peut être utilisé pour fournir l’accès à une ressource Azure. Dans le cas du stockage Azure, l’ID de ressource peut être spécifique à un seul compte de stockage ou s’applique à n’importe quel compte de stockage.

Lorsque vous fournissez un ID de ressource spécifique à un seul compte de stockage et service, l’ID de ressource est utilisé pour acquérir un jeton pour autoriser les demandes au compte et au service spécifiés uniquement. Le tableau suivant répertorie la valeur à utiliser pour l’ID de ressource, en fonction du cloud avec lequel vous travaillez. Remplacez <account-name> par le nom de votre compte de stockage.

Cloud ID de ressource
Azure Global https://<account-name>.queue.core.windows.net
Azure Government https://<account-name>.queue.core.usgovcloudapi.net
Azure China 21Vianet https://<account-name>.queue.core.chinacloudapi.cn

Vous pouvez également fournir un ID de ressource qui s’applique à n’importe quel compte de stockage, comme indiqué dans le tableau suivant. Cet ID de ressource est le même pour tous les clouds publics et souverains, et est utilisé pour acquérir un jeton pour autoriser les demandes à n’importe quel compte de stockage.

Cloud ID de ressource
Azure Global
Azure Government
Azure China 21Vianet
https://storage.azure.com

Attribuer des rôles Azure pour les droits d’accès

Microsoft Entra autorise les droits d’accès aux ressources sécurisées via Azure RBAC. Stockage Azure définit un ensemble de rôles RBAC intégrés qui englobent les ensembles communs d’autorisations permettant d’accéder aux données de la file d’attente. Vous pouvez également définir des rôles personnalisés pour accéder aux données de file d’attente.

Un principal de sécurité Microsoft Entra peut être un utilisateur, un groupe, un principal de service d’application ou une identité managée pour les ressources Azure. Les rôles RBAC affectés à un principal de sécurité déterminent les autorisations dont dispose le principal.

Dans certains cas, vous devrez peut-être activer l’accès précis aux ressources de file d’attente ou simplifier les autorisations lorsque vous disposez d’un grand nombre d’attributions de rôles pour une ressource de stockage. Vous pouvez utiliser le contrôle d’accès basé sur des attributs Azure (Azure ABAC) pour configurer des conditions sur les attributions de rôles. Vous pouvez utiliser des conditions avec un rôle personnalisé ou sélectionner des rôles intégrés. Pour plus d’informations sur la configuration des conditions pour les ressources de stockage Azure avec ABAC, consultez Autoriser l’accès aux files d’attente à l’aide des conditions d’attribution de rôle Azure.

Lorsque vous créez un compte de stockage Azure, vous ne disposez pas automatiquement des autorisations d’accès aux données via l’ID Microsoft Entra. Vous devez vous attribuer explicitement un rôle Azure pour accéder au stockage file d’attente. Vous pouvez l’affecter au niveau de votre abonnement, groupe de ressources, compte de stockage ou file d’attente.

Étendue des ressources

Avant d’attribuer un rôle RBAC Azure à un principal de sécurité, déterminez l’étendue de l’accès que le principal de sécurité doit avoir. Accordez toujours uniquement l’étendue la plus restreinte possible nécessaire au principal de sécurité pour effectuer leurs tâches. Cela suit le principe des privilèges minimum et réduit les risques de sécurité. Les rôles RBAC Azure définis au niveau d’une étendue plus large sont hérités par les ressources qui sont sous eux.

Vous pouvez étendre l’accès aux ressources de file d’attente Azure aux niveaux suivants, en commençant par l’étendue la plus étroite (la plus restrictive) :

  • File d’attente individuelle. Dans cette étendue, une attribution de rôle s’applique aux messages de la file d’attente et aux propriétés et métadonnées de file d’attente.
  • Compte de stockage. Dans cette étendue, une attribution de rôle s’applique à toutes les files d’attente et à leurs messages.
  • Groupe de ressources. Dans cette étendue, une attribution de rôle s’applique à toutes les files d’attente de tous les comptes de stockage du groupe de ressources.
  • Abonnement. Dans cette étendue, une attribution de rôle s’applique à toutes les files d’attente de tous les comptes de stockage de tous les groupes de ressources de l’abonnement.
  • Un groupe d’administration. Dans cette étendue, une attribution de rôle s’applique à toutes les files d’attente dans tous les comptes de stockage de tous les groupes de ressources de tous les abonnements du groupe d’administration.

Rôles intégrés Azure pour les files d’attente

Azure RBAC fournit plusieurs rôles intégrés pour autoriser l’accès aux données de file d’attente à l’aide de Microsoft Entra ID et OAuth. Voici quelques exemples de rôles qui fournissent des autorisations pour les ressources de données dans Stockage Azure :

Seuls les rôles explicitement définis pour l’accès aux données permettent à un principal de sécurité d’accéder aux données de file d’attente. Les rôles intégrés tels que Propriétaire, Contributeuret Contributeur de compte de stockage permettent à un principal de sécurité de gérer un compte de stockage, mais ne fournissent pas d'accès aux données de file d'attente au sein de ce compte via l'ID Microsoft Entra. Toutefois, si un rôle inclut Microsoft.Storage/storageAccounts/listKeys/action, un utilisateur auquel ce rôle est affecté peut accéder aux données du compte de stockage via l’autorisation de clé partagée avec les clés d’accès au compte.

Note

Les rôles qui incluent l’action listKeys fournissent un accès complet aux données du compte de stockage via la clé partagée. Pour améliorer la sécurité, envisagez d’utiliser des rôles personnalisés qui excluent cette action et appliquent l’accès Microsoft Entra ID uniquement.

Les attributions de rôles Azure peuvent prendre jusqu’à 30 minutes pour se propager.

Accéder aux données avec un compte Microsoft Entra

L’accès aux données de file d’attente via le portail Azure, PowerShell ou Azure CLI peut être autorisé à l’aide du compte Microsoft Entra de l’utilisateur ou à l’aide des clés d’accès du compte (autorisation de clé partagée).

  • Évitez l’autorisation de clé partagée : l’autorisation avec la clé partagée n’est pas recommandée, car elle fournit un accès complet au compte de stockage et ne prend pas en charge les fonctionnalités de sécurité avancées telles que l’accès conditionnel. Pour une sécurité optimale, désactivez l’autorisation via une clé partagée pour votre compte de stockage, comme décrit dans Empêcher l’autorisation de clé partagée pour un compte de stockage Azure.
  • Limiter l’utilisation des clés d’accès : l’utilisation des clés d’accès et des chaînes de connexion doit être limitée aux prototypes de preuve de concept initiales ou de développement qui n’accèdent pas aux données de production ou sensibles. Pour les charges de travail de production, utilisez toujours des classes d’authentification basées sur des jetons disponibles dans le Kit de développement logiciel (SDK) Azure.
  • Préférer l’ID Microsoft Entra : Microsoft recommande aux clients d’utiliser l’ID Microsoft Entra pour la méthode d’autorisation la plus sécurisée. Lorsque la délégation est requise, utilisez une SAS de délégation d’utilisateur pour le stockage Blob sécurisé avec les informations d’identification Microsoft Entra.

Accès aux données à partir du portail Azure

Le portail Azure peut utiliser votre compte Microsoft Entra ou les clés d’accès du compte pour accéder aux données de file d’attente dans un compte de stockage Azure. Le schéma d’autorisation utilisé par le portail Azure dépend des rôles Azure qui vous sont attribués.

Lorsque vous tentez d’accéder aux données de file d’attente, le portail Azure vérifie d’abord si vous avez reçu un rôle Azure avec Microsoft.Storage/storageAccounts/listkeys/action. Si vous avez reçu un rôle avec cette action, le portail Azure utilise la clé de compte pour accéder aux données de file d’attente via l’autorisation de clé partagée. Si vous n’avez pas été affecté à un rôle avec cette action, le portail Azure tente d’accéder aux données à l’aide de votre compte Microsoft Entra.

Pour accéder aux données de file d’attente à partir du portail Azure à l’aide de votre compte Microsoft Entra, vous avez besoin d’autorisations pour accéder aux données de file d’attente et vous devez également accéder aux ressources du compte de stockage dans le portail Azure. Les rôles intégrés fournis par Stockage Azure accordent l’accès aux ressources de file d’attente, mais ils n’accordent pas d’autorisations aux ressources du compte de stockage. Pour cette raison, l’accès au portail nécessite également l’attribution d’un rôle Azure Resource Manager, tel que le rôle Lecteur, limité au niveau du compte de stockage ou supérieur. Le rôle Lecteur accorde les autorisations les plus restreintes, mais un autre rôle Azure Resource Manager qui accorde l’accès aux ressources de gestion des comptes de stockage est également acceptable.

Accès aux données à partir de PowerShell ou d’Azure CLI

Azure CLI et PowerShell prennent en charge la connexion avec les informations d’identification Microsoft Entra. Une fois connecté, votre session s’exécute sous ces informations d’identification. Pour en savoir plus, consultez l’un des articles suivants :

Meilleures pratiques pour autoriser l’accès à la file d’attente

Lors de l’implémentation de l’autorisation de Microsoft Entra ID pour le stockage de files d'attente Azure, suivez les bonnes pratiques de sécurité suivantes :

  • Utilisez des identités managées : pour les applications s’exécutant dans Azure (machines virtuelles, App Service, Azure Functions, Container Instances, AKS), utilisez toujours des identités managées au lieu des principaux de service avec des informations d’identification stockées. Cela élimine la surcharge de gestion des informations d’identification et améliore la sécurité.
  • Implémentez le privilège minimum : attribuez le rôle le plus restrictif qui répond aux exigences :
    • Utiliser le lecteur de données de file d’attente de stockage pour les applications qui doivent uniquement afficher les messages
    • Utilisez l’Expéditeur de messages de données en file d’attente du stockage pour les applications qui ne font que mettre en file d’attente les messages
    • Utiliser le processeur de messages de données de file d’attente de stockage pour les applications de travail qui traitent et suppriment des messages
    • Utiliser Contributeur de données de file d'attente de stockage uniquement lorsque l’accès complet est requis
  • Définissez correctement la portée des attributions : appliquez les attributions de rôles au niveau de la file d’attente lorsque cela est possible plutôt qu’au niveau du compte de stockage ou de l’abonnement. Cela limite l’accès aux files d’attente spécifiques dont les utilisateurs ou les applications ont besoin.
  • Désactiver l’autorisation de clé partagée : une fois que vous avez migré vers l’authentification Microsoft Entra ID, envisagez de désactiver l’autorisation de clé partagée au niveau du compte de stockage pour empêcher l’accès non autorisé via des clés de compte.
  • Utilisez des rôles personnalisés pour un contrôle précis : si les rôles intégrés ne répondent pas à vos exigences spécifiques, créez des rôles RBAC Azure personnalisés avec uniquement les autorisations nécessaires.
  • Surveiller les modèles d’accès : activez la journalisation des diagnostics et passez régulièrement en revue les journaux Azure Monitor pour suivre l’accès à la file d’attente et identifier toute activité suspecte ou non autorisée.
  • Appliquer des stratégies d’accès conditionnel : utilisez des stratégies d’accès conditionnel Microsoft Entra pour appliquer des exigences de sécurité supplémentaires telles que l’authentification multifacteur, la conformité des appareils ou les restrictions basées sur l’emplacement.
  • Implémenter une logique de nouvelle tentative : les applications basées sur la file d’attente doivent implémenter une logique de nouvelle tentative appropriée avec une interruption exponentielle pour gérer correctement les échecs d’authentification ou d’autorisation temporaires.
  • Révisions d’accès régulières : auditez régulièrement les attributions de rôles pour garantir que les utilisateurs et les applications nécessitent toujours leurs autorisations affectées et suppriment l’accès inutile.
  • Environnements distincts : utilisez différents comptes de stockage et attributions de rôles pour les environnements de développement, de test et de production afin de réduire le risque d’exposition ou de modification accidentelle des données.