Rövid útmutató: Hálós hálózati topológia létrehozása az Azure Virtual Network Managerrel a Bicep használatával

Ismerkedés az Azure Virtual Network Managerrel a Bicep használatával az összes virtuális hálózat kapcsolatainak kezeléséhez.

Ebben a rövid útmutatóban három virtuális hálózatot helyez üzembe, és az Azure Virtual Network Manager használatával létrehoz egy hálós hálózati topológiát. Ezután ellenőrizze, hogy a kapcsolatkonfiguráció alkalmazva lett-e.

Az Azure Virtual Network Managerrel egy hálós virtuális hálózati topológiához üzembe helyezett erőforrások diagramja.

Bicep fájl modulok

A minta Bicep-megoldása modulokra van bontva, amelyek lehetővé teszik az üzemelő példányokat az erőforráscsoportban és az előfizetés hatókörében is. Az alábbi fájlszakaszok a Virtual Network Manager egyedi összetevői. Az alábbi szakaszokon kívül a megoldás üzembe helyezi a virtuális hálózatokat, a felhasználó által hozzárendelt identitást és egy szerepkör-hozzárendelést.

Virtual Network Manager, hálózati csoportok és kapcsolatkonfigurációk

Virtuális Hálózatkezelő

@description('This is the Azure Virtual Network Manager which will be used to implement the connected group for inter-vnet connectivity.')
resource networkManager 'Microsoft.Network/networkManagers@2022-09-01' = {
  name: 'vnm-learn-prod-${location}-001'
  location: location
  properties: {
    networkManagerScopeAccesses: [
      'Connectivity'
    ]
    networkManagerScopes: {
      subscriptions: [
        '/subscriptions/${subscription().subscriptionId}'
      ]
      managementGroups: []
    }
  }
}

Hálózati csoportok

A megoldás támogatja a statikus tagságú hálózati csoportok vagy a dinamikus tagságú hálózati csoportok létrehozását. A statikus tagsági hálózati csoport virtuális hálózati azonosító alapján határozza meg a tagjait

Statikus tagsági hálózati csoport

@description('This is the static network group for the all VNETs.')
resource networkGroupSpokesStatic 'Microsoft.Network/networkManagers/networkGroups@2022-09-01' = if (networkGroupMembershipType == 'static') {
  name: 'ng-learn-prod-${location}-static001'
  parent: networkManager
  properties: {
    description: 'Network Group - Static'
  }

  // add spoke vnets A, B, and C to the static network group
  resource staticMemberSpoke 'staticMembers@2022-09-01' = [for spokeMember in spokeNetworkGroupMembers: if (contains(groupedVNETs,last(split(spokeMember,'/')))) {
    name: 'sm-${(last(split(spokeMember, '/')))}'
    properties: {
      resourceId: spokeMember
    }
  }]

  resource staticMemberHub 'staticMembers@2022-09-01' = {
    name: 'sm-${(toLower(last(split(hubVnetId, '/'))))}'
    properties: {
      resourceId: hubVnetId
    }
  }
}

Dinamikus tagsági hálózati csoport

@description('This is the dynamic group for all VNETs.')
resource networkGroupSpokesDynamic 'Microsoft.Network/networkManagers/networkGroups@2022-09-01' = if (networkGroupMembershipType == 'dynamic') {
  name: 'ng-learn-prod-${location}-dynamic001'
  parent: networkManager
  properties: {
    description: 'Network Group - Dynamic'
  }
}

Kapcsolatkonfiguráció

A Kapcsolatkonfiguráció a hálózati csoportot a megadott hálózati topológiához társítja.

@description('This connectivity configuration defines the connectivity between VNETs using Direct Connection. The hub will be part of the mesh, but gateway routes from the hub will not propagate to spokes.')
resource connectivityConfigurationMesh 'Microsoft.Network/networkManagers/connectivityConfigurations@2022-09-01' = {
  name: 'cc-learn-prod-${location}-mesh001'
  parent: networkManager
  properties: {
    description: 'Mesh connectivity configuration'
    appliesToGroups: [
      {
        networkGroupId: (networkGroupMembershipType == 'static') ? networkGroupSpokesStatic.id : networkGroupSpokesDynamic.id
        isGlobal: 'False'
        useHubGateway: 'False'
        groupConnectivity: 'DirectlyConnected'
      }
    ]
    connectivityTopology: 'Mesh'
    deleteExistingPeering: 'True'
    hubs: []
    isGlobal: 'False'
  }
}

Üzembehelyezési szkript

A konfiguráció célhálózati csoportban való üzembe helyezéséhez a PowerShell-parancs meghívásához Deploy-AzNetworkManagerCommit egy üzembehelyezési szkriptet használunk. Az üzembehelyezési szkriptnek olyan identitásra van szüksége, amely rendelkezik a PowerShell-szkript Virtual Network Manageren való végrehajtásához szükséges engedélyekkel, így a Bicep-fájl létrehoz egy felhasználó által felügyelt identitást, és megadja neki a "Közreműködő" szerepkört a célerőforrás-csoportban. Az üzembehelyezési szkriptekkel és a társított identitásokkal kapcsolatos további információkért lásd : Üzembehelyezési szkriptek használata ARM-sablonokban.

@description('Create a Deployment Script resource to perform the commit/deployment of the Network Manager connectivity configuration.')
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
  name: deploymentScriptName
  location: location
  kind: 'AzurePowerShell'
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentityId}': {}
    }
  }
  properties: {
    azPowerShellVersion: '8.3'
    retentionInterval: 'PT1H'
    timeout: 'PT1H'
    arguments: '-networkManagerName "${networkManagerName}" -targetLocations ${location} -configIds ${configurationId} -subscriptionId ${subscription().subscriptionId} -configType ${configType} -resourceGroupName ${resourceGroup().name}'
    scriptContent: '''
    param (
      # AVNM subscription id
      [parameter(mandatory=$true)][string]$subscriptionId,

      # AVNM resource name
      [parameter(mandatory=$true)][string]$networkManagerName,

      # string with comma-separated list of config ids to deploy. ids must be of the same config type
      [parameter(mandatory=$true)][string[]]$configIds,

      # string with comma-separated list of deployment target regions
      [parameter(mandatory=$true)][string[]]$targetLocations,

      # configuration type to deploy. must be either connectivity or securityadmin
      [parameter(mandatory=$true)][ValidateSet('Connectivity','SecurityAdmin')][string]$configType,

      # AVNM resource group name
      [parameter(mandatory=$true)][string]$resourceGroupName
    )
  
    $null = Login-AzAccount -Identity -Subscription $subscriptionId
  
    [System.Collections.Generic.List[string]]$configIdList = @()  
    $configIdList.addRange($configIds) 
    [System.Collections.Generic.List[string]]$targetLocationList = @() # target locations for deployment
    $targetLocationList.addRange($targetLocations)     
    
    $deployment = @{
        Name = $networkManagerName
        ResourceGroupName = $resourceGroupName
        ConfigurationId = $configIdList
        TargetLocation = $targetLocationList
        CommitType = $configType
    }
  
    try {
      Deploy-AzNetworkManagerCommit @deployment -ErrorAction Stop
    }
    catch {
      Write-Error "Deployment failed with error: $_"
      throw "Deployment failed with error: $_"
    }
    '''
    }
}

Dinamikus hálózati csoporttagsági szabályzat

Ha az üzembe helyezés hálózati csoporttagság használatára dynamic van konfigurálva, a megoldás üzembe helyez egy Azure Policy-definíciót és -hozzárendelést is. A szabályzatdefiníció alább látható.

@description('This is a Policy definition for dynamic group membership')
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2021-06-01' = {
  name: uniqueString(networkGroupId)
  properties: {
    description: 'AVNM quickstart dynamic group membership Policy'
    displayName: 'AVNM quickstart dynamic group membership Policy'
    mode: 'Microsoft.Network.Data'
    policyRule: {
      if: {
        allof: [
          {
            field: 'type'
            equals: 'Microsoft.Network/virtualNetworks'
          }
          {
            // virtual networks must have a tag where the key is '_avnm_quickstart_deployment'
            field: 'tags[_avnm_quickstart_deployment]'
            exists: true
          }
          {
            // virtual network ids must include this sample's resource group ID - limiting the chance that dynamic membership impacts other vnets in your subscriptions
            field: 'id'
            like: '${subscription().id}/resourcegroups/${resourceGroupName}/*'
          }
        ]
      }
      then: {
        // 'addToNetworkGroup' is a special effect used by AVNM network groups
        effect: 'addToNetworkGroup'
        details: {
          networkGroupId: networkGroupId
        }
      }
    }
  }
}

A Bicep-megoldás üzembe helyezése

Üzembe helyezés előfeltételei

  • Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
  • Szabályzatdefiníció és szabályzat-hozzárendelés létrehozásához szükséges engedélyek a cél-előfizetés hatókörében (erre akkor van szükség, ha az üzembehelyezési paraméter networkGroupMembershipType=Dynamic használatával telepíti a hálózati csoporttagsághoz szükséges házirend-erőforrásokat. Az alapértelmezett érték az static, amely nem helyez üzembe házirendet.

A Bicep-megoldás letöltése

  1. Töltse le az MSPNP-adattár Zip-archívumát ezen a linken
  2. Bontsa ki a letöltött Zip-fájlt, és keresse meg a könyvtárat a solutions/avnm-mesh-connected-group/bicep terminálban.

Azt is megteheti git , hogy klónozza az adattárat a következővel: git clone https://github.com/mspnp/samples.git

Csatlakozás az Azure szolgáltatáshoz

Jelentkezzen be az Azure-fiókjába, és válassza ki az előfizetését

A konfiguráció megkezdéséhez jelentkezzen be az Azure-fiókjába:

Connect-AzAccount

Ezután csatlakozzon az előfizetéséhez:

Set-AzContext -Subscription <subscription name or id>
Az Azure PowerShell-modul telepítése

Telepítse a legújabb Az.Network Azure PowerShell-modult a következő paranccsal:

 Install-Module -Name Az.Network -RequiredVersion 5.3.0

Üzembehelyezési paraméterek

  • resourceGroupName: [kötelező] Ez a paraméter annak az erőforráscsoportnak a nevét adja meg, amelyben a virtuális hálózatkezelő és a minta virtuális hálózatok üzembe lesznek helyezve.
  • hely: [kötelező] Ez a paraméter határozza meg az üzembe helyezendő erőforrások helyét.
  • networkGroupMembershipType: [nem kötelező] Ez a paraméter határozza meg az üzembe helyezendő hálózati csoporttagság típusát. Az alapértelmezett érték az static, de a dinamikus csoporttagság a megadásával dynamichasználható.

Feljegyzés

A dinamikus csoporttagság kiválasztása egy Azure-szabályzatot helyez üzembe a tagság kezeléséhez, amelyhez további engedélyekre van szükség.

    $templateParameterObject = @{
        'location' = '<resourceLocation>'
        'resourceGroupName' = '<newOrExistingResourceGroup>'
    }
    New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject

Konfiguráció üzembe helyezésének ellenőrzése

Az egyes virtuális hálózatokHoz tartozó Network Manager-szakaszban ellenőrizze, hogy telepítette-e a konfigurációt:

  1. Nyissa meg a vnet-learn-prod-{location}-spoke001 virtuális hálózatot.

  2. A Beállítások területen válassza a Network Manager lehetőséget.

  3. A Kapcsolati konfigurációk lapon ellenőrizze, hogy a cc-learn-prod-{location}-mesh001 megjelenik-e a listában.

    Képernyőkép egy virtuális hálózat kapcsolatkonfigurációjáról.

  4. Ismételje meg az előző lépéseket a (z) vnet-learn-prod-{location}-spoke004 rendszeren. A vnet-learn-prod-{location}-küllő004 nem szerepel a kapcsolati konfigurációban.

Az erőforrások eltávolítása

Ha már nincs szüksége az Azure Virtual Network Managerre és a kapcsolódó virtuális hálózatokra, az erőforráscsoport és az erőforrások törlésével eltávolíthatja azt.

  1. Az Azure Portalon keresse meg az erőforráscsoportot – erőforráscsoportot.
  2. Válassza ki az erőforráscsoportot , és válassza az Erőforráscsoport törlése lehetőséget.
  3. Az erőforráscsoport törlése ablakban erősítse meg, hogy törölni szeretne, ha beírja az erőforráscsoportot a szövegmezőbe, majd válassza a Törlés lehetőséget.
  4. Ha dinamikus hálózati csoporttagságokat használt, törölje az üzembe helyezett Azure Policy-definíciót és -hozzárendelést a portál előfizetéséhez való navigálással és a szabályzatok kiválasztásával. A Szabályzatok területen keresse meg a hozzárendelt hozzárendeléstAVNM quickstart dynamic group membership Policy, és törölje azt, majd végezze el ugyanezt a esetében.

Következő lépések

Most, hogy létrehozott egy Azure Virtual Network Manager-példányt, megtudhatja, hogyan tilthatja le a hálózati forgalmat egy biztonsági rendszergazdai konfigurációval: