コンテナーと BLOB の匿名パブリック読み取りアクセスを構成するConfigure anonymous public read access for containers and blobs

Azure Storage では、コンテナーと BLOB へのオプションの匿名パブリック読み取りアクセスがサポートされています。Azure Storage supports optional anonymous public read access for containers and blobs. 既定では、データへの匿名アクセスは許可されません。By default, anonymous access to your data is never permitted. 匿名アクセスを明示的に有効にしない限り、コンテナーとその BLOB へのすべての要求には承認が必要です。Unless you explicitly enable anonymous access, all requests to a container and its blobs must be authorized. 匿名アクセスを許可するようにコンテナーのパブリック アクセス レベル設定を構成すると、クライアントは要求の承認なしでそのコンテナー内のデータを読み取ることができます。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.

警告

コンテナーがパブリック アクセス用に構成されている場合、任意のクライアントがそのコンテナー内のデータを読み取ることができます。When a container is configured for public access, any client can read data in that container. パブリック アクセスは潜在的なセキュリティ リスクをもたらすため、Microsoft では、シナリオで必要な場合を除き、ストレージ アカウントに対してこれを禁止するようお勧めします。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. 詳細については、「コンテナーと BLOB への匿名パブリック読み取りアクセスを防ぐ」を参照してください。For more information, see Prevent anonymous public read access to containers and blobs.

この記事では、コンテナーとその BLOB の匿名パブリック読み取りアクセスを構成する方法について説明します。This article describes how to configure anonymous public read access for a container and its blobs. クライアント アプリケーションから匿名で BLOB データにアクセスする方法については、「.NET を使用してパブリックのコンテナーと BLOB に匿名でアクセスする」を参照してください。For information about how to access blob data anonymously from a client application, see Access public containers and blobs anonymously with .NET.

匿名のパブリック読み取りアクセスについてAbout anonymous public read access

データへのパブリック アクセスは、既定では常に禁止されています。Public access to your data is always prohibited by default. パブリック アクセスに影響を与える 2 つの別個の設定があります。There are two separate settings that affect public access:

  1. ストレージ アカウントのパブリック アクセスを許可する。Allow public access for the storage account. 既定では、ストレージ アカウントにおいて、適切なアクセス許可を持つユーザーは、コンテナーへのパブリック アクセスを有効にすることが許可されます。By default, a storage account allows a user with the appropriate permissions to enable public access to a container. そのユーザーが追加の手順によってコンテナーのパブリック アクセスの設定を明示的に構成しない限り、BLOB データへのパブリック アクセスは利用できません。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. コンテナーのパブリック アクセス設定を構成する。Configure the container's public access setting. 既定では、コンテナーのパブリック アクセスの設定は無効になっています。つまり、コンテナーまたはそのデータへのすべての要求には承認が必要となります。By default, a container's public access setting is disabled, meaning that authorization is required for every request to the container or its data. ストレージ アカウントの匿名アクセスが許可されている場合のみ、適切なアクセス許可を持つユーザーは、コンテナーのパブリック アクセスの設定を変更して、匿名アクセスを有効にできます。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.

次の表に、これらの両方の設定がコンテナーのパブリック アクセスにどのように影響を与えるかをまとめます。The following table summarizes how both settings together affect public access for a container.

パブリック アクセスの設定Public access setting コンテナーのパブリック アクセスが無効 (既定の設定)Public access is disabled for a container (default setting) コンテナーのパブリック アクセスがコンテナーに対して設定されているPublic access for a container is set to Container コンテナーのパブリック アクセスが BLOB に対して設定されているPublic access a container is set to Blob
ストレージ アカウントのパブリック アクセスが禁止されているPublic access is disallowed for the storage account ストレージ アカウントのどのコンテナーにもパブリック アクセスはない。No public access to any container in the storage account. ストレージ アカウントのどのコンテナーにもパブリック アクセスはない。No public access to any container in the storage account. ストレージ アカウントの設定は、コンテナーの設定をオーバーライドする。The storage account setting overrides the container setting. ストレージ アカウントのどのコンテナーにもパブリック アクセスはない。No public access to any container in the storage account. ストレージ アカウントの設定は、コンテナーの設定をオーバーライドする。The storage account setting overrides the container setting.
ストレージ アカウントのパブリック アクセスが許可されている (既定の設定)Public access is allowed for the storage account (default setting) このコンテナーへのパブリック アクセスはない (既定の構成)。No public access to this container (default configuration). このコンテナーとその BLOB へのパブリック アクセスが許可される。Public access is permitted to this container and its blobs. このコンテナーの BLOB へのパブリック アクセスは許可されるが、コンテナーそのものに対しては許可されない。Public access is permitted to blobs in this container, but not to the container itself.

ストレージ アカウントのパブリック読み取りアクセスを許可または禁止するAllow or disallow public read access for a storage account

既定では、ストレージ アカウントの構成において、適切なアクセス許可を持つユーザーは、コンテナーへのパブリック アクセスを有効にすることが許可されます。By default, a storage account is configured to allow a user with the appropriate permissions to enable public access to a container. パブリック アクセスが許可されている場合、適切なアクセス許可を持つユーザーは、コンテナーのパブリック アクセスの設定を変更して、そのコンテナーのデータへの匿名のパブリック アクセスを有効にできます。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. そのユーザーが追加の手順によってコンテナーのパブリック アクセスの設定を明示的に構成しない限り、BLOB データへのパブリック アクセスは利用できません。Blob data is never available for public access unless the user takes the additional step to explicitly configure the container's public access setting.

コンテナーへのパブリック アクセスは既定で常に無効になっており、匿名の要求を許可するには明示的に構成する必要があることにご注意ください。Keep in mind that public access to a container is always turned off by default and must be explicitly configured to permit anonymous requests. ストレージ アカウントの設定に関わりなく、適切なアクセス許可を持つユーザーがこの追加手順によってコンテナー上でパブリック アクセスを有効にしない限り、データへのパブリック アクセスが可能になることはありません。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.

ストレージ アカウントのパブリック アクセスを禁止すると、そのアカウントのすべてのコンテナーと BLOB への匿名アクセスが妨げられます。Disallowing public access for the storage account prevents anonymous access to all containers and blobs in that account. アカウントのパブリック アクセスが禁止されると、コンテナーのパブリック アクセスの設定を構成して、匿名アクセスを許可することはできなくなります。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. Microsoft では、ユーザーが匿名で BLOB リソースにアクセスすることが必要なシナリオを除き、セキュリティを向上させるため、ストレージ アカウントのパブリック アクセスは禁止することをお勧めします。For improved security, Microsoft recommends that you disallow public access for your storage accounts unless your scenario requires that users access blob resources anonymously.

重要

ストレージ アカウントでパブリック アクセスを禁止すると、そのストレージ アカウント内のすべてのコンテナーのパブリック アクセス設定がオーバーライドされます。Disallowing public access for a storage account overrides the public access settings for all containers in that storage account. ストレージ アカウントでパブリック アクセスを禁止すると、以後、そのアカウントに対する匿名要求は失敗します。When public access is disallowed for the storage account, any future anonymous requests to that account will fail. この設定を変更する前に、ストレージ アカウントのデータに匿名でアクセスしている可能性があるクライアント アプリケーションへの影響を理解しておいてください。Before changing this setting, be sure to understand the impact on client applications that may be accessing data in your storage account anonymously. 詳細については、「コンテナーと BLOB への匿名パブリック読み取りアクセスを防ぐ」を参照してください。For more information, see Prevent anonymous public read access to containers and blobs.

ストレージ アカウントのパブリック アクセスを許可または禁止するには、アカウントの AllowBlobPublicAccess プロパティを構成します。To allow or disallow public access for a storage account, configure the account's AllowBlobPublicAccess property. このプロパティは、Azure Resource Manager デプロイ モデルで作成されたすべてのストレージ アカウントで使用できます。This property is available for all storage accounts that are created with the Azure Resource Manager deployment model. 詳細については、「ストレージ アカウントの概要」を参照してください。For more information, see Storage account overview.

既定では、ストレージ アカウントに AllowBlobPublicAccess プロパティは設定されておらず、明示的に設定されるまで値を返しません。The AllowBlobPublicAccess property is not set for a storage account by default and does not return a value until you explicitly set it. プロパティ値が nulltrue の場合、ストレージ アカウントによってパブリック アクセスが許可されます。The storage account permits public access when the property value is either null or true.

Azure portal でストレージ アカウントのパブリック アクセスを許可または禁止するには、次の手順を実行します。To allow or disallow public access for a storage account in the Azure portal, follow these steps:

  1. Azure Portal のストレージ アカウントに移動します。Navigate to your storage account in the Azure portal.

  2. [設定] から [構成] 設定を探します。Locate the Configuration setting under Settings.

  3. [Blob public access](BLOB パブリック アクセス)[有効] または [無効] に設定します。Set Blob public access to Enabled or Disabled.

    アカウントの BLOB パブリック アクセスを許可または禁止する方法を示すスクリーンショット

注意

ストレージ アカウントのパブリック アクセスを禁止しても、そのストレージ アカウントでホストされている静的な Web サイトには影響しません。Disallowing public access for a storage account does not affect any static websites hosted in that storage account. $web コンテナーは常にパブリック アクセスが可能です。The $web container is always publicly accessible.

ストレージ アカウントのパブリック アクセス設定を更新した後、変更が完全に反映されるまでに最大で 30 秒かかることがあります。After you update the public access setting for the storage account, it may take up to 30 seconds before the change is fully propagated.

BLOB パブリック アクセスを許可または禁止するには、Azure Storage リソース プロバイダーのバージョンが 2019-04-01 以降である必要があります。Allowing or disallowing blob public access requires version 2019-04-01 or later of the Azure Storage resource provider. 詳細については、「Azure Storage Resource Provider REST API」 (Azure ストレージ リソース プロバイダー REST API) をご覧ください。For more information, see Azure Storage Resource Provider REST API.

このセクションの例では、ストレージ アカウントの AllowBlobPublicAccess プロパティを読み取り、パブリック アクセスが現在許可されているのか、禁止されているかを確認する方法を示しました。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. 匿名アクセスが禁止されるようにアカウントのパブリック アクセス設定が構成されていることを確認する方法の詳細については、「匿名パブリック アクセスの修正」を参照してください。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.

コンテナーのパブリック アクセス レベルの設定Set the public access level for a container

匿名ユーザーにコンテナーとその BLOB に対する読み取りアクセスを許可するには、まずストレージ アカウントのパブリック アクセスを許可してから、コンテナーのパブリック アクセス レベルを設定します。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. ストレージ アカウントのパブリック アクセスが拒否されている場合、コンテナーのパブリック アクセスを構成することはできません。If public access is denied for the storage account, you will not be able to configure public access for a container.

ストレージ アカウントのパブリック アクセスが許可されている場合、次のアクセス許可を使用してコンテナーを構成できます。When public access is allowed for a storage account, you can configure a container with the following permissions:

  • パブリック読み取りアクセスなし: コンテナーとその BLOB には、承認された要求を使用しなければアクセスできません。No public read access: The container and its blobs can be accessed only with an authorized request. このオプションは、すべての新しいコンテナーの既定値です。This option 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 anonymously. 匿名クライアントはコンテナー内の BLOB を列挙することはできません。Anonymous clients cannot enumerate the blobs within the container.
  • コンテナーとその BLOB に対するパブリック読み取りアクセス: コンテナーと BLOB のデータは、コンテナーのアクセス許可設定とコンテナーのメタデータを除いて、匿名要求によって読み取ることができます。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. クライアントは匿名要求でコンテナー内の BLOB を列挙できますが、ストレージ アカウント内のコンテナーを列挙することはできません。Clients can enumerate blobs within the container by anonymous request, but cannot enumerate containers within the storage account.

個々の BLOB のパブリック アクセス レベルを変更することはできません。You cannot change the public access level for an individual blob. パブリック アクセス レベルは、コンテナー レベルでのみ設定されます。Public access level is set only at the container level. コンテナーの作成時にコンテナーのパブリック アクセス レベルを設定することも、既存のコンテナーで設定を更新することもできます。You can set the container's public access level when you create the container, or you can update the setting on an existing container.

Azure portal で 1 つ以上の既存のコンテナーのパブリック アクセス レベルを更新するには、次の手順を実行します。To update the public access level for one or more existing containers in the Azure portal, follow these steps:

  1. Azure portal でご利用のストレージ アカウントの概要に移動します。Navigate to your storage account overview in the Azure portal.

  2. メニュー ブレードの [BLOB サービス] で、 [コンテナー] を選択します。Under Blob service on the menu blade, select Containers.

  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.

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

ストレージ アカウントのパブリック アクセスが禁止されている場合、コンテナーのパブリック アクセス レベルは設定できません。When public access is disallowed for the storage account, a container's public access level cannot be set. コンテナーのパブリック アクセス レベルを設定しようとすると、アカウントでパブリック アクセスが禁止されているため、設定が無効になります。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.

パブリック アクセスが禁止されているときはコンテナーのパブリック アクセス レベルの設定がブロックされることを示すスクリーンショット

複数のコンテナーのパブリック アクセス設定の確認Check the public access setting for a set of containers

コンテナーを一覧表示してパブリック アクセス設定を確認することによって、1 つ以上のストレージ アカウントのどのコンテナーがパブリック アクセス用に構成されているかを確認できます。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. この方法は、ストレージ アカウントに多数のコンテナーが含まれていない場合や、少数のストレージ アカウントにまたがって設定を確認する場合に実用的な選択肢です。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. ただし、多数のコンテナーを列挙しようとすると、パフォーマンスが低下する可能性があります。However, performance may suffer if you attempt to enumerate a large number of containers.

次の例では、PowerShell を使用して、ストレージ アカウントのすべてのコンテナーのパブリック アクセス設定を取得します。The following example uses PowerShell to get the public access setting for all containers in a storage account. かっこ内のプレースホルダー値を独自の値に置き換えることを忘れないでください。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

次のステップNext steps