Azure Virtual Network Managerで何ができるのか調べてみたら結構便利そうだった

## Azure Virtual Network Managerとは
[公式ドキュメント](https://learn.microsoft.com/ja-jp/azure/virtual-network-manager/overview)より

> Azure Virtual Network Manager は、サブスクリプション全体でグローバルに仮想ネットワークをグループ化、構成、デプロイ、管理できる管理サービスです。 Virtual Network Manager では、ネットワーク グループを定義して、仮想ネットワークを識別し、論理的に分割することができます。 次に、必要な接続とセキュリティの構成を決定し、ネットワーク グループ内の選択したすべての仮想ネットワークで一度に適用します。

主な利点は簡単に言うと以下かなと思います
- リージョンやサブスクリプション（マルチテナント可）を跨いだvNet間で、ハブ&スポーク構成とメッシュ構成を簡単にデプロイ、管理できる
    - 今までは各vNet同士でピアリングを構成する必要があった
- ネットワーク セキュリティ グループの規則を上書きするネットワーク セキュリティ規則を作成することができる
    - 各サブネットやNICにそれぞれNSG規則を作成せずにネットワークに対するセキュリティを一元管理できる

2023年3月22日に一部リージョンでGAが発表されました。

https://azure.microsoft.com/en-us/updates/general-availability-azure-virtual-network-manager-3/?WT.mc_id=AZ-MVP-5002153

:::note warn
Azure Virtual Network Manager は現在、Virtual Network Manager とハブ アンド スポークの接続構成で一般提供されています。

メッシュ接続の構成とセキュリティ管理ルールは、パブリック プレビューのままです。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、[Microsoft Azure プレビューの追加使用条件](https://azure.microsoft.com/support/legal/preview-supplemental-terms/)に関するページをご覧ください。

また、使用するリージョンによってもリリースの状態が異なりますのでご確認ください。
https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/?products=virtual-network-manager&regions=all
:::

[ネットワーク構成の参考](https://learn.microsoft.com/ja-jp/azure/architecture/networking/spoke-to-spoke-networking)：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/624378b6-2d51-fbaa-d8c6-9f3dbe34f11c.png)


## 試してみよう

### 前提条件
#### Azure Virtual Network Manager（以下、AVNM）のリソースを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/0f15c2bd-9d17-0c2e-6104-e5d1ba9ce949.png)
- スコープで対象の管理グループかサブスクリプションを選択します
- 機能は「接続」、「セキュリティ管理」を選択できますが、今回はどちらも試したいので両方選択します。

#### 接続対象のvNet群を作成
AVNMはあくまで既存のネットワークを管理するものなので、事前に管理対象のリソースを作成する必要があります。

| 項目 | 設定値① | 設定値② | 設定値③ | 設定値④ |
|:-|:-|:-|:-|:-|
| 名前  |  vNet-A | vNet-B  | vNet-C  | hub-vNet |
| リージョン  | East US  |  East US | East US  | East US  |
| アドレス空間  | 10.0.0.0/16  | 10.1.0.0/16  | 10.2.0.0/16  | 10.3.0.0/16  |
| サブネット名 | subnet-A  | subnet-B  | subnet-C  | subnet-D  |
| サブネットアドレス空間 | 10.0.0.0/24  | 10.1.0.0/24  | 10.2.0.0/24  | 10.3.0.0/24  |
| VM名 | VM-A  | VM-B  | VM-C  |   |
| VM NICアドレス | 10.0.0.4  | 10.1.0.4  | 10.2.0.4 |   |

#### ネットワークグループの作成
ネットワークグループは接続するVNETをグルーピングします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/9fbb4e78-b686-1b95-c715-cfaec8297dbb.png)

グループのメンバーに先程作成したvNetを手動で追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/c7d20d34-eb64-a169-9aa5-1aabca8251e2.png)
※グループメンバーの追加にはAzure Policyを利用した動的な追加方法もあります

https://learn.microsoft.com/ja-jp/azure/virtual-network-manager/concept-azure-policy-integration

### ハブ＆スポーク構成
#### 構成の作成
AVNMのブレードから「構成」⇒「接続構成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/8a8d0f36-8a9a-e83a-ea72-4bbd04d2d114.png)

トポロジで「ハブおよびスポーク」を選択し、ハブに`hub-vNet`を選択
ネットワークグループは先程作成した`test-group`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/6ee5ee67-149e-b6c7-25c3-7de1dae45250.png)

#### デプロイ
「構成」は作成しただけでは適用されず、必ずデプロイする必要があります（構成変更時も同様）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/ba93fbee-82ee-5c6b-7282-c54db89232e4.png)

デプロイが成功すると、各vNetとhub-vNetの間にピアリングが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/46a90779-b55f-cca0-87aa-4ab9e2f0a6dd.png)

#### 疎通確認
VM-AにBastionで接続し、pingを叩いてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/32e1d7c8-83ea-307a-2bc8-a728c4b2981c.png)
B,CのVMに疎通ができていることが分かります。

#### 構成の削除
次にメッシュ構成を試したいので`hun-amd-spoke`構成は削除しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/587f7d97-929f-7eb8-3a66-602535d8121d.png)

### メッシュ構成
#### 構成の作成
トポロジで「メッシュ」を選択し、ネットワークグループは同じく`test-group`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/91686231-9a0b-83b1-22ee-46681d6ff276.png)

#### デプロイ
デプロイはハブ＆スポーク構成の時と同じ

成功すると今回はピアリングが作成されるわけではなく、各vNetの「ネットワークマネージャー」ブレードに接続構成が表示される。
※メッシュ構成はプレビューだからかもしれない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/9e5ca947-53fe-75c2-1d5a-b17c9e5ce13c.png)

#### 疎通確認
結果はハブ＆スポーク構成と同じなので省略

### セキュリティ管理の構成
お次はセキュリティの設定方法をみていきます。

AVNMのブレードから「構成」⇒「セキュリティ管理の構成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/bf65ec2b-14bc-425b-78c9-ec4c5b4563e9.png)

ルールコレクションを作成し、ルールをぶら下げる方式です。
今回は試しにVM-AからVM-Cへのpingを拒否してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/241e024b-eadb-4317-5b32-a07b0a025564.png)


#### デプロイ
セキュリティ構成も接続構成と同じくデプロイが必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/24614883-284a-b49f-e853-bb3b61a328db.png)

デプロイが成功すると、VM側の「ネットワーク」にルールが表示されるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/18ca821a-e8cb-7a4b-c261-deec725a8187.png)


#### 疎通確認
VM-B(10.1.0.4)には疎通ができるが、VM-C(10.2.0.4)には繋がらないことが分かります。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/4ec4430e-29cb-aaa2-40d0-76d1628d9e11.png)

## 最後に
複数のネットワークを接続したり、管理する際に非常に便利に使えそうです。
時間があればテナント間接続なども試してみたいと思います。

以上、参考になれば幸いです。