次の方法で共有


クイックスタート: Azure CLI を使用して Azure Virtual Network Manager でメッシュ ネットワーク トポロジを作成する

すべての仮想ネットワークの接続を管理するため、Azure CLI で Azure Virtual Network Manager を使用する方法を説明します。

このクイックスタートでは、3 つの仮想ネットワークをデプロイし、Azure Virtual Network Manager を使用してメッシュ ネットワーク トポロジを作成します。 次に、接続構成が適用されたことを確認します。

メッシュ仮想ネットワーク トポロジ用に 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 つの仮想ネットワークを作成します。 この例では、VNetAVNetBVNetCVNetD という名前の仮想ネットワークを米国西部の場所に作成します。 各仮想ネットワークには、動的メンバーシップに使用される 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 インスタンスが不要になった場合は、リソースを削除する前に、次のすべての点が当てはまることを確認してください。

  • どのリージョンにも構成のデプロイはありません。
  • すべての構成が削除されました。
  • すべてのネットワーク グループが削除されました。

リソースを削除するには:

  1. az network manager post-commit を使用して、構成をコミットせずに接続のデプロイを削除します。

    az network manager post-commit \
        --network-manager-name "myAVNM" \
        --commit-type "Connectivity" \
        --target-locations "westus" \
        --resource-group "myAVNMResourceGroup"
    
  2. az network manager connect-config delete を使用して、接続の構成を削除します。

    az network manager connect-config delete \
        --configuration-name "connectivityconfig" \
        --name "myAVNM" \
        --resource-group "myAVNMResourceGroup"
    
  3. az network manager group delete を使用して、ネットワーク グループを削除します。

    az network manager group delete \
        --name "myNetworkGroup" \
        --network-manager-name "myAVNM" \
        --resource-group "myAVNMResourceGroup"
    
  4. az network manager delete を使用して、ネットワーク マネージャーのインスタンスを削除します。

    az network manager delete \
        --name "myAVNM" \
        --resource-group "myAVNMResourceGroup"
    
  5. 作成したリソースが不要になったら、az group delete を使用してリソース グループを削除します。

    az group delete \
        --name "myAVNMResourceGroup"
    

次のステップ

Azure Virtual Network Manager インスタンスを作成したら、セキュリティ管理者の構成を使用してネットワーク トラフィックをブロックする方法について確認します。