Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Introduzione ad Azure Rete virtuale Manager usando Bicep per gestire la connettività per tutte le reti virtuali.
In questa guida di avvio rapido, si distribuiscono tre reti virtuali e si usa Gestione rete virtuale di Azure per creare una topologia di rete mesh. Si verifica quindi che la configurazione della connettività sia stata applicata.
Moduli di file Bicep
La soluzione Bicep per questo esempio è suddivisa in moduli per abilitare le distribuzioni in un gruppo di risorse e in un ambito di sottoscrizione. Le sezioni di file descritte di seguito sono i componenti univoci per Virtual Network Manager. Oltre alle sezioni descritte di seguito, la soluzione distribuisce Rete virtuale, un'identità assegnata dall'utente e un'assegnazione di ruolo.
Rete virtuale Manager, gruppi di rete e configurazioni di connettività
Gestione rete virtuale
@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: []
}
}
}
Gruppi di rete
La soluzione supporta la creazione di gruppi di rete di appartenenza statici o gruppi di rete di appartenenza dinamica. Il gruppo di rete di appartenenza statica specifica i relativi membri in base Rete virtuale ID
Gruppo di rete di appartenenza statica
@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
}
}
}
Gruppo di rete di appartenenza dinamica
@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'
}
}
Configurazione della connettività
La configurazione della connettività associa il gruppo di rete alla topologia di rete specificata.
@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'
}
}
Script di distribuzione
Per distribuire la configurazione nel gruppo di rete di destinazione, viene usato uno script di distribuzione per chiamare il Deploy-AzNetworkManagerCommit
comando di PowerShell. Lo script di distribuzione richiede un'identità con autorizzazioni sufficienti per eseguire lo script di PowerShell in Virtual Network Manager, quindi il file Bicep crea un'identità gestita dall'utente e concede il ruolo "Collaboratore" nel gruppo di risorse di destinazione. Per altre informazioni sugli script di distribuzione e sulle identità associate, vedere Usare gli script di distribuzione nei modelli di Resource Manager.
@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: $_"
}
'''
}
}
Criteri di appartenenza ai gruppi di rete dinamici
Quando la distribuzione è configurata per l'uso dell'appartenenza dynamic
al gruppo di rete, la soluzione distribuisce anche una definizione e un'assegnazione Criteri di Azure. La definizione dei criteri è illustrata di seguito.
@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
}
}
}
}
}
Distribuire la soluzione Bicep
Prerequisiti di distribuzione
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Autorizzazioni per creare una definizione di criteri e un'assegnazione di criteri nell'ambito della sottoscrizione di destinazione. Questa operazione è necessaria quando si usa il parametro
networkGroupMembershipType=Dynamic
di distribuzione per distribuire le risorse dei criteri necessarie per l'appartenenza al gruppo di rete. Il valore predefinito èstatic
, che non distribuisce un criterio.
Scaricare la soluzione Bicep
- Scaricare un archivio ZIP del repository MSPNP in questo collegamento
- Estrarre il file ZIP scaricato e nel terminale passare alla
solutions/avnm-mesh-connected-group/bicep
directory.
In alternativa, è possibile usare git
per clonare il repository con git clone https://github.com/mspnp/samples.git
Connettersi ad Azure
Accedere al proprio account Azure e selezionare la sottoscrizione
Per iniziare la configurazione, accedere all'account Azure:
Connect-AzAccount
Connettersi quindi alla sottoscrizione:
Set-AzContext -Subscription <subscription name or id>
Installare il modulo Azure PowerShell
Installare il modulo Az.Network di Azure PowerShell più recente usando questo comando:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Parametri di distribuzione
- resourceGroupName: [obbligatorio] Questo parametro specifica il nome del gruppo di risorse in cui verrà distribuito il gestore di rete virtuale e le reti virtuali di esempio.
- location: [obbligatorio] Questo parametro specifica il percorso delle risorse da distribuire.
-
networkGroupMembershipType: [facoltativo] Questo parametro specifica il tipo di appartenenza al gruppo di rete da distribuire. Il valore predefinito è
static
, ma l'appartenenza dinamica al gruppo può essere usata specificandodynamic
.
Nota
La scelta dell'appartenenza dinamica ai gruppi distribuisce un Criteri di Azure per gestire l'appartenenza, richiedendo più autorizzazioni.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Verificare la distribuzione della configurazione
Usare la sezione Gestione rete per ogni rete virtuale per verificare che la configurazione sia stata distribuita:
Passare alla rete virtuale vnet-learn-prod-{location}-spoke001 .
In Impostazioni, selezionare Gestione rete.
Nella scheda Configurazioni connettività verificare che cc-learn-prod-{location}-mesh001 venga visualizzato nell'elenco.
Ripetere i passaggi precedenti in vnet-learn-prod-{location}-spoke004--si noterà che vnet-learn-prod -{location}-spoke004 è escluso dalla configurazione della connettività.
Pulire le risorse
Se Azure Rete virtuale Manager e le reti virtuali associate non sono più necessari, è possibile rimuoverlo eliminando il gruppo di risorse e le relative risorse.
- Nella portale di Azure passare al gruppo di risorse - gruppo di risorse.
- Selezionare gruppo di risorse e selezionare Elimina gruppo di risorse.
- Nella finestra Elimina un gruppo di risorse verificare di voler eliminare immettendo il gruppo di risorse nella casella di testo e quindi selezionare Elimina.
- Se è stata usata l'appartenenza dinamica al gruppo di rete, eliminare la definizione e l'assegnazione di Criteri di Azure distribuite passando alla sottoscrizione nel portale e selezionando i criteri. In Criteri trovare l'assegnazione denominata
AVNM quickstart dynamic group membership Policy
ed eliminarla, quindi eseguire la stessa operazione per la definizione denominataAVNM quickstart dynamic group membership Policy
.
Passaggi successivi
Dopo aver creato un'istanza di Azure Rete virtuale Manager, vedere come bloccare il traffico di rete usando una configurazione di amministratore della sicurezza: