LinuxユーザーがイジるはじめてのAzure

LinuxユーザーがAzureを使いこなせるように応援するブログです

【お試し】Azure blob storageへvNETアドレスからのみ許可する

めずらしく連続更新です。

 

今回はBlob storageへのアクセスを仮想ネットワーク(vNET)からのみ

接続させる、というセキュアな経路を設定する機能紹介です。

 

先日アナウンスされた記事は以下です。

Announcing Preview of Azure Storage Firewalls and Virtual Networks | Blog | Microsoft Azure

 

 

概要は以下の日本語サイトを見て把握しましょう。

Azure Storage ファイアウォールおよび仮想ネットワークの構成 (プレビュー) | Microsoft Docs

 

残念ながらこちらもまだ日本リージョン(東西)へ展開されていませんので

展開されるまで待ちましょう。むむむむ。

 

では早速いきましょう。以下試したリソースは米国東部リージョンです。

f:id:akazure:20171017094711j:plain

 

違いを区別するために仮想マシン作成時に作ったストレージアカウントは

今まで通りファイアウォール設定を入れていない「nonaclblob001」とし、

後で作成した「blobacl002」はファイアウォール設定を入れるストレージ

アカウントとして用意しました。

また、仮想ネットワーク(vNET)のアドレスは192.168.0.0/16とし

1つ192.168.0.0/24のサブネットを切っています。仮想マシンはそこに配してあります。

 

以下はblobacl002作成時にファイアウォール設定を入れる画面です。

f:id:akazure:20171017094548j:plain

 

注目すべきは下段にある仮想ネットワーク(プレビュー)の個所ですね。

既に作成済のvNETをプルダウンで選択できる状態になっています。

また、サブネットもvNET作成時に用意したものを選択します。

ですので正確にはvNET ACLというよりSubnet ACLですかね。

 

設定したストレージアカウントのダッシュボードは以下です。

f:id:akazure:20171017095327j:plain

 

ちゃんと設定したvNETからアクセスするように見えています。

あと、個別にIPaddressかCIDRを入れて許可させることもできそうです。

※ここ重要。この後ハマるんでw

 

さらに「信頼されたMicrosoftサービスによるこのストレージアカウント

へのアクセスを許可する」なるものにデフォルトでチェックされています。

 

し、、、信頼された??と懐疑的な方はこの記事の冒頭に入れた日本語概要

のURLをもう一度読みましょう。下の方にどこからを許可してる、というのが

記載されていますので。

 

blobacl002が作成できたので、早速Azureポータルから見てみ。。。

f:id:akazure:20171017100033j:plain

 

はう!!

 

んじゃAzure Storage Explorerで覗いてみるかぁ。

f:id:akazure:20171017100320j:plain

 

あわわ!

 

既にお気づきの方も多いと思いますが、blob storageのファイアウォール

設定でvNETからと信頼されたMicrosoftサービスからのみアクセスを許可

していますよね。つまりAzureポータルやStorage Explorerの接続元と

なっている「あなたが」利用しているインターネットに出てるソースIP

を許可していないのでアクセスできない状態です。そりゃそうだ、な話。

 

ということでご自分の環境で利用しているアドレスをファイアウォール

設定で許可してあげましょう。

 

以下のサイトへ行くと利用しているソースIPがわかります。

アクセス情報【使用中のIPアドレス確認】

 

他にもLinuxターミナルだと以下のコマンドでわかります。

 

curl inet-ip.info

 

 

さて、アドレスがわかればblob storageのファイアウォール機能を

もう一度開き、そのアドレスからの許可を入れておきます。

 

最後に、「本当にvNETアドレスからのみ受け付けてんだよね?」という

確認をしておきましょ。

 

まずストレージアカウントの「診断」をONにします。

f:id:akazure:20171017100955j:plain

 

ご自分のソース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へのアクセスログが自動的に配置されていることがわかります。

f:id:akazure:20171017101304j:plain

 

 

 

 

中身を見てみましょう。

f:id:akazure:20171017101410j:plain

 

説明を端折ってますが、何度かvNET内に作成した仮想マシンから

Azure CLIでblobacl002のblobへファイルをアップロードしたりリスト

出力したりしています。もちろんスマホからも覗こうと何度か試してます。

 

うむ、ちゃんとvNETで切った仮想マシンのアドレス(192.168.0.4)から

受け付けたログだけが見えていますね。ステキ♪

 

余談ですが、このストレージアカウントへ診断機能を付けてアクセスログ

を出す仕掛けは、利用しているAPIのバージョンを確認する時にも利用

できます。APIバージョンのサポート切れ、みたいなアナウンスがあった

時に、いま自分が利用しているblob storageへアクセスしているAPI

バージョンって、なんだっけ?という時にアプリや設定ファイルを1つ

ずつ虱潰しに確認する手間は避け、この診断ログを30日分ためて

このテキストログから利用バージョンだけをくり貫いて確認する、と

いった便利な使い方もできます。(1か月稼働しないバッチとかだと

モレるので40日保存の解析がいいですかね)

 

以上でっす。