クイックスタート: Azure CLI を使用して Azure Virtual Network Manager でメッシュ ネットワーク トポロジを作成する
すべての仮想ネットワークの接続を管理するため、Azure CLI で Azure Virtual Network Manager を使用する方法を説明します。
このクイックスタートでは、3 つの仮想ネットワークをデプロイし、Azure Virtual Network Manager を使用してメッシュ ネットワーク トポロジを作成します。 次に、接続構成が適用されたことを確認します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- 最新の Azure CLI。またはポータルで Azure Cloud Shell を使用することもできます。
- Azure Virtual Network Manager 拡張機能。 これを追加するには、
az extension add -n virtual-network-manager
を実行します。 - 動的ネットワーク グループを変更するには、アクセス権の付与が Azure RBAC ロールの割り当てのみを使用して行われている必要があります。 従来の管理者/レガシ承認はサポートされていません。
Azure アカウントにサインインしてサブスクリプションを選択する
構成を始めるには、Azure アカウントにサインインします。 Cloud Shell の試してみる機能を使用している場合は、自動的にサインインします。
az login
Virtual Network Manager がデプロイされるサブスクリプションを選びます。
az account set \
--subscription "<subscription_id>"
Azure CLI 用の Virtual Network Manager 拡張機能を更新します。
az extension update --name virtual-network-manager
リソース グループを作成する
Azure Virtual Network Manager をデプロイする前に、az group create を使用して、そのホストとなるリソース グループを作成する必要があります。 次の例では、myAVNMResourceGroup という名前のリソース グループを米国西部の場所に作成します。
az group create \
--name "myAVNMResourceGroup" \
--location "westus"
Virtual Network Manager インスタンスを作成する
この Virtual Network Manager インスタンスのスコープとアクセスの種類を定義します。 az network manager create を使用してスコープを作成します。 値 <subscription_id>
を、Virtual Network Manager で仮想ネットワークを管理するサブスクリプションに置き換えます。 <mgName\>
を、管理する管理グループに置き換えます。
az network manager create \
--location "westus" \
--name "myAVNM" \
--resource-group "myAVNMResourceGroup" \
--scope-accesses "Connectivity" "SecurityAdmin" \
--network-manager-scopes subscriptions="/subscriptions/<subscription_id>"
ネットワーク グループを作成する
Virtual Network Manager では、ネットワーク グループに仮想ネットワークを配置して、仮想ネットワークのグループに構成を適用します。 az network manager group create を使用して、ネットワーク グループを作成します。
az network manager group create \
--name "myNetworkGroup" \
--network-manager-name "myAVNM" \
--resource-group "myAVNMResourceGroup" \
--description "Network Group for Production virtual networks"
仮想ネットワークを作成する
az network vnet create を使用して、5 つの仮想ネットワークを作成します。 この例では、VNetA、VNetB、VNetC、VNetD という名前の仮想ネットワークを米国西部の場所に作成します。 各仮想ネットワークには、動的メンバーシップに使用される networkType
のタグがあります。 作成するメッシュ ネットワークに含める仮想ネットワークが既にある場合は、次のセクションに進めます。
az network vnet create \
--name "VNetA" \
--resource-group "myAVNMResourceGroup" \
--address-prefix "10.0.0.0/16" \
--tags "NetworkType=Prod"
az network vnet create \
--name "VNetB" \
--resource-group "myAVNMResourceGroup" \
--address-prefix "10.1.0.0/16" \
--tags "NetworkType=Prod"
az network vnet create \
--name "VNetC" \
--resource-group "myAVNMResourceGroup" \
--address-prefix "10.2.0.0/16" \
--tags "NetworkType=Prod"
az network vnet create \
--name "VNetD" \
--resource-group "myAVNMResourceGroup" \
--address-prefix "10.3.0.0/16" \
--tags "NetworkType=Test"
az network vnet create \
--name "VNetE" \
--resource-group "myAVNMResourceGroup" \
--address-prefix "10.4.0.0/16" \
--tags "NetworkType=Test"
各仮想ネットワークにサブネットを追加します。
/24 サブネットをそれぞれに追加して、仮想ネットワークの構成を完了します。 az network vnet subnet create を使用して default という名前のサブネット構成を作成します。
az network vnet subnet create \
--name "default" \
--resource-group "myAVNMResourceGroup" \
--vnet-name "VNetA" \
--address-prefix "10.0.0.0/24"
az network vnet subnet create \
--name "default" \
--resource-group "myAVNMResourceGroup" \
--vnet-name "VNetB" \
--address-prefix "10.1.0.0/24"
az network vnet subnet create \
--name "default" \
--resource-group "myAVNMResourceGroup" \
--vnet-name "VNetC" \
--address-prefix "10.2.0.0/24"
az network vnet subnet create \
--name "default" \
--resource-group "myAVNMResourceGroup" \
--vnet-name "VNetD" \
--address-prefix "10.3.0.0/24"
az network vnet subnet create \
--name "default" \
--resource-group "myAVNMResourceGroup" \
--vnet-name "VNetE" \
--address-prefix "10.4.0.0/24"
メッシュ構成のメンバーシップを定義する
Azure Virtual Network Manager を使用すると、ネットワーク グループにメンバーシップを追加するために 2 つの方法を使用できます。 静的メンバーシップでは仮想ネットワークを手動で追加し、動的メンバーシップでは Azure Policy を使用して、条件に基づいて仮想ネットワークを動的に追加します。 メッシュ構成メンバーシップに対して実行するオプションを選択します。
静的メンバーシップ オプション
静的メンバーシップを使用して、az network manager group static-member create で、メッシュ構成用の 3 つの仮想ネットワークをネットワーク グループに手動で追加します。 <subscription_id>
を、これらの仮想ネットワークが作成されたときのサブスクリプションに置き換えます。
az network manager group static-member create \
--name "VNetA" \
--network-group "myNetworkGroup" \
--network-manager "myAVNM" \
--resource-group "myAVNMResourceGroup" \
--resource-id "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualnetworks/VNetA"
az network manager group static-member create \
--name "VNetB" \
--network-group "myNetworkGroup" \
--network-manager "myAVNM" \
--resource-group "myAVNMResourceGroup" \
--resource-id "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualnetworks/VNetB"
az network manager group static-member create \
--name "VNetC" \
--network-group "myNetworkGroup" \
--network-manager "myAVNM" \
--resource-group "myAVNMResourceGroup" \
--resource-id "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualnetworks/VNetC"
動的メンバーシップ オプション
Azure Policy を使用すると、networkType
値が Prod
である 3 つの仮想ネットワークをネットワーク グループに動的に追加できます。 これら 3 つの仮想ネットワークは、メッシュ構成の一部になります。
ポリシーはサブスクリプションまたは管理グループに適用でき、ポリシーは常に、それらを作成したレベル "以上で" 定義する必要があります。 ポリシー スコープ内の仮想ネットワークのみがネットワーク グループに追加されます。
ポリシー定義を作成する
ポリシー定義は、Prod
としてタグ付けされた仮想ネットワークに対して az policy definition create を使用して作成します。 <subscription_id>
を、このポリシーを適用するサブスクリプションに置き換えます。 これを管理グループに適用する場合は、--subscription <subscription_id>
を --management-group <mgName>
に置き換えます。
az policy definition create \
--name "ProdVNets" \
--description "Choose Prod virtual networks only" \
--rules "{\"if\":{\"allOf\":[{\"field\":\"Name\",\"contains\":\"VNet\"},{\"field\":\"tags['NetworkType']\",\"equals\":\"Prod\"}]},\"then\":{\"effect\":\"addToNetworkGroup\",\"details\":{\"networkGroupId\":\"/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup\"}}}" \
--subscription <subscription_id> \
--mode "Microsoft.Network.Data"
ポリシー定義を適用する
ポリシーを定義したら、az policy assignment create を使用して適用する必要があります。 <subscription_id>
を、このポリシーを適用するサブスクリプションに置き換えます。 管理グループに適用する場合は、--scope "/subscriptions/<subscription_id>"
を --scope "/providers/Microsoft.Management/managementGroups/<mgName>
に置き換え、<mgName\>
を管理グループに置き換えます。
az policy assignment create \
--name "ProdVNets" \
--description "Take only virtual networks tagged NetworkType:Prod" \
--scope "/subscriptions/<subscription_id>" \
--policy "/subscriptions/<subscription_id>/providers/Microsoft.Authorization/policyDefinitions/ProdVNets"
構成を作成する
ネットワーク グループを作成し、そこに適切な仮想ネットワークを指定したので、az network manager connect-config create を使用してメッシュ ネットワーク トポロジ構成を作成します。 <subscription_id>
をサブスクリプションで置き換えます。
az network manager connect-config create \
--configuration-name "connectivityconfig" \
--description "Production Mesh Connectivity Config Example" \
--applies-to-groups network-group-id="/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup" \
--connectivity-topology "Mesh" \
--network-manager-name "myAVNM" \
--resource-group "myAVNMResourceGroup"
デプロイをコミットする
構成を有効にするには、az network manager post-commit を使用して、ターゲット リージョンに構成をコミットします。
az network manager post-commit \
--network-manager-name "myAVNM" \
--commit-type "Connectivity" \
--configuration-ids "/subscriptions/<subscription_id>/resourceGroups/myANVMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/connectivityConfigurations/connectivityconfig" \
--target-locations "westus" \
--resource-group "myAVNMResourceGroup"
構成を確認する
az network manager list-effective-connectivity-config を使うと、仮想ネットワークに適用されている構成が表示されます。
az network manager list-effective-connectivity-config \
--resource-group "myAVNMResourceGroup" \
--virtual-network-name "VNetA"
az network manager list-effective-connectivity-config \
--resource-group "myAVNMResourceGroup" \
--virtual-network-name "VNetB"
az network manager list-effective-connectivity-config \
--resource-group "myAVNMResourceGroup" \
--virtual-network-name "VNetC"
az network manager list-effective-connectivity-config \
--resource-group "myAVNMResourceGroup" \
--virtual-network-name "VNetD"
接続構成の一部である仮想ネットワークの場合、次の例のような出力が表示されます。
{
"skipToken": "",
"value": [
{
"appliesToGroups": [
{
"groupConnectivity": "None",
"isGlobal": "False",
"networkGroupId": "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup",
"useHubGateway": "False"
}
],
"configurationGroups": [
{
"description": "Network Group for Production virtual networks",
"id": "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup",
"provisioningState": "Succeeded",
"resourceGroup": "myAVNMResourceGroup"
}
],
"connectivityTopology": "Mesh",
"deleteExistingPeering": "False",
"description": "Production Mesh Connectivity Config Example",
"hubs": [],
"id": "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/connectivityConfigurations/connectivityconfig",
"isGlobal": "False",
"provisioningState": "Succeeded",
"resourceGroup": "myAVNMResourceGroup"
}
]
}
ネットワーク グループの一部ではない VnetD のような仮想ネットワークの場合、次の例のような出力が表示されます。
az network manager list-effective-connectivity-config --resource-group "myAVNMResourceGroup" --virtual-network-name "VNetD-test"
{
"skipToken": "",
"value": []
}
リソースをクリーンアップする
Azure Virtual Network Manager インスタンスが不要になった場合は、リソースを削除する前に、次のすべての点が当てはまることを確認してください。
- どのリージョンにも構成のデプロイはありません。
- すべての構成が削除されました。
- すべてのネットワーク グループが削除されました。
リソースを削除するには:
az network manager post-commit を使用して、構成をコミットせずに接続のデプロイを削除します。
az network manager post-commit \ --network-manager-name "myAVNM" \ --commit-type "Connectivity" \ --target-locations "westus" \ --resource-group "myAVNMResourceGroup"
az network manager connect-config delete を使用して、接続の構成を削除します。
az network manager connect-config delete \ --configuration-name "connectivityconfig" \ --name "myAVNM" \ --resource-group "myAVNMResourceGroup"
az network manager group delete を使用して、ネットワーク グループを削除します。
az network manager group delete \ --name "myNetworkGroup" \ --network-manager-name "myAVNM" \ --resource-group "myAVNMResourceGroup"
az network manager delete を使用して、ネットワーク マネージャーのインスタンスを削除します。
az network manager delete \ --name "myAVNM" \ --resource-group "myAVNMResourceGroup"
作成したリソースが不要になったら、az group delete を使用してリソース グループを削除します。
az group delete \ --name "myAVNMResourceGroup"
次のステップ
Azure Virtual Network Manager インスタンスを作成したら、セキュリティ管理者の構成を使用してネットワーク トラフィックをブロックする方法について確認します。