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

Le stockage Azure prend en charge l’accès en lecture anonyme optionnel aux conteneurs et aux 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 représente un risque potentiel de sécurité, donc si votre situation ne l’exige pas, éliminez l’accès anonyme pour le compte de stockage.

Cet article explique comment configurer l’accès en lecture anonyme pour un conteneur et ses objets blob. Pour des informations sur la manière de remédier à l’accès anonyme pour une sécurité optimale, voir Remedier l’accès anonyme en lecture aux données blob.

À propos de l’accès en lecture anonyme

L’accès anonyme à vos données est toujours interdit par défaut. Deux paramètres affectent l’accès anonyme :

  • 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.

  • 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 aux blobs de ce conteneur est autorisé, mais pas au conteneur lui-même.

Lorsque l’accès anonyme est autorisé pour un compte de stockage et configuré pour un conteneur spécifique, le service accepte une requête pour lire un blob dans ce conteneur qui est passé sansAuthorization en-tête, et renvoie les données du blob dans la réponse. Cependant, si la requête est transmise avec un Authorization en-tête, le service ignore l’accès anonyme au compte de stockage et autorise la requête en fonction des identifiants fournis.

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

Lorsque vous autorisez un accès anonyme à un compte de stockage, un utilisateur disposant des permissions appropriées peut modifier le paramètre d’accès anonyme d’un conteneur pour permettre l’accès anonyme aux données de ce conteneur. Les données blob ne sont jamais accessibles anonymement à moins que l’utilisateur ne prenne l’initiative supplémentaire de configurer explicitement le paramètre d’accès anonyme du conteneur.

L’accès anonyme à un conteneur est toujours désactivé par défaut et doit être explicitement configuré pour permettre des requêtes anonymes. Quel que soit le paramètre sur le compte de stockage, vos données ne sont jamais accessibles anonymement à moins qu’un utilisateur disposant des permissions appropriées ne prenne cette mesure supplémentaire pour permettre un 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. Lorsque vous refusez l’accès anonyme au compte, vous ne pouvez pas configurer le paramètre d’accès d’un conteneur pour permettre l’accès anonyme, et toute demande anonyme future à ce compte échoue. Avant de modifier ce paramètre, assurez-vous de bien comprendre l’impact sur les applications clientes qui pourraient accéder anonymement aux données de votre compte de stockage. Pour plus d’informations, consultez Empêcher l’accès anonyme en lecture aux conteneurs et aux objets blob.

Important

Après avoir interdit l’accès anonyme à un compte de stockage, les clients qui utilisent le défi du porteur anonyme constatent qu’stockage Azure restitue une erreur 403 (Interdite) au lieu d’une erreur 401 (Non autorisée). Rendez tous les conteneurs privés 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

Pour définir la propriété AllowBlobPublicAccess pour le compte de stockage, vous avez besoin des autorisations 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.

Limitez l’attribution de ces rôles uniquement aux utilisateurs administratifs qui doivent pouvoir créer un compte de stockage ou mettre à jour ses propriétés. Utilisez le principe du moindre privilège pour garantir que les utilisateurs disposent du moins de permissions nécessaires 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. En utilisant cette permission, un utilisateur peut utiliser les clés d’accès au compte pour accéder à toutes les données d’un compte de stockage.

Le Microsoft. Storage/storageAccounts/listkeys/action accorde lui-même l'accès aux données via les clés de compte, mais ne permet pas à un utilisateur de modifier la propriété AllowBlobPublicAccess pour 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.

Note

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 que vous créez 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. Trouve le paramètre de configuration dans Paramètres.

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

    Capture d’écran montrant comment autoriser ou refuser l’accès anonyme à un compte de stockage.

Note

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

Après avoir mis à jour le paramètre d’accès anonyme pour le compte de stockage, il peut falloir jusqu’à 30 secondes avant que le changement ne soit complètement propagé.

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. Cependant, toutes les règles de pare-feu que vous configurez pour le compte de stockage restent en vigueur et bloquent le trafic en accord avec les ACL configurées.

Les exemples suivants montrent 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. Avant de commencer, assurez-vous que l’accès anonyme est autorisé au niveau du compte (via la propriété AllowBlobPublicAccess ) et que vous avez l’autorisation d’écriture sur le conteneur. Si l’accès anonyme est refusé pour le compte de stockage, vous ne pouvez pas configurer l’accès anonyme pour un conteneur.

Attention

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

Lorsque vous autorisez un accès anonyme à un compte de stockage, vous pouvez configurer un conteneur avec les permissions suivantes :

  • Aucun accès public aux lectures (portail : Privé ; PowerShell : Désactivé) : Le conteneur et ses blobs ne peuvent être accessibles qu’avec une demande autorisée. Cette option est la configuration par défaut de tous les nouveaux conteneurs.
  • Accès public à la lecture uniquement pour les blobs (portal et PowerShell : Blob) : Les blobs contenus dans le conteneur peuvent être lus sur demande anonyme, mais les données du conteneur ne sont pas disponibles anonymement. Les clients anonymes ne peuvent pas énumérer les objets blob présents dans le conteneur.
  • Accès public en lecture pour le conteneur et ses blobs (portal et PowerShell : Conteneur) : Les données du conteneur et des blobs peuvent être lues par demande anonyme, sauf pour les paramètres de permission du conteneur et les métadonnées du conteneur. Les clients peuvent énumérer les blobs dans le conteneur sur demande anonyme, mais ne peuvent pas énumérer les conteneurs dans le compte de stockage.

Vous ne pouvez pas modifier le niveau d’accès anonyme pour un blob individuel. Réglez le niveau d’accès anonyme uniquement 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. Consultez l’aperçu de votre compte de stockage sur 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. Sélectionnez Modifier le niveau d’accès pour ouvrir les paramètres d’accès anonyme.

  5. Sélectionnez le niveau d’accès anonyme souhaité dans la liste déroulante du niveau d’accès Anonyme et sélectionnez OK pour appliquer le changement aux conteneurs sélectionnés.

    Capture d’écran montrant comment définir le niveau d’accès anonyme d’un conteneur dans le portail.

  6. Pour vérifier la modification, rouvrez Modifier le niveau d’accès et confirmez que Niveau d’accès anonyme affiche la valeur sélectionnée.

Lorsque l’accès anonyme est interdit pour le compte de stockage, vous ne pouvez pas définir le niveau d’accès anonyme d’un conteneur. 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 du paramètre du niveau d’accès anonyme d’un conteneur bloqué lorsque l’accès anonyme est refusé pour le compte.

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

Vous pouvez vérifier quels conteneurs dans un ou plusieurs comptes de stockage sont configurés pour un accès anonyme en listant les conteneurs et en cochant 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. Cependant, les performances peuvent en pâtir si vous essayez 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