Azure Storage Account のネットワークセキュリティ機能の挙動について、特に公式ドキュメントに記載されている以下のポイントを検証してみました。
ストレージ アカウントと同じ Azure リージョン内のクライアントへのアクセスを制限する。 IP ネットワーク ルールは、ストレージ アカウントと同じ Azure リージョンから送信された要求には影響しません。 同じリージョンの要求を許可するには、仮想ネットワーク規則を使用します。
引用元: Azure Storage ファイアウォールおよび仮想ネットワークを構成する
この動作がどういう意味を持つのか、実際に検証して確認してみましょう。
Storage Account のネットワーク制限の概要
Storage Account では、以下のようなネットワークセキュリティ機能が提供されています。その一部を紹介します。
- パブリックネットワークアクセスの有効化/無効化
- 特定の IP アドレスやアドレス範囲からのアクセス許可
- 特定の仮想ネットワーク (VNet) からのアクセス許可(サービスエンドポイント)
- プライベートエンドポイントの設定
この他にも、条件付きアクセスやマネージド ID との統合など、様々なセキュリティ機能があります。
特に、サービスエンドポイントは Azure 仮想ネットワーク内からのトラフィックにのみ最適化されたルートを提供するもので、パブリックインターネットを経由せずに Azure バックボーンネットワーク上でアクセスが可能になります。
しかし、公式ドキュメントによると、IP ネットワークルールは「同じ Azure リージョンから送信された要求には影響しない」とされています。これは何を意味するのでしょうか?
検証環境の準備
1. リソースグループの作成
まず、検証用のリソースグループを作成します。
2. Storage Account の作成
ネットワーク制限を設定するための Storage Account を作成します。
3. 2つの異なる仮想マシンを作成
次に、検証用の仮想マシンを2つ作成します。
- 同じリージョンに VM1 を作成
- 異なるリージョンに VM2 を作成
architecture-beta
group vnetregiona[RegionA]
service vm1(azure:virtual-machine)[VM1] in vnetregiona
service stg(azure:storage-accounts)[StorageAccount] in vnetregiona
group vnetregionb[RegionB]
service vm2(azure:virtual-machine)[VM2] in vnetregionb
vm1:R -- L:stg
vm2:R -- L:stg
ネットワーク制限の設定
Storage Account のネットワークセキュリティ設定を構成します。
- Storage Account の「ネットワーク」ブレードを開きます
- 「パブリックネットワークアクセス」を「選択されたネットワーク」に設定します
- ファイアウォールの設定で特定の IP アドレスのみを許可します(VM1 と VM2 のパブリック IP)

検証
1. 同じリージョンの VM1 からのアクセステスト
VM1 から Azure Portal にログインし、制限を設定した Storage Account にアクセスを試みます。
同一リージョンの VM からは パブリック IP を許可リストに入れていてもアクセスできません
しかもエラーとしてパブリック IP を許可リストに入れるように表示されてしまいます

2. 異なるリージョンの VM2 からのアクセステスト
VM2 から Azure Portal にログインし、制限を設定した Storage Account にアクセスを試みます
なんの問題もなくアクセスできました

3. 同じリージョンの VM1 からのアクセステスト(サービスエンドポイント)
公式ドキュメントの記載通り、同じリージョンからの要求を制限したい場合は、IP ルールではなく 仮想ネットワーク規則 を使用する必要があります。
まずは設定します

改めて VM1 から Storage Account にアクセスを試みます
今度は普通にアクセスできました
まとめ
今回の検証で、以下のことが確認できました。
- Storage Account に IP ベースのネットワーク制限を設定しても、同じリージョンからのアクセスには影響しない
- 異なるリージョンからのアクセスは、IP 制限の設定通りに制御される
- 同じリージョンからのアクセスを制限するには、仮想ネットワーク規則を使用する必要がある