【お試し】Azure blob storageへvNETアドレスからのみ許可する
めずらしく連続更新です。
今回はBlob storageへのアクセスを仮想ネットワーク(vNET)からのみ
接続させる、というセキュアな経路を設定する機能紹介です。
先日アナウンスされた記事は以下です。
Announcing Preview of Azure Storage Firewalls and Virtual Networks | Blog | Microsoft Azure
概要は以下の日本語サイトを見て把握しましょう。
Azure Storage ファイアウォールおよび仮想ネットワークの構成 (プレビュー) | Microsoft Docs
残念ながらこちらもまだ日本リージョン(東西)へ展開されていませんので
展開されるまで待ちましょう。むむむむ。
では早速いきましょう。以下試したリソースは米国東部リージョンです。
違いを区別するために仮想マシン作成時に作ったストレージアカウントは
今まで通りファイアウォール設定を入れていない「nonaclblob001」とし、
後で作成した「blobacl002」はファイアウォール設定を入れるストレージ
アカウントとして用意しました。
また、仮想ネットワーク(vNET)のアドレスは192.168.0.0/16とし
1つ192.168.0.0/24のサブネットを切っています。仮想マシンはそこに配してあります。
以下はblobacl002作成時にファイアウォール設定を入れる画面です。
注目すべきは下段にある仮想ネットワーク(プレビュー)の個所ですね。
既に作成済のvNETをプルダウンで選択できる状態になっています。
また、サブネットもvNET作成時に用意したものを選択します。
ですので正確にはvNET ACLというよりSubnet ACLですかね。
設定したストレージアカウントのダッシュボードは以下です。
ちゃんと設定したvNETからアクセスするように見えています。
あと、個別にIPaddressかCIDRを入れて許可させることもできそうです。
※ここ重要。この後ハマるんでw
さらに「信頼されたMicrosoftサービスによるこのストレージアカウント
へのアクセスを許可する」なるものにデフォルトでチェックされています。
し、、、信頼された??と懐疑的な方はこの記事の冒頭に入れた日本語概要
のURLをもう一度読みましょう。下の方にどこからを許可してる、というのが
記載されていますので。
blobacl002が作成できたので、早速Azureポータルから見てみ。。。
はう!!
んじゃAzure Storage Explorerで覗いてみるかぁ。
あわわ!
既にお気づきの方も多いと思いますが、blob storageのファイアウォール
設定でvNETからと信頼されたMicrosoftサービスからのみアクセスを許可
していますよね。つまりAzureポータルやStorage Explorerの接続元と
なっている「あなたが」利用しているインターネットに出てるソースIP
を許可していないのでアクセスできない状態です。そりゃそうだ、な話。
ということでご自分の環境で利用しているアドレスをファイアウォール
設定で許可してあげましょう。
以下のサイトへ行くと利用しているソースIPがわかります。
他にもLinuxターミナルだと以下のコマンドでわかります。
curl inet-ip.info
さて、アドレスがわかればblob storageのファイアウォール機能を
もう一度開き、そのアドレスからの許可を入れておきます。
最後に、「本当にvNETアドレスからのみ受け付けてんだよね?」という
確認をしておきましょ。
まずストレージアカウントの「診断」をONにします。
ご自分のソースIPがわからず、ワタワタする方にはAzure CLI(2.0)では
以下のコマンドで診断設定が有効となります。
az storage logging update --log r --retention 30 --services b
※logはr(readの時)、30日分のログ保存期間、対象はb(blob)サービス、
という意味の引数です。
診断設定を入れ、storage explorerで覗くと、$logsというコンテナの下に
blob storageへのアクセスログが自動的に配置されていることがわかります。
中身を見てみましょう。
説明を端折ってますが、何度かvNET内に作成した仮想マシンから
Azure CLIでblobacl002のblobへファイルをアップロードしたりリスト
出力したりしています。もちろんスマホからも覗こうと何度か試してます。
うむ、ちゃんとvNETで切った仮想マシンのアドレス(192.168.0.4)から
受け付けたログだけが見えていますね。ステキ♪
余談ですが、このストレージアカウントへ診断機能を付けてアクセスログ
を出す仕掛けは、利用しているAPIのバージョンを確認する時にも利用
できます。APIバージョンのサポート切れ、みたいなアナウンスがあった
時に、いま自分が利用しているblob storageへアクセスしているAPI
バージョンって、なんだっけ?という時にアプリや設定ファイルを1つ
ずつ虱潰しに確認する手間は避け、この診断ログを30日分ためて
このテキストログから利用バージョンだけをくり貫いて確認する、と
いった便利な使い方もできます。(1か月稼働しないバッチとかだと
モレるので40日保存の解析がいいですかね)
以上でっす。