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.
Attività iniziali con Gestione rete virtuale di Azure tramite Bicep per la gestione della connettività di 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 nell'elenco seguente sono i componenti univoci per programma di traduzione. Oltre alle sezioni descritte nell'elenco seguente, la soluzione distribuisce reti virtuali, un'identità assegnata dall'utente e un'assegnazione di ruolo.
Rete virtuale Manager, gruppi di rete e configurazioni di connettività
Gestione reti virtuali
@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
Questa 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 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 di 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 al gruppo di rete di destinazione, utilizzare uno script di distribuzione che richiama il comando PowerShell Deploy-AzNetworkManagerCommit. Lo script di distribuzione richiede un'identità con autorizzazioni sufficienti per eseguire lo script di PowerShell sul programma di traduzione. Il file Bicep crea un'identità gestita dall'utente e le assegna il ruolo Contributor nel gruppo di risorse di destinazione. Per ulteriori informazioni sugli script di distribuzione e sulle identità associate, vedere Usare gli script di distribuzione nei modelli ARM.
@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 si configura la distribuzione in modo da utilizzare l'appartenenza al gruppo di rete dynamic, la soluzione distribuisce anche una definizione di Criteri di Azure e un'assegnazione. Nell'esempio seguente viene illustrata la definizione dei criteri.
@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 necessarie per creare una definizione di criteri e un'assegnazione di criteri nell'ambito della sottoscrizione di destinazione. Queste autorizzazioni sono necessarie quando si usa il parametro
networkGroupMembershipType=Dynamicdi distribuzione per distribuire le risorse dei criteri necessarie per l'appartenenza al gruppo di rete. Il valore predefinito èstatic, che non distribuisce alcuna Policy. - Tutte le risorse in questa soluzione sono disponibili nel repository GitHub Azure Samples. È possibile scaricare la soluzione Bicep dal repository o clonare il repository nel computer locale.
Scaricare la soluzione Bicep
- Scaricare un archivio ZIP del repository di esempio in questo collegamento.
- Estrarre il file ZIP scaricato. Nel terminale, vai nella directory estratta
avnm-mesh-connected-group. I file Bicep per questa soluzione si trovano nellabicepsottodirectory .
In alternativa, è possibile usare git per clonare il repository:
git clone https://github.com/Azure-Samples/avnm-mesh-connected-group
cd avnm-mesh-connected-group
Connettersi ad Azure
Accedere al proprio account Azure e selezionare la sottoscrizione
Per iniziare la configurazione, accedere al proprio 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] Nome del gruppo di risorse in cui si vuole distribuire gestione rete virtuale e reti virtuali di esempio.
- location: [obbligatorio] Percorso delle risorse da distribuire.
-
networkGroupMembershipType: [facoltativo] Tipo di appartenenza al gruppo di rete da distribuire. Il valore predefinito è
static, ma è possibile usare per l'appartenenzadynamicdinamica ai gruppi.
Note
La scelta dell'appartenenza dinamica ai gruppi distribuisce un Criteri di Azure per gestire l'appartenenza, che richiede più autorizzazioni.
Distribuzione predefinita con appartenenza al gruppo di rete statico
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup>
Distribuzione con appartenenza dinamica al gruppo di rete
Per usare Criteri di Azure per gestire in modo dinamico l'appartenenza al gruppo di rete, includere il parametro networkGroupMembershipType di distribuzione con il valore dynamic.
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup> -networkGroupMembershipType dynamic
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 di 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 non sono più necessari gestione rete virtuale di Azure e le reti virtuali associate, rimuoverle eliminando il gruppo di risorse e le relative risorse.
- Nel portale di Azure passare al gruppo di risorse - resource-group.
- Selezionare resource-group e selezionare Elimina gruppo di risorse.
- In 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 Policyed eliminarla, quindi eseguire la stessa operazione per la definizione denominataAVNM quickstart dynamic group membership Policy.
Passaggi successivi
Dopo aver creato un'istanza di gestione rete virtuale di Azure, informazioni su come bloccare il traffico di rete usando una configurazione di amministratore della sicurezza: