【Azure】Azure FilesとAzureVMをセキュアにファイル共有する

#1. はじめに

###1-1 ご挨拶
初めまして、井村と申します。
「Azure Bastion」を用いることで踏み台サーバを作成する必要がない為、案件でもよく利用されます。
しかし「Azure VM」に対し注意事項として

「現在、テキストのコピー/貼り付けのみがサポートされています。」

となっています。すなわちファイルのコピー/貼り付けが出来ません。

本記事は「Azure Files」を用いて「Azure VM」へファイル共有し、尚且つIPアドレス制限を行い、セキュアな方法でファイルアップロードする記事を記載いたします。

###1-2 対象読者
- Azure portalからAzureサービスを使用したことがある。
- セキュアな通信に興味がある。

###1-3 成果物

|![instructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/67b16e84-61d6-8c1e-df0d-11809ec044b4.png)|
|:--|

- 「Bastion」経由で「Azure VM」へログインするので、「Azure VM」に「public IP address」は付与しません。
- 「Azure Files」と「Azure VM」間は「PrivateEndpoint」経由でおこないます。
- 「NSG」は今回の通信に必要なポートのみ許可するようにします。

最後に「Azure Files」上にアップロードしたファイルを「Azure VM」へダウンロードするとこまで実施します。

#2. 構築(準備)編
「Azure Files」以外を構築しています。構築の順番は色々とありますが、自分は「Virtual Network」、「NSG」、「public IP address」、「Bastion」、「Azure VM」、「Storage Account(PrivateEndpoint)」でいきます。各サービスの一部を画像で紹介いたします。

###2-1 Virtual Network

|![2-1VirtualNetwork.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/6214c397-eb0f-6c13-7d88-cb8c95368c98.png)
|:--|

「AzureBastionSubnet」は「Bastion」、「snet-vm」は「Azure VM」、「snet-pep」は「PrivateEndpoint」を格納するサブネットになります。

###2-2 NSG

|![2-2-1NSG.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/6671c9f1-2118-b605-35c2-06c060909e29.png)
|:--|

「AzureBastionSubnet」の「NSG」です。

- 受信、送信のデフォルト値は優先度は'1000'で拒否しています。
- 受信の「AllowHttpsInbound」は「Bastion」経由で「Azure VM」へログインするユーザーのIPアドレスになります。こちらでIPアドレス制限を行います。
- その他の設定値は「[NSG アクセスと Azure Bastion を使用する](https://docs.microsoft.com/ja-jp/azure/bastion/bastion-nsg)」を参照願います。

|![2-2-1NSG.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/f7abf266-5c9b-7c14-211b-0344b6865c7a.png)
|:--|

「snet-vm」の「NSG」です。

- 受信のデフォルト値は優先度は'1000'で拒否しています。
- 受信の優先度'100'はRDP接続(Azure Bastion)、優先度'110'は「Azure Files」とはSMBプロトコルで接続するのでポートを開けています。

###2-3 public IP address
「Azure Bastion」用で作成します。

###2-4 Bastion
「仮想ネットワーク」、「サブネット」、「public IP address」は上記で作成したものを選択します。

###2-5 Azure VM
「仮想ネットワーク」、「サブネット」は上記で作成したものを選択します。「public IP address」、「NSG」は作成不要です。

###2-6 Storage Account(PrivateEndpoint)

|![2-6-1ST.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/a5c4cc4c-beda-52f4-7e51-9fda6c31084c.png)
|:--|

- 「PrivateEndpoint」のサブリソースは「Azure Files」を使用するため「file」を選択します。
- 「仮想ネットワーク」、「サブネット」は上記で作成したものを選択します。

|![2-6-2ST.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/13f4ce16-60ee-765e-788b-95639ce536d2.png)
|:--|

「Storage Account」作成後、IPアドレス制限を行います。アドレス範囲に「AzureBastionSubnet」の「NSG」で設定したIPアドレスを入力します。

#3. 構築(Azure Files)編
「Azure Files」を作成し、テスト用のファイルをアップロードします。

|![3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/9cfaa091-476c-cd0f-fd32-992ffc96dc09.png)
|:--|

作成した「Storage Account」の左ペインから「ファイル共有」を選択し、「+」ボタンをクリックします。

|![3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/8bcc2f5d-035b-35db-7ad7-b3aa8190b686.png)
|:--|

ファイル共有名(今回は'exampeshare')を入力し「作成」ボタンをクリックして作成されます。

|![3-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/59bd0606-9b4f-ed2a-c8ef-6c20d6e1fc58.png)
|:--|

作成された「Azure Files」に「アップロード」ボタンをクリックしファイル(今回は'samplefile.txt')をアップロードします。

#4. テスト
「Azure Files」に格納されたファイルを「Azure VM」へコピーする方法を紹介します。

|![4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/68ac0fdf-1763-9634-e75d-ed2984fd1f63.png)
|:--|

「Azure Files」のファイル共有から「接続」ボタンをクリックします。右側にスクリプトが表示されるのでコピーします。その後、「Bastion」経由で「Azure VM」にログインし、「Power Shell」を開きます。

|![4-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/189c3503-8e27-eb03-1483-a2d5a5fa3645.png)
|:--|

「Power Shell」にスクリプトを張り付け実行します。すると、「Z」ドライブが作成され「Azure Files」とファイル共有されます。
その後、ファイルをダウンロードし無事に開くことが出来ました。
Azure Files関連の参考記事は最後にまとめています。

#5. おわりに
本記事を最後まで読んで頂きましてありがとうございます。
どのプロジェクトでもよく使うパターンになるとおもいますので参考になれば幸いです。

#6. 参考記事
- [NSG アクセスと Azure Bastion を使用する](https://docs.microsoft.com/ja-jp/azure/bastion/bastion-nsg)
- [クイックスタート: Windows Virtual Machines で Azure のファイル共有を作成して管理する](https://docs.microsoft.com/ja-jp/azure/storage/files/storage-files-quick-create-use-windows)
- [SMB Azure ファイル共有を Windows でマウントする](https://docs.microsoft.com/ja-jp/azure/storage/files/storage-how-to-use-files-windows)