Configurer l’accès en lecture public anonyme pour les conteneurs et les objets blobConfigure anonymous public read access for containers and blobs

Le Stockage Azure prend en charge l’accès en lecture public anonyme facultatif pour les conteneurs et les objets blob.Azure Storage supports optional anonymous public read access for containers and blobs. Par défaut, l’accès anonyme à vos données n’est jamais autorisé.By default, anonymous access to your data is never permitted. À 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.Unless you explicitly enable anonymous access, all requests to a container and its blobs must be authorized. Quand vous configurez le paramètre de niveau d’accès public d’un conteneur pour autoriser l’accès anonyme, les clients peuvent lire les données dans ce conteneur sans autoriser la requête.When you configure a container's public access level setting to permit anonymous access, clients can read data in that container without authorizing the request.

Avertissement

Lorsqu’un conteneur est configuré pour un accès public, n’importe quel client peut lire les données de ce conteneur.When a container is configured for public access, any client can read data in that container. L’accès public présente un risque de sécurité potentiel. Ainsi, si votre scénario ne l’exige pas, Microsoft vous recommande de l’interdire pour le compte de stockage.Public access presents a potential security risk, so if your scenario does not require it, Microsoft recommends that you disallow it for the storage account. Pour en savoir plus, consultez la section Configure anonymous public read access for containers and blobs (Empêcher l’accès en lecture publique anonyme aux conteneurs et aux objets blob).For more information, see Prevent anonymous public read access to containers and blobs.

Cet article explique comment configurer l’accès en lecture public anonyme pour un conteneur et ses objets blob.This article describes how to configure anonymous public read access for a container and its blobs. Pour plus d’informations sur l’accès anonyme aux données d’objet blob à partir d’une application cliente, consultez Accéder à des conteneurs publics et à des objets blob anonymement avec .NET.For information about how to access blob data anonymously from a client application, see Access public containers and blobs anonymously with .NET.

À propos de l’accès en lecture public anonymeAbout anonymous public read access

L’accès public à vos données est toujours interdit par défaut.Public access to your data is always prohibited by default. Il existe deux paramètres distincts qui affectent l’accès public :There are two separate settings that affect public access:

  1. Activer l’accès public pour le compte de stockageAllow public access for the storage account. Par défaut, un compte de stockage permet à un utilisateur disposant des autorisations appropriées d’activer un accès public à un conteneur.By default, a storage account allows a user with the appropriate permissions to enable public access to a container. Les données blob ne sont pas disponibles pour un accès public, à moins que l’utilisateur n’effectue l’étape supplémentaire consistant à configurer explicitement le paramètre d’accès public du conteneur.Blob data is not available for public access unless the user takes the additional step to explicitly configure the container's public access setting.
  2. Configurer le paramètre d’accès public du conteneurConfigure the container's public access setting. Par défaut, le paramètre d’accès public d’un conteneur est désactivé, ce qui signifie que l’autorisation est nécessaire pour chaque demande adressée au conteneur ou à ses données.By default, a container's public access setting is disabled, meaning that authorization is required for every request to the container or its data. Un utilisateur disposant des autorisations appropriées peut modifier le paramètre d’accès public d’un conteneur afin d’activer l’accès anonyme uniquement si ce dernier est autorisé pour le compte de stockage.A user with the appropriate permissions can modify a container's public access setting to enable anonymous access only if anonymous access is allowed for the storage account.

Le tableau suivant résume l’incidence des deux paramètres sur l’accès public pour un conteneur.The following table summarizes how both settings together affect public access for a container.

Paramètre d’accès publicPublic access setting L’accès public est désactivé pour un conteneur (paramètre par défaut)Public access is disabled for a container (default setting) L’accès public pour un conteneur est défini sur ConteneurPublic access for a container is set to Container L’accès public pour un conteneur est défini sur BlobPublic access a container is set to Blob
L’accès public n’est pas autorisé pour le compte de stockagePublic access is disallowed for the storage account Aucun accès public à un conteneur dans le compte de stockage.No public access to any container in the storage account. Aucun accès public à un conteneur dans le compte de stockage.No public access to any container in the storage account. Le paramètre de compte de stockage remplace le paramètre de conteneur.The storage account setting overrides the container setting. Aucun accès public à un conteneur dans le compte de stockage.No public access to any container in the storage account. Le paramètre de compte de stockage remplace le paramètre de conteneur.The storage account setting overrides the container setting.
L’accès public est autorisé pour le compte de stockage (paramètre par défaut)Public access is allowed for the storage account (default setting) Aucun accès public à ce conteneur (configuration par défaut).No public access to this container (default configuration). L’accès public est autorisé à ce conteneur et à ses objets blob.Public access is permitted to this container and its blobs. L’accès public est autorisé aux objets blob dans ce conteneur, mais pas au conteneur lui-même.Public access is permitted to blobs in this container, but not to the container itself.

Autoriser ou interdire l’accès en lecture public pour un compte de stockageAllow or disallow public read access for a storage account

Par défaut, un compte de stockage est configuré pour permettre à un utilisateur disposant des autorisations appropriées d’activer un accès public à un conteneur.By default, a storage account is configured to allow a user with the appropriate permissions to enable public access to a container. Quand l’accès public est autorisé, un utilisateur disposant des autorisations appropriées peut modifier le paramètre d’accès public d’un conteneur afin d’activer l’accès public anonyme aux données de ce dernier.When public access is allowed, a user with the appropriate permissions can modify a container's public access setting to enable anonymous public access to the data in that container. Les données blob ne sont jamais disponibles pour un accès public, à moins que l’utilisateur n’effectue l’étape supplémentaire consistant à configurer explicitement le paramètre d’accès public du conteneur.Blob data is never available for public access unless the user takes the additional step to explicitly configure the container's public access setting.

Gardez à l’esprit que l’accès public à un conteneur est toujours désactivé par défaut et doit être explicitement configuré pour autoriser les demandes anonymes.Keep in mind that public access to a container is always turned off by default and must be explicitly configured to permit anonymous requests. Quel que soit le paramétrage du compte de stockage, vos données ne sont jamais disponibles pour un accès public, sauf si un utilisateur disposant des autorisations appropriées effectue l’étape supplémentaire consistant à activer l’accès public sur le conteneur.Regardless of the setting on the storage account, your data will never be available for public access unless a user with appropriate permissions takes this additional step to enable public access on the container.

Le fait d’interdire l’accès public pour le compte de stockage empêche l’accès anonyme à tous les conteneurs et objets blob de ce compte.Disallowing public access for the storage account prevents anonymous access to all containers and blobs in that account. Quand l’accès public est interdit pour le compte, il est impossible de configurer le paramètre d’accès public pour un conteneur afin d’autoriser l’accès anonyme.When public access is disallowed for the account, it is not possible to configure the public access setting for a container to permit anonymous access. Pour améliorer la sécurité, Microsoft vous recommande d’interdire l’accès public à vos comptes de stockage, sauf si votre scénario nécessite que les utilisateurs accèdent aux ressources d’objets blob de façon anonyme.For improved security, Microsoft recommends that you disallow public access for your storage accounts unless your scenario requires that users access blob resources anonymously.

Important

L’interdiction de l’accès public pour un compte de stockage remplace les paramètres d’accès public pour tous les conteneurs appartenant à ce compte de stockage.Disallowing public access for a storage account overrides the public access settings for all containers in that storage account. Quand l’accès public est interdit pour le compte de stockage, toute requête anonyme ultérieure adressée à ce compte échoue.When public access is disallowed for the storage account, any future anonymous requests to that account will fail. Avant de changer ce paramètre, assurez-vous de bien comprendre l’impact sur les applications clientes qui peuvent accéder aux données de votre compte de stockage de façon anonyme.Before changing this setting, be sure to understand the impact on client applications that may be accessing data in your storage account anonymously. Pour en savoir plus, consultez la section Configure anonymous public read access for containers and blobs (Empêcher l’accès en lecture publique anonyme aux conteneurs et aux objets blob).For more information, see Prevent anonymous public read access to containers and blobs.

Pour autoriser ou interdire l’accès public pour un compte de stockage, configurez la propriété AllowBlobPublicAccess du compte.To allow or disallow public access for a storage account, configure the account's AllowBlobPublicAccess property. Cette propriété est disponible pour tous les comptes de stockage créés avec le modèle de déploiement Azure Resource Manager.This property is available for all storage accounts that are created with the Azure Resource Manager deployment model. Pour plus d’informations, consultez Vue d’ensemble des comptes de stockage.For more information, see Storage account overview.

La propriété AllowBlobPublicAccess n’est pas définie par défaut pour un compte de stockage et ne retourne pas de valeur tant que vous ne la définissez pas explicitement.The AllowBlobPublicAccess property is not set for a storage account by default and does not return a value until you explicitly set it. Le compte de stockage autorise l’accès public quand la valeur de la propriété est Null ou True.The storage account permits public access when the property value is either null or true.

Pour autoriser ou interdire l’accès public à un compte de stockage dans le portail Azure, procédez comme suit :To allow or disallow public access for a storage account in the Azure portal, follow these steps:

  1. Accédez à votre compte de stockage dans le portail Azure.Navigate to your storage account in the Azure portal.

  2. Localisez le paramètre Configuration sous Paramètres.Locate the Configuration setting under Settings.

  3. Définissez Accès public aux objets blob sur Activé ou Désactivé.Set Blob public access to Enabled or Disabled.

    Capture d’écran montrant comment autoriser ou interdire l’accès public aux objets blob pour le compte

Notes

L’interdiction de l’accès public à un compte de stockage n’affecte aucun site web statique hébergé dans ce compte de stockage.Disallowing public access for a storage account does not affect any static websites hosted in that storage account. Le conteneur $web est toujours accessible publiquement.The $web container is always publicly accessible.

Après la mise à jour du paramètre d’accès public pour le compte de stockage, la propagation de la modification peut prendre jusqu’à 30 secondes.After you update the public access setting for the storage account, it may take up to 30 seconds before the change is fully propagated.

L’autorisation ou l’interdiction de l’accès public aux blobs nécessite la version 2019-04-01 ou ultérieure du fournisseur de ressources Stockage Azure.Allowing or disallowing blob public access requires version 2019-04-01 or later of the Azure Storage resource provider. Pour plus d’informations, consultez API REST du fournisseur de ressources Stockage Azure.For more information, see Azure Storage Resource Provider REST API.

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 public est actuellement autorisé ou non.The examples in this section showed how to read the AllowBlobPublicAccess property for the storage account to determine if public access is currently allowed or disallowed. Pour en savoir plus sur la façon de vérifier que le paramètre d’accès public d’un compte est configuré de manière à empêcher l’accès anonyme, consultez Corriger l’accès public anonyme.To learn more about how to verify that an account's public access setting is configured to prevent anonymous access, see Remediate anonymous public access.

Définir le niveau d’accès public pour un conteneurSet the public access level for a container

Pour octroyer aux utilisateurs anonymes un accès en lecture à un conteneur et ses objets blob, commencez par autoriser l’accès public au compte de stockage, puis définissez le niveau d’accès public du conteneur.To grant anonymous users read access to a container and its blobs, first allow public access for the storage account, then set the container's public access level. Si l’accès public est refusé pour le compte de stockage, vous ne pouvez pas créer un accès public pour un conteneur.If public access is denied for the storage account, you will not be able to configure public access for a container.

Quand l’accès public est autorisé pour un compte de stockage, vous pouvez configurer un conteneur avec les autorisations suivantes :When public access is allowed for a storage account, you can configure a container with the following permissions:

  • Aucun accès en lecture public : le conteneur et ses objets blob ne sont accessibles qu’avec une requête autorisée.No public read access: The container and its blobs can be accessed only with an authorized request. Cette option est la configuration par défaut de tous les nouveaux conteneurs.This option is the default for all new containers.
  • Accès en lecture public pour les objets blob uniquement : les objets blob à l’intérieur du conteneur peuvent être lus via une requête anonyme, mais les données du conteneur ne sont pas disponibles anonymement.Public read access for blobs only: Blobs within the container can be read by anonymous request, but container data is not available anonymously. Les clients anonymes ne peuvent pas énumérer les objets blob présents dans le conteneur.Anonymous clients cannot enumerate the blobs within the container.
  • 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.Public read access for container and its blobs: Container and blob data can be read by anonymous request, except for container permission settings and container metadata. 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.Clients can enumerate blobs within the container by anonymous request, but cannot enumerate containers within the storage account.

Vous ne pouvez pas modifier le niveau d’accès public pour un objet blob individuel.You cannot change the public access level for an individual blob. Le niveau d’accès public est défini uniquement au niveau du conteneur.Public access level is set only at the container level. Vous pouvez définir le niveau d’accès public du conteneur lors de la création du conteneur, ou vous pouvez mettre à jour le paramètre d’un conteneur existant.You can set the container's public access level when you create the container, or you can update the setting on an existing container.

Pour mettre à jour le niveau d’accès public pour un ou plusieurs conteneurs du portail Azure, procédez comme suit :To update the public access level for one or more existing containers in the Azure portal, follow these steps:

  1. Accédez à la vue d’ensemble de votre compte de stockage dans le portail Azure.Navigate to your storage account overview in the Azure portal.

  2. Sous l’élément service blob du panneau de menu, sélectionnez Conteneurs.Under Blob service on the menu blade, select Containers.

  3. Sélectionnez les conteneurs pour lesquels vous souhaitez définir le niveau d’accès public.Select the containers for which you want to set the public access level.

  4. Utilisez le bouton Modifier le niveau d’accès pour afficher les paramètres d’accès public.Use the Change access level button to display the public access settings.

  5. Sélectionnez le niveau d’accès public souhaité à partir du menu déroulant Niveau d’accès public et cliquez sur le bouton OK pour appliquer la modification aux conteneurs sélectionnés.Select the desired public access level from the Public access level dropdown and click the OK button to apply the change to the selected containers.

    Capture d’écran illustrant la façon de définir le niveau d’accès public dans le portail

Quand l’accès public est interdit pour le compte de stockage, le niveau d’accès public d’un conteneur ne peut pas être défini.When public access is disallowed for the storage account, a container's public access level cannot be set. Si vous essayez de définir le niveau d’accès public du conteneur, vous verrez que le paramètre est désactivé, car l’accès public est interdit pour le compte.If you attempt to set the container's public access level, you'll see that the setting is disabled because public access is disallowed for the account.

Capture d’écran montrant que la définition du niveau d’accès public du conteneur est bloquée quand l’accès public est interdit

Vérifier le paramètre d’accès public d’un ensemble de conteneursCheck the public access setting for a set of containers

Il est possible de vérifier quels conteneurs d’un ou de plusieurs comptes de stockage sont configurés pour l’accès public en répertoriant les conteneurs et en vérifiant le paramètre d’accès public.It is possible to check which containers in one or more storage accounts are configured for public access by listing the containers and checking the public access setting. 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.This approach is a practical option when a storage account does not contain a large number of containers, or when you are checking the setting across a small number of storage accounts. Toutefois, les performances peuvent être dégradées si vous tentez d’énumérer un grand nombre de conteneurs.However, performance may suffer if you attempt to enumerate a large number of containers.

L’exemple suivant utilise PowerShell pour obtenir le paramètre d’accès public de tous les conteneurs d’un compte de stockage.The following example uses PowerShell to get the public access setting for all containers in a storage account. N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs :Remember to replace the placeholder values in brackets with your own values:

$rgName = "<resource-group>"
$accountName = "<storage-account>"

$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context

Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Étapes suivantesNext steps