빠른 시작: Azure CLI를 사용하여 Azure Virtual Network Manager에서 메시 네트워크 토폴로지 만들기

모든 가상 네트워크 연결을 관리하기 위해 Azure CLI를 사용하여 Azure Virtual Network Manager를 시작합니다.

이 빠른 시작에서는 세 개의 가상 네트워크를 배포하고 Azure Virtual Network Manager를 사용하여 메시 네트워크 토폴로지를 만듭니다. 그런 다음, 연결 구성이 적용되었는지 확인합니다.

Azure 가상 네트워크 관리자를 사용하여 메시 가상 네트워크 토폴로지에 배포된 리소스의 다이어그램.

필수 조건

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, VNetCVNetD라는 가상 네트워크를 만듭니다. 각 가상 네트워크에는 동적 멤버 자격에 사용되는 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를 사용하면 네트워크 그룹에 멤버 자격을 추가하는 데 두 가지 방법을 사용할 수 있습니다. 정적 멤버 자격에는 가상 네트워크를 수동으로 추가하는 작업이 포함되며 동적 멤버 자격에는 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개는 메시 구성의 일부가 됩니다.

정책을 구독이나 관리 그룹에 적용할 수 있으며 정책을 만드는 수준 이상에서 정책을 정의해야 합니다. 정책 범위 내의 가상 네트워크만 네트워크 그룹에 추가됩니다.

정책 정의 만들기

az policy definition create를 사용하여 Prod 태그가 지정된 가상 네트워크의 정책 정의를 만듭니다. <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 인스턴스를 만들었으므로 이제 보안 관리자 구성을 사용하여 네트워크 트래픽을 차단하는 방법에 대해 알아봅니다.