Azure Web Apps / Azure Functions から同じリージョンの Azure Storage Account へ接続する時の注意点
記載されている内容は 2018 年 10 月 30 日 時点のものとなり、現時点におきましては変更されている可能性がありますので、ご注意下さい。
こんにちは、Azure PaaS サポートの村山です。
今回は、Azure Web Apps / Azure Functions から同リージョンの Azure Storage Account へ接続する際の注意点についてご案内します。
同じリージョン内での通信の場合、Firewall を設定すると通信ができなくなる
Azure Web Apps / Azure Functions から同リージョンの Azure Storage Account へ接続する際は、Azure ポータル上の、Web App -> [プロパティ] に記載されている送信 IP ではなく、Azure Web Apps / Azure Functions のプラットフォーム内部で利用されているプライベート IP 経由で通信を行います。
このため、Firewall に下記のような Azure Web Apps や Azure Functions の [プロパティ]に記載されているパブリック IP を設定すると、同じリージョン の Azure Web Apps/ Azure Functions から Storage Account に接続することができなくなります。
ちなみに、Storage Account のログを有効化して、接続に失敗した時のログを見ると、10.72.196.80:50062; のように、クライアントの IP としてプライベート IP が記載されます。
1.0;2018-10-29T08:50:00.3251459Z;CreateContainer;IpAuthorizationError;403;2;2;authenticated;kemurastorage;kemurastorage;blob;"https://kemurastorage.blob.core.windows.net:443/firewalltestcont?restype=container";"/";cb846703-501e-006d-1864-6f7cee000000;0;10.72.196.80:50062;2017-04-17;448;0;95;246;0;;;;;;"Azure-Storage/0.36.0 (Python CPython 3.6.4; Windows 10)";;"9e659d00-db57-11e8-9c95-0003ffec138c"
このプライベート IP の範囲は公開されていないため、恐れ入りますが現状では下記のいずれかが対象方法となります。
- Firewall を解除して Azure Storage Account と通信する
- App Service Environment を利用して、サービス エンドポイントと連携する
もしくは、 通常の VNET 統合機能 ではサービス エンドポイントと連携することはできませんが、 新しい VNET 統合の機能 (プレビュー) であればサービス エンドポイントとの連携が可能です。
別リージョンであれば問題なく設定できる
Azure Web Apps / Azure Functions と、Azure Storage Account が東日本と西日本などそれぞれ 別リージョンにある場合 は、Firewall の設定が可能です。
お手数をおかけしますが、通常の Azure Web Apps を使いつつ Storage Account の Firewall を利用する場合は、Azure Web Apps / Azure Functions と、Azure Storage Account のリージョンを分けていただきますようお願い申し上げます。
※ 本記事の内容は予告なく変更される場合がございますので予めご了承ください。