Správa anonymního přístupu pro čtení ke kontejnerům a objektům blobManage anonymous read access to containers and blobs

V úložišti objektů blob v Azure můžete u kontejneru povolit anonymní veřejný přístup pro čtení.You can enable anonymous, public read access to a container and its blobs in Azure Blob storage. Pokud to uděláte, můžete u těchto prostředků udělit přístup jen pro čtení bez sdílení klíče k účtu a bez vyžadování sdíleného přístupového podpisu (SAS).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).

Veřejný přístup pro čtení je nejvhodnější pro scénáře, ve kterých mají být některé objekty blob vždy dostupné pro anonymní přístup pro čtení.Public read access is best for scenarios where you want certain blobs to always be available for anonymous read access. Pro detailní kontrolu můžete vytvořit sdílený přístupový podpis.For more fine-grained control, you can create a shared access signature. Sdílené přístupové podpisy umožňují poskytovat omezený přístup pomocí různých oprávnění pro konkrétní časové období.Shared access signatures enable you to provide restricted access using different permissions, for a specific time period. Další informace o vytváření sdílených přístupových podpisů najdete v tématu použití sdílených přístupových podpisů (SAS) v Azure Storage.For more information about creating shared access signatures, see Using shared access signatures (SAS) in Azure Storage.

Udělení anonymních oprávnění uživatelům k kontejnerům a objektům blobGrant anonymous users permissions to containers and blobs

Ve výchozím nastavení může ke kontejneru a ke všem v něm obsaženým objektům blob získat přístup jen uživatel, kterému byla udělena příslušná oprávnění.By default, a container and any blobs within it may be accessed only by a user that has been given appropriate permissions. Pokud chcete u kontejneru a u jeho objektů blob udělit přístup pro čtení anonymním uživatelům, můžete u něho nastavit veřejnou úroveň přístupu.To grant anonymous users read access to a container and its blobs, you can set the container public access level. Když udělíte veřejný přístup ke kontejneru, můžou anonymní uživatelé číst objekty BLOB v rámci veřejně přístupného kontejneru, aniž by museli žádost autorizovat.When you grant public access to a container, then anonymous users can read blobs within a publicly accessible container without authorizing the request.

Můžete nakonfigurovat kontejner s následujícími oprávněními:You can configure a container with the following permissions:

  • Žádný veřejný přístup pro čtení: K kontejneru a jeho objektům blob může mít přistup jenom vlastník účtu úložiště.No public read access: The container and its blobs can be accessed only by the storage account owner. Toto je výchozí nastavení pro všechny nové kontejnery.This is the default for all new containers.
  • Veřejný přístup pro čtení jenom pro objekty BLOB: Objekty BLOB v kontejneru lze číst anonymním požadavkem, ale data kontejneru nejsou k dispozici.Public read access for blobs only: Blobs within the container can be read by anonymous request, but container data is not available. Anonymní klienti nemohou vytvořit výčet objektů BLOB v rámci kontejneru.Anonymous clients cannot enumerate the blobs within the container.
  • Veřejný přístup pro čtení kontejneru a jeho objektů BLOB: Všechna data kontejneru a objektů BLOB lze číst anonymním požadavkem.Public read access for container and its blobs: All container and blob data can be read by anonymous request. Klienti mohou vytvořit výčet objektů BLOB v kontejneru anonymním požadavkem, ale nemohou vytvořit výčet kontejnerů v rámci účtu úložiště.Clients can enumerate blobs within the container by anonymous request, but cannot enumerate containers within the storage account.

Nastavit úroveň veřejného přístupu kontejneru v Azure PortalSet container public access level in the Azure portal

Z Azure Portalmůžete úroveň veřejného přístupu aktualizovat na jeden nebo více kontejnerů:From the Azure portal, you can update the public access level for one or more containers:

  1. V Azure Portal přejděte na přehled svého účtu úložiště.Navigate to your storage account overview in the Azure portal.
  2. V části BLOB Service v okně nabídky vyberte objekty blob.Under Blob service on the menu blade, select Blobs.
  3. Vyberte kontejnery, pro které chcete nastavit úroveň veřejného přístupu.Select the containers for which you want to set the public access level.
  4. Pomocí tlačítka změnit úroveň přístupu můžete zobrazit nastavení veřejného přístupu.Use the Change access level button to display the public access settings.
  5. Vyberte požadovanou úroveň veřejného přístupu v rozevíracím seznamu úroveň veřejného přístupu a kliknutím na tlačítko OK tuto změnu použijte u vybraných kontejnerů.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.

Následující snímek obrazovky ukazuje, jak změnit úroveň veřejného přístupu pro vybrané kontejnery.The following screenshot shows how to change the public access level for the selected containers.

Snímek obrazovky ukazující, jak nastavit úroveň veřejného přístupu na portálu

Poznámka

Úroveň veřejného přístupu pro jednotlivý objekt BLOB se nedá změnit.You cannot change the public access level for an individual blob. Úroveň veřejného přístupu je nastavena pouze na úrovni kontejneru.Public access level is set only at the container level.

Nastavení úrovně veřejného přístupu ke kontejneru pomocí .NETSet container public access level with .NET

Chcete-li nastavit oprávnění pro kontejner pomocí klientské knihovny Azure Storage pro .NET, nejprve Načtěte existující oprávnění kontejneru voláním jedné z následujících metod:To set permissions for a container using the Azure Storage client library for .NET, first retrieve the container's existing permissions by calling one of the following methods:

Dále nastavte vlastnost PublicAccess objektu BlobContainerPermissions , který je vrácen metodou GetPermissions .Next, set the PublicAccess property on the BlobContainerPermissions object that is returned by the GetPermissions method.

Nakonec zavolejte jednu z následujících metod pro aktualizaci oprávnění kontejneru:Finally, call one of the following methods to update the container's permissions:

Následující příklad nastaví oprávnění kontejneru na úplný veřejný přístup pro čtení.The following example sets the container's permissions to full public read access. Pokud chcete nastavit oprávnění pro veřejný přístup pro čtení jenom pro objekty blob, nastavte vlastnost PublicAccess na BlobContainerPublicAccessType. blob.To set permissions to public read access for blobs only, set the PublicAccess property to BlobContainerPublicAccessType.Blob. Chcete-li odebrat všechna oprávnění pro anonymní uživatele, nastavte vlastnost na hodnotu BlobContainerPublicAccessType. off.To remove all permissions for anonymous users, set the property to BlobContainerPublicAccessType.Off.

private static async Task SetPublicContainerPermissions(CloudBlobContainer container)
{
    BlobContainerPermissions permissions = await container.GetPermissionsAsync();
    permissions.PublicAccess = BlobContainerPublicAccessType.Container;
    await container.SetPermissionsAsync(permissions);

    Console.WriteLine("Container {0} - permissions set to {1}", container.Name, permissions.PublicAccess);
}

Anonymní přístup k kontejnerům a objektům blobAccess containers and blobs anonymously

Klient, který přistupuje k kontejnerům a objektům blob anonymně, může používat konstruktory, které nevyžadují přihlašovací údaje.A client that accesses containers and blobs anonymously can use constructors that do not require credentials. V následujících příkladech je znázorněno několik různých způsobů, jak odkazovat na kontejnery a objekty blob anonymně.The following examples show a few different ways to reference containers and blobs anonymously.

Vytvoření objektu anonymního klientaCreate an anonymous client object

Můžete vytvořit nový objekt klienta služby pro anonymní přístup tím, že zadáte koncový bod úložiště objektů BLOB pro tento účet.You can create a new service client object for anonymous access by providing the Blob storage endpoint for the account. Musíte ale taky znát název kontejneru v tomto účtu, který je dostupný pro anonymní přístup.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 for your account.
    CloudBlobClient blobClient = new CloudBlobClient(
        new Uri(@"https://storagesamples.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);
}

Anonymní odkaz na kontejnerReference a container anonymously

Pokud máte adresu URL kontejneru, který je anonymně dostupný, můžete jej použít k přímému odkazování kontejneru.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://storagesamples.blob.core.windows.net/sample-container"));

    // List blobs in the container.
    // Note this is only possible when the container supports full public read access.
    foreach (IListBlobItem blobItem in container.ListBlobs())
    {
        Console.WriteLine(blobItem.Uri);
    }
}

Anonymní odkazování na objekt BLOBReference a blob anonymously

Pokud máte adresu URL objektu blob, který je k dispozici pro anonymní přístup, můžete odkazovat na objekt BLOB přímo pomocí této adresy URL: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://storagesamples.blob.core.windows.net/sample-container/logfile.txt"));
    blob.DownloadToFile(@"C:\Temp\logfile.txt", FileMode.Create);
}

Další krokyNext steps