Azureのストレージアカウントを使ってみました。
今回はローカルPCからVPNにつないでファイル共有にアクセスしてみます。
概要
- VPNでローカルPCとAzure仮想ネットワークをつなぐ
- ストレージアカウントを作成、ファイル共有を作成、プライベートエンドポイントを作成
- ローカルPCのエクスプローラーからアクセス
私なりの理解では、プライベートエンドポイントとは、例えばストレージアカウントやWeb AppsなどのAzureに埋め込まれた機能のNICみたいなものを、自分の環境(仮想ネットワーク)に置くことができる機能です。
これがなければ、インターネットを経由してAzureにアクセスすることになります。それはセキュリティの観点から好ましくありません。パブリックアクセスなしで利用できるようにした方が何かとよさそうです。
作業
前準備
リソースグループの作成からVPN接続までは省略。
VPNゲートウェイだけは時間がかかるのでさっさとデプロイしましょう。
ストレージアカウントの作成
ストレージアカウントの作成時にいくつか注意点があります。
- ストレージアカウント名は世界中で被らない名前にする(日付でも入れれば被らない)
- パブリックアクセスを無効にするか選択する(今回のテーマ)
- 冗長性(大事な話ですが今回は触れません,LRSで作成)
2に関して、作成時の画面はこのようになっています。
今回は完全にプライベートなアクセスに制限したいので一番下の選択肢にしています(左の赤枠)。
プライベートエンドポイントを利用してアクセスするにはDNSゾーンを作らないといけません(右の赤枠)。このタイミングで作成しました。
ストレージアカウントの作成が終ったらファイル共有を作成しましょう。
検証なのでバックアップなしで作成しました。
作成したファイル共有を見てみると、URLが割り当てられています。
他にも、IDベースのアクセス管理などができます。この辺りは別記事で深掘りしたいと思っています。
作るリソースはこんなもんです。
使ってみる
現時点でリソースグループはこうなっています。
プライベートエンドポイント、プライベートDNSゾーンができています。
プライベートエンドポイントを接続するネットワークインターフェイスにはプライベートIPアドレスが割り当てられています。
それでは、VPN接続したPCからこのIPアドレスにアクセスしてみます。
エクスプローラーを開きます。アドレスバーに"\10.0.0.4"と入れてエンター
おや?
代わりに"\testfiles0423.file.core.windows.net\test-fileshare"と入れてみたところ
認証画面が出てきました。はて、何入れようか?そんなもの設定したかいな
Azure portalのユーザー名とパスワードではだめでした。
まぁプライベートIPアドレスはだめで、FQDNだとアクセスまで出来ることを確認しました。
アカウントのサブリソースをblobにしてしまったのが失敗の原因かと思ってプライベートエンドポイントを追加で作成してみましたが、同じ感じです。
ローカルのパワーシェル
名前解決ができてない。まあ確かにプライベートDNSゾーン作っただけで特に設定してないですし。
でもそしたらなんで接続までいけたんや?
もう一度上の認証画面まで行って、ユーザー名をファイル共有名、パスを、「ストレージアカウントキーの"pass:"以下の文字列」にしてみましょう。下の画像の、「スクリプトの表示」で見られます。
フム
「アクセスが拒否されました」なので、一歩進んだ感じです。しかし、この後がわからない。
同じ仮想ネットワークに置いたVMのパワーシェルでも名前解決できませんでした。
また検証しよう
疑問点
名前解決ができないのに、なぜ接続はできているのか?
おわり!