Azure VM からストレージ アカウントへアクセスする際の挙動とアクセス元制御

Last Update: feedback 共有

こんにちは、Azure テクニカル サポート チームの木下です。
今回は、Azure VM からストレージ アカウントへアクセスする際の挙動とアクセス元制御ついてご案内します。

Azure VM からストレージ アカウントへアクセスする際の挙動

VM からストレージ アカウントへアクセスを行う場合、両者のリージョンが異なる場合と、同じ場合ではアクセス元の IP アドレスが異なる点に、ご注意ください。

VM とストレージ アカウントが同一リージョンに存在する場合

パブリック エンドポイント または サービス エンドポイントを使用

VM からストレージ アカウントへアクセスすると、アクセス元 IP は VM のパブリック IP とならず、Azure 内部で使用しているプライベート IP アドレスとなります。

VM とストレージ アカウントが異なるリージョンに存在する場合

パブリック エンドポイントを使用

VM からストレージ アカウントへアクセスすると、アクセス元 IP は VM のパブリック IP アドレスとなります。

サービス エンドポイントを使用

VM からストレージ アカウントへアクセスすると、アクセス元 IP は VM のパブリック IP とならず、Azure 内部で使用しているプライベート IP アドレスとなります。

VM からストレージアカウントへのアクセス検証

・VM (東日本) から、ストレージ アカウント (東日本) に対して AzCopy を実施した結果

[ VM の構成 ]

パブリック IP : 172.207.XX.XX
プライベート IP : 10.6.0.4

[ ストレージ アカウントの診断ログ] ※1
サービス エンドポイント無効、パブリック エンドポイント経由のアクセス

1.0;2024-05-03T05:04:52.4891056Z;PutBlob;SASSuccess;201;7;4;sas;;aptsstor;blob;”https://storageaccountname.blob.core.windows.net:443/con/test.txt?sas";"/aptsstor/con/test.txt";xxxxxxxxxxxxxxxxx;0;10.6.0.4:50031;2023-08-03;544;0;337;0;0;;"xxxxxxxxx";""xxxxxxxxxx;";Friday, 03-May-24 05:04:52 GMT;;”AzCopy/10.23.0 azsdk-go-service.Client/v1.2.0 (go1.19.12; Windows_NT)”;;”xxxxxxxxxxxxxxxxxx”

アクセス元 IP は 10.6.0.4 であることが分かります。

サービス エンドポイント有効、サービス エンドポイント (Microsoft.Storage) 経由のアクセス

1.0;2024-05-03T05:26:22.9853049Z;PutBlob;SASSuccess;201;6;3;sas;;aptsstor;blob;”https://storageaccountname.blob.core.windows.net:443/con/test2.txt?sas";"/aptsstor/con/test2.txt";xxxxxxx;0;10.6.0.4:50231;2023-08-03;545;0;337;0;0;;"xxxxxxxx";""xxxxxxxxx;";Friday, 03-May-24 05:26:22 GMT;;”AzCopy/10.23.0 azsdk-go-service.Client/v1.2.0 (go1.19.12; Windows_NT)”;;”xxxxxxxx”

アクセス元 IP は 10.6.0.4 であることが分かります。

・VM (西日本) から、ストレージ アカウント (東日本) に対して AzCopy を実施した結果

[ VM の構成 ]

パブリック IP : 20.18.XX.XX
プライベート IP : 10.0.0.4

[ ストレージ アカウントの診断ログ ] ※1

サービス エンドポイント無効、パブリック エンドポイント経由のアクセス

1.0;2024-05-03T05:13:11.4973284Z;PutBlob;SASSuccess;201;12;9;sas;;aptsstor;blob;”https://storageaccountname.blob.core.windows.net:443/con/test1.txt?sas";"/aptsstor/con/test1.txt";xxxxxxxxxxx;0;20.18.xx.xx:50131;2023-08-03;545;0;337;0;0;;"xxxxxxxx";""xxxxxxxxxxx;";Friday, 03-May-24 05:13:11 GMT;;”AzCopy/10.23.0 azsdk-go-service.Client/v1.2.0 (go1.19.12; Windows_NT)”;;”xxxxxxxxxxxx”

アクセス元 IP は 20.18.XX.XX であることが分かります。

サービス エンドポイント有効、サービス エンドポイント (Microsoft.Storage) 経由のアクセス

1.0;2024-05-03T05:26:59.6880782Z;PutBlob;SASSuccess;201;7;4;sas;;aptsstor;blob;”https://storageaccountname.blob.core.windows.net:443/con/test3.txt?sas";"/aptsstor/con/test3.txt";xxxxxxxxxx;0;10.0.0.4:50260;2023-08-03;545;0;337;0;0;;"xxxxxxxx;";Friday, 03-May-24 05:26:59 GMT;;”AzCopy/10.23.0 azsdk-go-service.Client/v1.2.0 (go1.19.12; Windows_NT)”;;”xxxxxxxxxxxxxx”

アクセス元 IP は 10.0.0.4 であることが分かります。

・VM (米国中部) から、ストレージ アカウント (東日本) に対して AzCopy を実施した結果

[ VM の構成 ]

パブリック IP : 52.173.XX.XX
プライベート IP : 10.0.0.4

[ ストレージ アカウントの診断ログ] ※1

サービス エンドポイント無効、パブリック エンドポイント経由のアクセス

1.0;2024-05-03T05:42:29.5602997Z;PutBlob;SASSuccess;201;8;4;sas;;aptsstor;blob;”https://storagaaccountname.blob.core.windows.net:443/con/test1.txt?sas";"/aptsstor/con/test1.txt";xxxxxxxxxxxx;0;52.173.xx.xx:49966;2023-08-03;545;0;337;0;0;;"xxxxxxxxxx";""xxxxxx;";Friday, 03-May-24 05:42:29 GMT;;”AzCopy/10.23.0 azsdk-go-service.Client/v1.2.0 (go1.19.12; Windows_NT)”;;”xxxxxxxxxx”

アクセス元 IP は 52.173.XX.X であることが分かります。

サービス エンドポイント有効、サービスエ ンドポイント(Microsoft.Storage.Global) 経由のアクセス

1.0;2024-05-03T06:08:17.6529951Z;PutBlob;SASSuccess;201;8;5;sas;;aptsstor;blob;”https://storageaccountname.blob.core.windows.net:443/con/test2.txt?sas";"/aptsstor/con/test2.txt";xxxxxxxxxxxxx;0;10.0.0.4:50237;2023-08-03;545;0;337;0;0;;"xxxxxxx";""xxxxx;";Friday, 03-May-24 06:08:17 GMT;;”AzCopy/10.23.0 azsdk-go-service.Client/v1.2.0 (go1.19.12; Windows_NT)”;;”xxxxxxxxxxxx”

アクセス元 IP は 10.0.0.4 であることが分かります。

※1 ストレージ アカウントの診断ログは、対象のストレージ アカウント > [監視] > [診断設定] よりご設定ください。

参考)Azure Blob Storage 監視データのリファレンス
https://learn.microsoft.com/ja-jp/azure/storage/blobs/monitor-blob-storage-reference
参考)Azure Files 監視データのリファレンス
https://learn.microsoft.com/ja-jp/azure/storage/files/storage-files-monitoring-reference

Azure VM からストレージ アカウントへアクセスする際の挙動についてのまとめ

ストレージ アカウントのアクセス制御について、仮想ネットワーク/サブネット単位、もしくは外部からのパブリック IP アドレス単位での制御のみが可能です。
そのため、VM とストレージ アカウントが同一リージョンである場合、パブリック エンドポイント、サービス エンドポイントいずれを使用する場合も仮想ネットワーク/サブネット単位での制御までとなります。
VM とストレージ アカウントが異なるリージョンにある場合、パブリック エンドポイントを使用する際は、パブリック IP アドレス単位での制御、サービスエンドポイントを使用する際は、仮想ネットワーク/サブネット単位での制御となります。

ストレージアカウントへのアクセス制御について

先述の通り、ストレージ アカウントのファイアウォールでは、仮想ネットワーク/サブネット単位、もしくは外部からのパブリック IP 単位での制御のみとなりますが、
「ストレージ アカウントへのアクセス制御を VM 単位で行う方法はあるか」というお問い合わせをいただくことがあります。
VM 単位でのアクセス元制御を行いたい場合、プライベート エンドポイントに対するネットワーク ポリシーを利用することで、プライベート エンドポイントの IP アドレスに対して NSG でアクセス制御を行うことが可能となります。

参考)プライベート エンドポイントのネットワーク ポリシーを管理する
https://learn.microsoft.com/ja-jp/azure/private-link/disable-private-endpoint-network-policy?tabs=network-policy-portal

VM 単位でのストレージアカウントへのアクセス制御検証

1.ストレージ アカウントに対して、プライベート エンドポイントを構成します。

参考)チュートリアル:Azure プライベート エンドポイントを使用してストレージ アカウントに接続する
https://docs.microsoft.com/ja-jp/azure/private-link/tutorial-private-endpoint-storage-portal
参考)Azure Storage のプライベート エンドポイントを使用する
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-private-endpoints

2.対象の仮想ネットワーク/サブネットに対してプライベート エンドポイントのネットワーク ポリシーを有効にします。

参考)プライベート エンドポイントのネットワーク ポリシーを管理する
https://learn.microsoft.com/ja-jp/azure/private-link/disable-private-endpoint-network-policy?tabs=network-policy-portal

3.NSG を設定します。

ソース IP アドレス/CIDR 範囲:アクセス元 VM のプライベート IP を登録

宛先 IP アドレス/CIDR 範囲:ストレージ アカウントのプライベート エンドポイントが構成されている仮想ネットワークのアドレス空間から割り振られたプライベート IP を登録

4.アクセス拒否した端末よりストレージアカウント内コンテナ―へアクセスします。

NSG にてアクセス拒否した VM からストレージアカウント内コンテナ―へアクセスできないことを確認します。

上記のようにプライベート エンドポイントに対するネットワーク ポリシーを利用することで VM 単位でのアクセス元制御を実現することが可能です。


本稿は以上となりますが、いかがでしたでしょうか。 本稿が皆様のお役に立てれば幸いです。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。