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

こんにちは、Azure サポートチームの小久保です。
今回は、Azure VM からストレージ アカウントへアクセスする際の挙動ついてご案内します。

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

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

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

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

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

    VM からストレージ アカウントへアクセスすると、アクセス元 IP は VM のパブリック IP とならず、Azure 内部で使用している仮想 IP アドレスとなります。
    また、当該 IP はデータセンターの運用状況に応じて可変となっておりますが、セキュリティの観点から、この IP レンジは公開できません。

補足 : 検証結果


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

    [ VM の構成 ]
    パブリック IP : 104.215.XX.XX
    プライベート IP : 10.1.XX.XX
    Azure 内部で使用している仮想 IP : 100.79.XX.XX

    [ ストレージ アカウントの診断ログ ] ※ 1 、※ 2
    1.0;2017-10-23T08:30:29.3043819Z;ListBlobs;Success;200;13;13;authenticated;storagename;storagename;blob;"https://storagename.blob.core.windows.net:443/test?restype=container&comp=list&prefix=test_104_215_XX_XX.txt&maxresults=250&include=snapshots&timeout=300";"/storagename/test";cb2a726a-001e-0014-0dd9-4b34cf000000;0;104.215.XX.XX:49172;2017-04-17;535;0;152;261;0;;;;;;"AzCopy/6.3.0 DataMovement/0.6.2.0 Azure-Storage/8.4.0 (.NET CLR 4.0.30319.42000; Win32NT 6.2.9200.0)";;"2a229c78-96b9-4875-8f96-c8a9a82ab8b8"

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

    [ VM の構成 ]
    パブリック IP : 13.73.XX.XX
    プライベート IP : 10.1.XX.XX
    Azure 内部で使用している仮想 IP : 100.72.XX.XX

    [ ストレージ アカウントの診断ログ] ※ 1 、※ 2
    1.0;2017-10-23T08:08:57.7965087Z;ListBlobs;Success;200;7;7;authenticated;storagename;storagename;blob;"https://storagename.blob.core.windows.net:443/test?restype=container&comp=list&prefix=test_13_73_XX_XX.txt&maxresults=250&include=snapshots&timeout=300";"/storagename/test";5c8b1a23-001e-0019-64d6-4bdbc3000000;0;100.72.XX.XX:49172;2017-04-17;533;0;152;259;0;;;;;;"AzCopy/6.3.0 DataMovement/0.6.2.0 Azure-Storage/8.4.0 (.NET CLR 4.0.30319.42000; Win32NT 6.2.9200.0)";;"f710840d-8b32-4483-9f54-81df4b73ffdd"

※1 ストレージ アカウントの診断ログは、BLOB コンテナーの $logs 配下に格納されます。
※2 ストレージ アカウントの診断ログ フォーマット

[参考]
Storage Analytics Log Format
/ja-jp/rest/api/storageservices/Storage-Analytics-Log-Format?redirectedfrom=MSDN

まとめ


上記の仕組みにより、SAS (Shared Access Signatures) を使用して、ストレージ アカウントへのアクセスを制限する場合には注意が必要です。
現時点の SAS の機能では、Azure VM とストレージ アカウントが同一リージョンに存在する構成において、当該 VM からのアクセスのみを許可するといった制御が非常に難しく、以下の回避策をご検討ください。

  • ストレージ アカウントの診断設定を利用し、アクセス元の IP を確認し、都度 SAS を発行する
  • VM と ストレージ アカウントを異なるリージョンに配置する
  • 新機能となる 「Azure Storage ファイアウォールおよび仮想ネットワークの構成」 の一般公開まで、しばらくお待ちいただく

[参考]
Azure Storage ファイアウォールおよび仮想ネットワークの構成 (プレビュー)
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-network-security/