BLOB 匿名 アクセスを有効・無効にする
目次
• 背景
• BLOB 匿名 アクセス
• アカウント レベルとコンテナー レベルでの匿名 アクセス
• 匿名 アクセス設定方法
• パブリック ネットワーク アクセス
• よくある誤解
• 3 行要約
背景
Blob Storage には、以下の3 種類のリソースがあります。
i. ストレージ アカウント
ii. ストレージ アカウント内のコンテナー
iii. コンテナー内のBLOB
ストレージ アカウントにおいて混同されがちな設定として、BLOB 匿名 アクセスと、パブリック ネットワーク アクセスがあります。前者は認証・承認に関連し、後者はネットワークの経路に関連します。両方ともセキュリティに関する設定ですが、それぞれ独立した設定となります。 下記ではそれぞれの設定について説明いたします。
(注) BLOB 匿名アクセスの設定は以前は BLOB パブリックアクセスと呼ばれておりましたので、より混同されがちでした。
BLOB 匿名 アクセス
BLOB 匿名 アクセスは Blob Storage に対してのみサポートされている機能となります。BLOB 匿名 アクセスが無効になっていると、ストレージ アカウント内のBLOB への匿名アクセス(URL のみで誰でも BLOB の内容が見られること)が不可能になります。そのため、認証情報を含まない匿名でのファイルへのアクセスを防ぐことが出来ます。
BLOB 匿名アクセス設定方法
アカウント レベルでの匿名 アクセス設定
Azure portal でストレージ アカウントのアカウント レベルでの匿名 アクセスを許可または禁止するには、次の手順を実行します。
1. Azure Portal で、対象のストレージ アカウントに移動します。
2. [設定 (Settings)] から [構成 (Configuration)] を選択します。
3. [BLOB 匿名 アクセスを許可する] を [無効] または [有効] に設定します。
コンテナー レベルでのアクセス レベル設定
Azure portal でストレージ アカウントのコンテナー レベルでのアクセス レベルを設定するには、次の手順を実行します。(上記のアカウント レベルで匿名 アクセスを無効にした場合、コンテナーのアクセス レベルは設定できませんのでご注意ください。)
1. Azure Portal のストレージ アカウントに移動し、対象コンテナーを選択します。
2. [アクセス レベルを変更します] という設定から、必要に応じて[プライベート]、[BLOB]、[コンテナー] を選択します。
アカウントレベルとコンテナーレベルでの匿名 アクセスの組み合わせ
Blob 匿名 アクセスは、ストレージ アカウントでの設定とコンテナー単位での設定があり、両者の組み合わせで判断されます。
アカウント レベルとコンテナー レベルでの設定の組み合わせとその結果
i. アカウント レベル→「匿名 アクセス無効」の場合 :
>>> コンテナー レベルの設定によらず、アカウント配下の BLOB への匿名 アクセス不可
ii. アカウント レベル→「匿名 アクセス有効」 & コンテナー レベル→「プライベート」の場合 :
>>> このコンテナーへの匿名 アクセス不可
iii. アカウント レベル→「匿名 アクセス有効」 & コンテナー レベル→「コンテナー」場合 :
>>> Get blob 可能、List blobs 可能
iv. アカウント レベル→「匿名 アクセス有効」 & コンテナー レベル→「Blob」の場合 :
>>> Get blob 可能、List blobs 不可
アカウント レベルで匿名 アクセスが無効な場合、コンテナーのアクセス レベルに関係無く、匿名読み取りアクセスはできません。一方で、コンテナーへの アクセス レベルは既定で常にプライベートになってます。そのため、明示的にアクセス レベルを[BLOB]、[コンテナー]に設定したコンテナーを利用していない限りは、ストレージ アカウントの設定で「Blob 匿名 アクセスを許可する」を無効から有効、有効から無効へ変更しても、動作への影響はありません。
パブリック ネットワーク アクセス
パブリック ネットワーク アクセスを無効にした場合のプライベート エンドポイントは、仮想ネットワークのプライベート IP アドレスを使用するネットワーク インターフェイスであり、サービスに非公開で安全に接続します。一方で、BLOB 匿名 アクセスは、クライアントの認証に応じてBLOBへのアクセス自体を許可又は拒否する設定です。
対象アカウントの [セキュリティ + ネットワーク (Security + networking)] の設定でパブリック ネットワーク アクセスを既定の [全てのネットワークで有効 (Enabled from all networks)] から [無効 (Disabled)] に変更する場合、プライベート エンドポイントが必要となります。プライベート エンドポイント作成により、仮想マシン (VM) などの Azure リソースは、Azure Storage などのプライベート リンク リソースと非公開かつ安全に通信できます。
プライベート エンドポイント経由のみのアクセスの詳細については、以下の URL をご参照ください。
<Azure プライベート エンドポイントを使用してストレージ アカウントに接続する>
https://docs.microsoft.com/ja-jp/azure/private-link/tutorial-private-endpoint-storage-portal
よくある誤解
以前はポータル等で “BLOB 匿名アクセス” の表記が “BLOB パブリックアクセス” となっており、また当初 BLOB パブリックアクセス、と呼ばれていたため、プロパティ名としては現在も alloBlobPublicAceess という名称になっております。
そのような経緯もあったため、BLOB 匿名アクセスとパブリックネットワークアクセスは混同されやすく、「BLOB へのアクセスの経路をプライベート エンドポイント限定にしたいのだけれど、その場合に [Blob 匿名アクセスを許可する] を [無効] にする必要があるかどうかを確認したい 」、というお問い合わせをいただいたことが何度かございます。
今までの内容をご覧いただければお問い合わせに対する回答内容はおのずとわかりますが、回答としては、「[Blob 匿名 アクセスを許可する] についてはアクセスの経路とは全く関係がないので、[無効]にする必要はない」、ということになります。
3 行要約
1. Azure Storage の中で Blob Storage は、URL のみで誰でも BLOB の内容が見れるという匿名 アクセスが可能
2. アカウント レベルとコンテナー レベルでの設定で匿名 アクセスを有効・無効にすることができる
3. BLOB の匿名 アクセスと プライベート エンドポイントとは関係が無い
2022 年 9 月 8 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。
※ 2024 年 7 月 31 日時点でポータルや資料などで 「BLOB パブリック アクセス」という記載が 「BLOB 匿名アクセス」 という記載になったことなどを鑑み、内容を修正しております。