Gestion de l’accès en lecture anonyme aux conteneurs et aux objets blobManage anonymous read access to containers and blobs

Vous pouvez activer l’accès en lecture anonyme public pour un conteneur et ses objets blob dans Stockage Blob Azure.You can enable anonymous, public read access to a container and its blobs in Azure Blob storage. En procédant ainsi, vous pouvez accorder un accès en lecture seule à ces ressources sans partager votre clé de compte et sans exiger de signature d’accès partagé (SAP).By doing so, you can grant read-only access to these resources without sharing your account key, and without requiring a shared access signature (SAS).

L’accès en lecture public est idéal dans les situations où vous voulez conférer à certains objets blob un accès en lecture anonyme permanent.Public read access is best for scenarios where you want certain blobs to always be available for anonymous read access. Pour un contrôle plus précis, vous pouvez créer une signature d’accès partagé.For more fine-grained control, you can create a shared access signature. Les signatures d’accès partagé vous permettent d’accorder un accès restreint avec différentes autorisations sur une période donnée.Shared access signatures enable you to provide restricted access using different permissions, for a specific time period. Pour plus d’informations sur la création de signatures d’accès partagé, consultez Utilisation des signatures d’accès partagé (SAP) dans le Stockage Azure.For more information about creating shared access signatures, see Using shared access signatures (SAS) in Azure Storage.

Accorder à des utilisateurs anonymes des autorisations d’accès aux conteneurs et objets blobGrant anonymous users permissions to containers and blobs

Par défaut, un conteneur et tous les objets BLOB qu’il contient sont accessibles uniquement par un utilisateur qui a été accordé des autorisations appropriées.By default, a container and any blobs within it may be accessed only by a user that has been given appropriate permissions. Pour accorder un accès en lecture aux utilisateurs anonymes à un conteneur et ses objets BLOB, vous pouvez définir le niveau d’accès public du conteneur.To grant anonymous users read access to a container and its blobs, you can set the container public access level. Lorsque vous autorisez l’accès public à un conteneur, les utilisateurs anonymes peuvent lire les objets BLOB dans un conteneur accessible publiquement sans autoriser la demande.When you grant public access to a container, then anonymous users can read blobs within a publicly accessible container without authorizing the request.

Vous pouvez configurer un conteneur avec les autorisations suivantes :You can configure a container with the following permissions:

  • Aucun accès en lecture public : Le conteneur et ses objets BLOB sont accessibles uniquement par le propriétaire de compte de stockage.No public read access: The container and its blobs can be accessed only by the storage account owner. Il s’agit de la configuration par défaut de tous les nouveaux conteneurs.This is the default for all new containers.
  • Accès en lecture public pour les objets BLOB uniquement : Objets BLOB dans le conteneur peuvent être lu par une demande anonyme, mais les données de conteneur ne seront pas disponibles.Public read access for blobs only: Blobs within the container can be read by anonymous request, but container data is not available. 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 accès en lecture pour conteneur et ses objets BLOB : Tous les conteneurs et les données blob peuvent être lues par une demande anonyme.Public read access for container and its blobs: All container and blob data can be read by anonymous request. 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 pouvez définir les autorisations de conteneur par les moyens suivants :You can use the following to set container permissions:

Définir le niveau d’accès public du conteneur dans le portail AzureSet container public access level in the Azure portal

À partir de la Azure portal, vous pouvez mettre à jour le niveau d’accès public pour un ou plusieurs conteneurs :From the Azure portal, you can update the public access level for one or more containers:

  1. Accédez à votre compte de stockage dans le portail Azure.Navigate to your storage account in the Azure portal.
  2. Sous service Blob dans le panneau de menu, sélectionnez Blobs.Under Blob service on the menu blade, select Blobs.
  3. Sélectionnez les conteneurs pour lequel 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 modifier le niveau accès bouton 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 de la niveau d’accès Public liste déroulante et cliquez sur le bouton OK pour appliquer la modification pour les 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.

La capture d’écran suivante montre comment modifier le niveau d’accès public pour les conteneurs sélectionnés.The following screenshot shows how to change the public access level for the selected containers.

Capture d’écran montrant comment définir le niveau d’accès public dans le portail

Notes

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. Niveau d’accès public est défini uniquement au niveau du conteneur.Public access level is set only at the container level.

Définir le niveau d’accès public de conteneur avec .NETSet container public access level with .NET

Pour définir les autorisations d’un conteneur en utilisant C# et la bibliothèque cliente de stockage pour .NET, vous devez d’abord récupérer les autorisations existantes du conteneur en appelant la méthode GetPermissions.To set permissions for a container using C# and the Storage Client Library for .NET, first retrieve the container's existing permissions by calling the GetPermissions method. Définissez ensuite la propriété PublicAccess de l’objet BlobContainerPermissions qui est retourné par la méthode GetPermissions.Then set the PublicAccess property for the BlobContainerPermissions object that is returned by the GetPermissions method. Pour finir, appelez la méthode SetPermissions avec les autorisations mises à jour.Finally, call the SetPermissions method with the updated permissions.

Dans l’exemple suivant, nous définissons les autorisations du conteneur pour permettre un accès en lecture public complet.The following example sets the container's permissions to full public read access. Pour autoriser un accès en lecture public pour les objets Blob uniquement, définissez la propriété PublicAccess sur BlobContainerPublicAccessType.Blob.To set permissions to public read access for blobs only, set the PublicAccess property to BlobContainerPublicAccessType.Blob. Pour supprimer toutes les autorisations pour les utilisateurs anonymes, définissez la propriété sur BlobContainerPublicAccessType.Off.To remove all permissions for anonymous users, set the property to BlobContainerPublicAccessType.Off.

public static void SetPublicContainerPermissions(CloudBlobContainer container)
{
    BlobContainerPermissions permissions = container.GetPermissions();
    permissions.PublicAccess = BlobContainerPublicAccessType.Container;
    container.SetPermissions(permissions);
}

Accéder anonymement aux conteneurs et aux objets BlobAccess containers and blobs anonymously

Un client ayant un accès anonyme aux conteneurs et aux objets Blob peut utiliser des constructeurs qui ne nécessitent pas d’informations d’identification.A client that accesses containers and blobs anonymously can use constructors that do not require credentials. Les exemples suivants montrent différentes manières pour référencer des conteneurs et objets BLOB de façon anonyme.The following examples show a few different ways to reference containers and blobs anonymously.

Créer un objet de client anonymeCreate an anonymous client object

Vous pouvez créer un nouvel objet de client de service pour l’accès anonyme en fournissant le point de terminaison de stockage Blob pour le compte.You can create a new service client object for anonymous access by providing the Blob storage endpoint for the account. Toutefois, vous devez également connaître le nom d’un conteneur attaché à ce compte qui est disponible pour un accès anonyme.However, you must also know the name of a container in that account that's available for anonymous access.

public static void CreateAnonymousBlobClient()
{
    // Create the client object using the Blob storage endpoint.
    CloudBlobClient blobClient = new CloudBlobClient(new Uri(@"https://storagesample.blob.core.windows.net"));

    // Get a reference to a container that's available for anonymous access.
    CloudBlobContainer container = blobClient.GetContainerReference("sample-container");

    // Read the container's properties. Note this is only possible when the container supports full public read access.
    container.FetchAttributes();
    Console.WriteLine(container.Properties.LastModified);
    Console.WriteLine(container.Properties.ETag);
}

Référencer un conteneur de manière anonymeReference a container anonymously

Si vous disposez de l’URL permettant d’accéder à un conteneur accessible de manière anonyme, vous pouvez l’utiliser pour référencer directement le conteneur.If you have the URL to a container that is anonymously available, you can use it to reference the container directly.

public static void ListBlobsAnonymously()
{
    // Get a reference to a container that's available for anonymous access.
    CloudBlobContainer container = new CloudBlobContainer(new Uri(@"https://storagesample.blob.core.windows.net/sample-container"));

    // List blobs in the container.
    foreach (IListBlobItem blobItem in container.ListBlobs())
    {
        Console.WriteLine(blobItem.Uri);
    }
}

Référencer un objet Blob de façon anonymeReference a blob anonymously

Si vous disposez de l’URL permettant d’accéder à un objet Blob accessible de manière anonyme, vous pouvez l’utiliser pour référencer directement l’objet Blob :If you have the URL to a blob that is available for anonymous access, you can reference the blob directly using that URL:

public static void DownloadBlobAnonymously()
{
    CloudBlockBlob blob = new CloudBlockBlob(new Uri(@"https://storagesample.blob.core.windows.net/sample-container/logfile.txt"));
    blob.DownloadToFile(@"C:\Temp\logfile.txt", System.IO.FileMode.Create);
}

Fonctionnalités accessibles aux utilisateurs anonymesFeatures available to anonymous users

Le tableau suivant présente les opérations pouvant être appelées anonymement lorsqu’un conteneur est configuré pour l’accès public.The following table shows which operations may be called anonymously when a container is configured for public access.

Opération RESTREST Operation Accès en lecture public au conteneurPublic read access to container Accès en lecture public aux objets blob uniquementPublic read access to blobs only
List ContainersList Containers Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Create ContainerCreate Container Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Get Container PropertiesGet Container Properties Demandes anonymes autorisésAnonymous requests allowed Requêtes autoriséesAuthorized requests only
Get Container MetadataGet Container Metadata Demandes anonymes autorisésAnonymous requests allowed Requêtes autoriséesAuthorized requests only
Set Container MetadataSet Container Metadata Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Get Container ACLGet Container ACL Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Set Container ACLSet Container ACL Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Delete ContainerDelete Container Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
List BlobsList Blobs Demandes anonymes autorisésAnonymous requests allowed Requêtes autoriséesAuthorized requests only
Put BlobPut Blob Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Get BlobGet Blob Demandes anonymes autorisésAnonymous requests allowed Demandes anonymes autorisésAnonymous requests allowed
Get Blob PropertiesGet Blob Properties Demandes anonymes autorisésAnonymous requests allowed Demandes anonymes autorisésAnonymous requests allowed
Set Blob PropertiesSet Blob Properties Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Get Blob MetadataGet Blob Metadata Demandes anonymes autorisésAnonymous requests allowed Demandes anonymes autorisésAnonymous requests allowed
Set Blob MetadataSet Blob Metadata Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Put BlockPut Block Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Get Block List (blocs validés uniquement)Get Block List (committed blocks only) Demandes anonymes autorisésAnonymous requests allowed Demandes anonymes autorisésAnonymous requests allowed
Get Block List (blocs non validés uniquement ou tous les blocs)Get Block List (uncommitted blocks only or all blocks) Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Put Block ListPut Block List Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Delete BlobDelete Blob Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Copie d'un objet blobCopy Blob Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Snapshot BlobSnapshot Blob Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Lease BlobLease Blob Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Put PagePut Page Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only
Get Page RangesGet Page Ranges Demandes anonymes autorisésAnonymous requests allowed Demandes anonymes autorisésAnonymous requests allowed
Append BlobAppend Blob Requêtes autoriséesAuthorized requests only Requêtes autoriséesAuthorized requests only

Étapes suivantesNext steps