Configurer l’accès en lecture anonyme pour les conteneurs et les blobs

Stockage Azure prend en charge l’accès en lecture anonyme facultatif pour les conteneurs et les objets blob. Par défaut, l’accès anonyme à vos données n’est jamais autorisé. À moins que vous n’activiez explicitement l’accès anonyme, toutes les demandes adressées à un conteneur et à ses objets blob doivent être autorisées. Quand vous configurez le paramètre de niveau d’accès d’un conteneur pour autoriser l’accès anonyme, les clients peuvent lire les données dans ce conteneur sans autoriser la requête.

Avertissement

Quand un conteneur est configuré pour un accès anonyme, n’importe quel client peut lire les données de ce conteneur. L’accès anonyme présente un risque de sécurité potentiel : si votre scénario ne le nécessite pas, nous vous recommandons donc de l’interdire pour le compte de stockage.

Cet article explique comment configurer l’accès en lecture anonyme pour un conteneur et ses objets blob. Pour plus d’informations sur la façon de corriger l’accès anonyme à des fins de sécurité optimale, consultez l’un de ces articles :

À propos de l’accès en lecture anonyme

L’accès anonyme à vos données est toujours interdit par défaut. Il existe deux paramètres distincts qui affectent l’accès anonyme :

  1. Paramètres d’accès anonyme pour le compte de stockage. Un compte de stockage Azure Resource Manager offre un paramètre permettant d’autoriser ou de interdire l’accès anonyme pour le compte. Microsoft recommande de refuser l’accès anonyme pour vos comptes de stockage pour une sécurité optimale.

    Lorsque l’accès anonyme est autorisé au niveau du compte, les données d’objet blob ne sont pas disponibles pour l’accès en lecture anonyme, sauf si l’utilisateur effectue l’étape supplémentaire pour configurer explicitement le paramètre d’accès anonyme du conteneur.

  2. Configurez le paramètre d’accès anonyme du conteneur. Par défaut, le paramètre d’accès anonyme d’un conteneur est désactivé, ce qui signifie que l’autorisation est nécessaire pour chaque requête adressée au conteneur ou à ses données. Un utilisateur disposant des autorisations appropriées peut modifier le paramètre d’accès anonyme d’un conteneur afin de l’activer uniquement si ce dernier est autorisé pour le compte de stockage.

Le tableau suivant résume la façon dont les deux paramètres affectent ensemble l’accès anonyme pour un conteneur.

Le niveau d’accès anonyme du conteneur est défini sur Privé (valeur par défaut) Le niveau d’accès anonyme du conteneur est défini sur Conteneur Le niveau d’accès anonyme du conteneur est défini sur l’objet Blob
L’accès anonyme n’est pas autorisé pour le compte de stockage Aucun accès anonyme à un conteneur dans le compte de stockage. Aucun accès anonyme à un conteneur dans le compte de stockage. Le paramètre de compte de stockage remplace le paramètre de conteneur. Aucun accès anonyme à un conteneur dans le compte de stockage. Le paramètre de compte de stockage remplace le paramètre de conteneur.
L’accès anonyme est autorisé pour le compte de stockage Aucun accès anonyme à ce conteneur (configuration par défaut). L’accès anonyme est autorisé à ce conteneur et à ses objets blob. L’accès anonyme est autorisé aux objets blob dans ce conteneur, mais pas au conteneur lui-même.

Quand l’accès anonyme est autorisé pour un compte de stockage et configuré pour un conteneur spécifique, une demande de lecture d’un objet blob dans ce conteneur qui est passée sans en-tête Authorization est acceptée par le service, puis les données de l’objet blob sont retournées dans la réponse. Toutefois, si la demande est passée avec un en-tête Authorization, l’accès anonyme sur le compte de stockage est ignoré et la demande est autorisée en fonction des informations d’identification fournies.

Autoriser ou interdire l’accès en lecture anonyme pour un compte de stockage

Quand l’accès anonyme est autorisé pour un compte de stockage, un utilisateur disposant des autorisations appropriées peut modifier le paramètre d’accès anonyme d’un conteneur pour activer l’accès anonyme aux données de ce conteneur. Les données d’objet blob ne sont jamais disponibles pour un accès anonyme, sauf si l’utilisateur effectue l’étape supplémentaire consistant à configurer explicitement le paramètre d’accès anonyme du conteneur.

Gardez à l’esprit que l’accès anonyme à un conteneur est toujours désactivé par défaut et doit être explicitement configuré pour autoriser les demandes anonymes. Quel que soit le paramétrage du compte de stockage, vos données ne sont jamais disponibles pour un accès anonyme, sauf si un utilisateur disposant des autorisations appropriées effectue l’étape supplémentaire consistant à activer l’accès anonyme sur le conteneur.

L’interdiction de l’accès anonyme pour le compte de stockage remplace les paramètres d’accès pour tous les conteneurs de ce compte de stockage, ce qui empêche l’accès anonyme aux données d’objet blob de ce compte. Quand l’accès anonyme est interdit pour le compte, il n’est pas possible de configurer le paramètre d’accès pour un conteneur afin d’autoriser l’accès anonyme. Toutes les demandes anonymes futures adressées à ce compte échoueront. Avant de changer ce paramètre, assurez-vous de bien comprendre l’impact sur les applications clientes qui peuvent accéder à des données de votre compte de stockage de façon anonyme. Pour plus d’informations, consultez Empêcher l’accès anonyme en lecture aux conteneurs et aux objets blob.

Important

Une fois l’accès anonyme interdit pour un compte de stockage, les clients qui utilisent une négociation de porteur de jeton anonyme vont constater que Stockage Azure retourne une erreur 403 (Interdit) au lieu d’une erreur 401 (Non autorisé). Nous vous recommandons de rendre privés tous les conteneurs pour atténuer ce problème. Pour plus d’informations sur la modification du paramètre d’accès anonyme pour les conteneurs, consultez Définir le niveau d’accès pour un conteneur.

L’autorisation ou l’interdiction de l’accès anonyme nécessite la version 2019-04-01 ou ultérieure du fournisseur de ressources Stockage Azure. Pour plus d’informations, consultez API REST du fournisseur de ressources Stockage Azure.

Autorisations pour interdire l’accès anonyme

Afin de définir la propriété AllowBlobAnonymousAccess pour le compte de stockage, un utilisateur doit disposer des autorisations nécessaires pour créer et gérer des comptes de stockage. Les rôles Azure RBAC (contrôle d’accès en fonction du rôle Azure) qui fournissent ces autorisations comprennent l’action Microsoft.Storage/storageAccounts/write. Parmi les rôles intégrés comportant cette action figurent :

Les attributions de rôles doivent être définies au niveau du compte de stockage ou à un niveau supérieur pour permettre à un utilisateur d’interdire l’accès anonyme au compte de stockage. Pour plus d’informations sur l’étendue des rôles, consultez Comprendre l’étendue pour Azure RBAC.

Veillez à limiter l’attribution de ces rôles aux seuls utilisateurs administratifs qui ont besoin de créer un compte de stockage ou de mettre à jour ses propriétés. Appliquez le principe des privilèges minimum pour que les utilisateurs disposent des autorisations nécessaires les plus faibles possibles pour accomplir leurs tâches. Pour plus d’informations sur la gestion de l’accès avec Azure RBAC, consultez Meilleures pratiques pour Azure RBAC.

Ces rôles ne fournissent pas d’accès aux données d’un compte de stockage via Microsoft Entra ID. Toutefois, ils incluent l’action Microsoft.Storage/storageAccounts/listkeys/action, qui accorde l’accès aux clés d’accès du compte. Avec cette autorisation, un utilisateur peut utiliser les clés d’accès du compte pour accéder à toutes les données d’un compte de stockage.

Microsoft.Storage/storageAccounts/listkeys/action accorde l’accès aux données par le biais des clés de compte, mais n’accorde pas à un utilisateur la possibilité de modifier la propriété AllowBlobPublicAccess d’un compte de stockage. Pour les utilisateurs qui ont besoin d’accéder aux données de votre compte de stockage, mais qui ne doivent pas avoir la possibilité de modifier la configuration du compte de stockage, envisagez d’attribuer des rôles comme Contributeur aux données blob du stockage, Lecteur des données blob du stockage ou Lecteur et accès aux données.

Notes

Les rôles d’administrateur d’abonnement classique Administrateur de service et Co-administrateur incluent l’équivalent du rôle Propriétaire d’Azure Resource Manager. Le rôle Propriétaire comprend toutes les actions. Par conséquent, un utilisateur disposant de l’un de ces rôles administratif peut également créer des comptes de stockage et gérer la configuration des comptes. Pour plus d’informations, consultez Rôles Azure, rôles Microsoft Entra et rôles d’administrateur d’abonnements classiques.

Définir la propriété AllowBlobPublicAccess du compte de stockage

Pour autoriser ou interdire l’accès anonyme pour un compte de stockage, définissez la propriété AllowBlobPublicAccess du compte. Cette propriété est disponible pour tous les comptes de stockage créés avec le modèle de déploiement Azure Resource Manager. Pour plus d’informations, consultez Vue d’ensemble des comptes de stockage.

Pour autoriser ou interdire l’accès anonyme à un compte de stockage dans le portail Azure, effectuez les étapes suivantes :

  1. Accédez à votre compte de stockage dans le portail Azure.

  2. Localisez le paramètre Configuration sous Paramètres.

  3. Définissez Autoriser l’accès anonyme aux objets blob sur Activé ou sur Désactivé.

    Capture d’écran montrant comment autoriser ou interdire l’accès anonyme pour un compte

Remarque

L’interdiction de l’accès anonyme à un compte de stockage n’affecte aucun site web statique hébergé dans ce compte de stockage. Le conteneur $web est toujours accessible publiquement.

Après la mise à jour du paramètre d’accès anonyme pour le compte de stockage, la propagation complète de la modification peut prendre jusqu’à 30 secondes.

Quand un conteneur est configuré pour l’accès anonyme, les demandes de lecture d’objets blob dans ce conteneur n’ont pas besoin d’être autorisées. Toutefois, les règles de pare-feu configurées pour le compte de stockage restent effectives et bloquent le trafic conformément aux ACL configurées.

L’autorisation ou l’interdiction de l’accès anonyme nécessite la version 2019-04-01 ou ultérieure du fournisseur de ressources Stockage Azure. Pour plus d’informations, consultez API REST du fournisseur de ressources Stockage Azure.

Les exemples de cette section ont montré comment lire la propriété AllowBlobPublicAccess pour le compte de stockage afin de déterminer si l’accès anonyme est actuellement autorisé ou non. Pour découvrir comment vérifier que le paramètre d’accès anonyme d’un compte est configuré pour empêcher l’accès anonyme, consultez Interdire l’accès anonyme pour le compte de stockage.

Définir le niveau d’accès anonyme pour un conteneur

Pour octroyer aux utilisateurs anonymes un accès en lecture à un conteneur et à ses objets blob, commencez par autoriser l’accès anonyme au compte de stockage, puis définissez le niveau d’accès anonyme du conteneur. Si l’accès anonyme est interdit pour le compte de stockage, vous ne pourrez pas configurer l’accès anonyme pour un conteneur.

Attention

Microsoft recommande de ne pas autoriser l’accès anonyme aux données d’objet blob de votre compte de stockage.

Quand l’accès anonyme est autorisé pour un compte de stockage, vous pouvez configurer un conteneur avec les autorisations suivantes :

  • Aucun accès en lecture public : le conteneur et ses objets blob ne sont accessibles qu’avec une requête autorisée. Cette option est la configuration par défaut de tous les nouveaux conteneurs.
  • Accès en lecture public pour les blobs uniquement : les blobs présents dans le conteneur peuvent être lus par une demande anonyme, mais les données du conteneur ne sont pas disponibles de manière anonyme. Les clients anonymes ne peuvent pas énumérer les objets blob présents dans le conteneur.
  • Public read access for container and its blobs (Accès en lecture public pour le conteneur et ses objets blob) : Les données de conteneur et d’objet blob peuvent être lues par une requête anonyme, à l’exception des paramètres d’autorisation et des métadonnées du conteneur. Les clients peuvent énumérer les objets blob présents dans le conteneur par une demande anonyme, mais ne peuvent pas énumérer les conteneurs présents dans le compte de stockage.

Vous ne pouvez pas changer le niveau d’accès anonyme pour un objet blob individuel. Le niveau d’accès anonyme est défini seulement au niveau du conteneur. Vous pouvez définir le niveau d’accès anonyme du conteneur lors de la création du conteneur, ou vous pouvez mettre à jour le paramètre sur un conteneur existant.

Pour mettre à jour le niveau d’accès anonyme pour un ou plusieurs conteneurs existants dans le portail Azure, effectuez les étapes suivantes :

  1. Accédez à la vue d’ensemble de votre compte de stockage dans le portail Azure.

  2. Sous Stockage des données dans le panneau de menu, sélectionnez Conteneurs.

  3. Sélectionnez les conteneurs pour lesquels vous voulez définir le niveau d’accès anonyme.

  4. Utilisez le bouton Modifier le niveau d’accès pour afficher les paramètres d’accès anonyme.

  5. Sélectionnez le niveau d’accès anonyme souhaité dans le menu déroulant Niveau d’accès anonyme, puis cliquez sur le bouton OK pour appliquer la modification aux conteneurs sélectionnés.

    Capture d’écran illustrant la façon de définir le niveau d’accès anonyme sur le Portail.

Quand l’accès anonyme est interdit pour le compte de stockage, le niveau d’accès anonyme d’un conteneur ne peut pas être défini. Si vous tentez de définir le niveau d’accès anonyme du conteneur, le paramètre est désactivé, car l’accès anonyme est interdit pour le compte.

Capture d’écran montrant que la définition du niveau d’accès anonyme d’un conteneur est bloquée lorsque l’accès anonyme est interdit pour le compte

Vérifier le paramètre d’accès anonyme pour un ensemble de conteneurs

Il est possible de vérifier quels conteneurs d’un ou plusieurs comptes de stockage sont configurés pour l’accès anonyme en listant les conteneurs et en vérifiant le paramètre d’accès anonyme. Cette approche est pratique lorsqu’un compte de stockage ne contient pas un grand nombre de conteneurs, ou lorsque vous vérifiez le paramètre sur un petit nombre de comptes de stockage. Toutefois, les performances peuvent être dégradées si vous tentez d’énumérer un grand nombre de conteneurs.

L’exemple suivant utilise PowerShell pour obtenir le paramètre d’accès anonyme de tous les conteneurs d’un compte de stockage. N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs :

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Prise en charge des fonctionnalités

La prise en charge de cette fonctionnalité peut être impactée par l’activation de Data Lake Storage Gen2, du protocole NFS (Network File System) 3.0 ou du protocole SFTP (SSH File Transfer Protocol). Si vous avez activé l’une de ces fonctionnalités, consultez Prise en charge des fonctionnalités Stockage Blob dans les comptes Stockage Azure pour évaluer la prise en charge de cette fonctionnalité.

Étapes suivantes