Azure Managed Diskのネットワーク設定を検討する

主にAzure VMにアタッチして利用することができるAzure Managed Diskですが、Portalの左メニューに[ネットワーク]という項目があります。
Managed Diskにネットワーク設定ってなにかな？と疑問に思ったので、どういった利用用途で活用できるのかを検討してみます。

# デフォルト値
* デフォルトでは以下のように[すべてのネットワークからのパブリックアクセスを有効にする]となっています。
他のPaaSサービスと同様にプライベートエンドポイント経由でのアクセスも選択できそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/d11b6b5f-8cb9-8509-eee4-beda407ef403.png)
* パブリックアクセスが有効というとなんだか気持ちが悪いので、これを無効にするとどういう影響があるのか検証してみます。

# ディスクのエクスポート
* このネットワーク設定を変更することで、[ディスクのエクスポート]に影響があることが分かりました。
    * [Azure Private Link を使用してマネージド ディスクに対するインポートおよびエクスポートのアクセスを制限する](https://learn.microsoft.com/ja-jp/azure/virtual-machines/disks-enable-private-links-for-import-export-portal)
* 次にそれぞれの設定でどのような影響があるのか見ていきます。

## パブリックアクセス有効
* まずはデフォルト設定の場合です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/d11b6b5f-8cb9-8509-eee4-beda407ef403.png)

* 仮想マシンが停止した状態で、Portalの左メニューから[ディスクのエクスポート]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/209d80c0-7dd4-64bf-1e16-b7b13182f7a8.png)

* [URLの生成]を選択します。デフォルトだと1時間有効なSAS URLが生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/759dde02-6687-1f76-9d0d-d28814333086.png)

* こんな感じでSAS URLが生成されるのでここからVHDファイルをダウンロードできるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/51c70999-518c-b9aa-a3f0-5364d4ab3127.png)

:::note warn
警告
SAS URLを生成した場合、認証なしでどこからでもダウンロードできるので注意が必要です。
:::

* [エクスポートのキャンセル]を選択することで、SAS URLを無効にできます。

## プライベートエンドポイント経由のみ
* 次に[パブリック アクセスを無効にし、プライベート アクセスを有効にする]の設定を検証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/60568e3d-c7ef-cffb-fb6c-4ca92e453db2.png)

* Managed Diskに対するプライベートエンドポイントを設定する場合、他のPaaSと違ってディスクアクセスというリソースを作成しなければなりません。Portalから[ディスクアクセス]と入力して選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/2431a493-a568-0a30-daff-096525bb174b.png)

* ディスクアクセス識別子とリージョンを入力し[追加]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/ef3a7e6e-4c64-cf20-2fc8-dde776e85930.png)

* プライベートエンドポイントの設定をします。リージョンやプライベートエンドポイント名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/d70c5313-fb90-5c47-b32f-b3abc4c2ddf1.png)

* プライベートエンドポイントを作成するvNetとサブネットを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/0bc616f9-2c42-7450-8909-980b598d882d.png)

* プライベートDNSゾーンの統合は有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/358198d6-10ae-1492-d4e3-e78254f5c9c5.png)

* 以上の設定でディスクアクセスリソースを作成します。

* [Managed Disk]→[ネットワーク]の画面に戻ると、先ほど作成したディスクアクセスリソースが選択可能になっているので、選択して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/76cfddfb-8420-6438-f9fd-ce5a3c26b71a.png)

* この状態で再度SAS URLを生成してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/12aaceee-2ff3-8ee1-9b7c-23a19861e540.png)

* ブラウザからアクセスしても認証エラーとなることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/8d63496d-8431-f4bc-7b8e-17573f145ef9.png)

* プライベートエンドポイント内のVMからアクセスしてみるとVHDファイルがダウンロードできることを確認しています。

## 無効
* 最後にネットワークアクセスを無効にしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/b20a6512-7552-3146-3e3d-5940344db1f6.png)

* URL生成自体がグレーアウトされSAS URLを発行できなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/bc0bd176-8066-b532-6552-b887e17c70c2.png)

# 気になること
## アクティビティログには記録される？
* SAS URLを発行すると以下のようにアクティビティログに記録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/d168cfa7-dc3a-6c36-91a4-68f3b36db4f8.png)

## Azure Backupは動作する？
* これAzure Backup大丈夫かな？と心配でしたが、プライベートエンドポイント経由のみ、無効、それぞれでAzure Backupが動作することを検証しました。

# まとめ
* 今回エクスポートで検証しましたが、VHDのインポートでもこのネットワーク設定の影響は受けるようです。
* エクスポート/インポートの要件がない場合は、無効にする。要件があった場合でも、プライベートエンドポイント経由にするのがよいかと考えます。

以上です。