コンテナーと BLOB への匿名読み取りアクセスを管理するManage anonymous read access to containers and blobs

Azure Blob Storage のコンテナーとその BLOB に対する匿名のパブリック読み取りアクセスを有効にすることができます。You can enable anonymous, public read access to a container and its blobs in Azure Blob storage. そうすることで、アカウント キーを共有せず、Shared Access Signature (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).

パブリック読み取りアクセスは、特定の BLOB を匿名読み取りアクセスで常に使用できるようにするシナリオに最適です。Public read access is best for scenarios where you want certain blobs to always be available for anonymous read access. より細かく制御するには、Shared Access Signature を作成できます。For more fine-grained control, you can create a shared access signature. Shared Access Signature を使用すると、特定の期間、異なるアクセス許可を使用して制限付きのアクセスを提供できます。Shared access signatures enable you to provide restricted access using different permissions, for a specific time period. Shared Access Signature の作成方法の詳細については、Azure Storage での Shared Access Signature (SAS) の使用に関するページを参照してください。For more information about creating shared access signatures, see Using shared access signatures (SAS) in Azure Storage.

コンテナーと BLOB への匿名ユーザーのアクセス許可を付与します。Grant anonymous users permissions to containers and blobs

既定では、コンテナーとその中のすべての BLOB には、適切なアクセス許可を与えられたユーザーのみがアクセスできます。By default, a container and any blobs within it may be accessed only by a user that has been given appropriate permissions. 匿名ユーザーにコンテナーとその BLOB に対する読み取りアクセスを許可するには、コンテナーのパブリック アクセス レベルを設定できます。To grant anonymous users read access to a container and its blobs, you can set the container public access level. コンテナーへのパブリック アクセスを許可すると、匿名ユーザーは、要求を認可しなくても、パブリックにアクセスできるコンテナー内の BLOB を読み取ることができます。When you grant public access to a container, then anonymous users can read blobs within a publicly accessible container without authorizing the request.

以下のアクセス許可を備えたコンテナーを構成できます。You can configure a container with the following permissions:

  • パブリック読み取りアクセスなし: コンテナーとその BLOB には、ストレージ アカウント所有者だけがアクセスできます。No public read access: The container and its blobs can be accessed only by the storage account owner. これは、すべての新しいコンテナーの既定値です。This is the default for all new containers.
  • BLOB に限定したパブリック読み取りアクセス: コンテナー内の BLOB は匿名要求で読み取り可能ですが、コンテナー データは使用できません。Public read access for blobs only: Blobs within the container can be read by anonymous request, but container data is not available. 匿名クライアントはコンテナー内の BLOB を列挙することはできません。Anonymous clients cannot enumerate the blobs within the container.
  • コンテナーとその BLOB に対するパブリック読み取りアクセス: すべてのコンテナーと BLOB のデータを匿名要求で読み取ることができます。Public read access for container and its blobs: All container and blob data can be read by anonymous request. クライアントは匿名要求でコンテナー内の BLOB を列挙できますが、ストレージ アカウント内のコンテナーを列挙することはできません。Clients can enumerate blobs within the container by anonymous request, but cannot enumerate containers within the storage account.

コンテナーのアクセス許可は、次の方法で設定することができます。You can use the following to set container permissions:

Azure portal でコンテナーのパブリック アクセス レベルを設定するSet container public access level in the Azure portal

Azure portal から、1 つまたは複数のコンテナーのパブリック アクセス レベルを更新することができます。From the Azure portal, you can update the public access level for one or more containers:

  1. Azure Portal のストレージ アカウントに移動します。Navigate to your storage account in the Azure portal.
  2. メニュー ブレードの [Blob service] で、 [BLOB] を選択します。Under Blob service on the menu blade, select Blobs.
  3. パブリック アクセス レベルを設定するコンテナーを選択します。Select the containers for which you want to set the public access level.
  4. [アクセス レベルの変更] ボタンを使用して、パブリック アクセスの設定を表示します。Use the Change access level button to display the public access settings.
  5. [パブリック アクセス レベル] ドロップダウンから目的のパブリック アクセス レベルを選択し、[OK] ボタンをクリックして選択したコンテナーに変更を適用します。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.

次のスクリーンショットでは、選択したコンテナーのパブリック アクセス レベルを変更する方法を示します。The following screenshot shows how to change the public access level for the selected containers.

ポータルでパブリック アクセス レベルを設定する方法を示すスクリーンショット

注意

個々の BLOB のパブリック アクセス レベルを変更することはできません。You cannot change the public access level for an individual blob. パブリック アクセス レベルは、コンテナー レベルでのみ設定されます。Public access level is set only at the container level.

.NET でコンテナーのパブリック アクセス レベルを設定するSet container public access level with .NET

C# と .NET 用ストレージ クライアント ライブラリを使用してコンテナーのアクセス許可を設定するには、まず、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. 次に、GetPermissions メソッドによって返される BlobContainerPermissions オブジェクトに対して PublicAccess プロパティを設定します。Then set the PublicAccess property for the BlobContainerPermissions object that is returned by the GetPermissions method. 最後に、更新されたアクセス許可を使用して SetPermissions メソッドを呼び出します。Finally, call the SetPermissions method with the updated permissions.

次の例では、コンテナーのアクセス許可を完全なパブリック読み取りアクセスに設定します。The following example sets the container's permissions to full public read access. アクセス許可を BLOB 限定のパブリック読み取りアクセスに設定するには、PublicAccess プロパティを BlobContainerPublicAccessType.Blob に設定します。To set permissions to public read access for blobs only, set the PublicAccess property to BlobContainerPublicAccessType.Blob. 匿名ユーザーのすべてのアクセス許可を削除するには、このプロパティを 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);
}

コンテナーと BLOB に匿名でアクセスするAccess containers and blobs anonymously

コンテナーと BLOB に匿名でアクセスするクライアントは、資格情報を必要としないコンストラクターを使用できます。A client that accesses containers and blobs anonymously can use constructors that do not require credentials. 次の例では、コンテナーと BLOB を匿名で参照するいくつかの方法を示します。The following examples show a few different ways to reference containers and blobs anonymously.

匿名クライアント オブジェクトを作成するCreate an anonymous client object

アカウントの BLOB ストレージ エンドポイントを指定することで、匿名アクセスの対象となる新しいサービス クライアント オブジェクトを作成できます。You can create a new service client object for anonymous access by providing the Blob storage endpoint for the account. ただし、匿名アクセスを使用できる、そのアカウントのコンテナーの名前も知っておく必要があります。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);
}

コンテナーを匿名で参照するReference a container anonymously

匿名で使用できるコンテナーの URL がある場合は、この URL を使用してコンテナーを直接参照することができます。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);
    }
}

BLOB を匿名で参照するReference a blob anonymously

匿名アクセスを使用できる BLOB の URL がある場合は、この URL を使用して 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);
}

匿名ユーザーが利用できる機能Features available to anonymous users

コンテナーがパブリック アクセス用に構成されている場合に、匿名で呼び出すことのできる操作を次の表に示します。The following table shows which operations may be called anonymously when a container is configured for public access.

REST 操作REST Operation コンテナーのパブリック読み取りアクセスPublic read access to container BLOB 専用のパブリック読み取りアクセスPublic read access to blobs only
List ContainersList Containers 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
コンテナーの作成Create Container 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
コンテナーのプロパティの取得Get Container Properties 匿名要求可能Anonymous requests allowed 承認された要求のみAuthorized requests only
Get Container MetadataGet Container Metadata 匿名要求可能Anonymous requests allowed 承認された要求のみAuthorized requests only
Set Container MetadataSet Container Metadata 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
コンテナー ACL の取得Get Container ACL 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Set Container ACLSet Container ACL 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Delete ContainerDelete Container 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
BLOBs の一覧List Blobs 匿名要求可能Anonymous requests allowed 承認された要求のみAuthorized requests only
Put BlobPut Blob 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Get BlobGet Blob 匿名要求可能Anonymous requests allowed 匿名要求可能Anonymous requests allowed
BLOB のプロパティの取得Get Blob Properties 匿名要求可能Anonymous requests allowed 匿名要求可能Anonymous requests allowed
Set Blob PropertiesSet Blob Properties 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
BLOB のメタデータの取得Get Blob Metadata 匿名要求可能Anonymous requests allowed 匿名要求可能Anonymous requests allowed
Set Blob MetadataSet Blob Metadata 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Put BlockPut Block 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Get Block List (REST API) (コミット後のブロックのみ)Get Block List (committed blocks only) 匿名要求可能Anonymous requests allowed 匿名要求可能Anonymous requests allowed
Get Block List (REST API) (コミット前のブロックのみまたは全ブロック)Get Block List (uncommitted blocks only or all blocks) 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Put Block ListPut Block List 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Delete BlobDelete Blob 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
BLOB のコピーCopy Blob 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Snapshot BlobSnapshot Blob 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Lease BlobLease Blob 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
Put PagePut Page 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only
ページ範囲の取得Get Page Ranges 匿名要求可能Anonymous requests allowed 匿名要求可能Anonymous requests allowed
Append BlobAppend Blob 承認された要求のみAuthorized requests only 承認された要求のみAuthorized requests only

次の手順Next steps