Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Comience a utilizar Azure Virtual Network Manager con Bicep para administrar la conectividad de todas sus redes virtuales.
En este artículo de inicio rápido, implementará tres redes virtuales y usará Azure Virtual Network Manager para crear una topología de red de malla. Después, compruebe si se ha aplicado la configuración de conectividad.
La solución Bicep para este ejemplo se divide en módulos para permitir implementaciones tanto a nivel de grupo de recursos como de suscripción. Las siguientes secciones describen los componentes que son únicos de Azure Virtual Network Manager. Además de estos componentes, la solución despliega redes virtuales, una identidad asignada por el usuario y una asignación de roles.
Define el recurso de gestor de red virtual
Este recurso crea la instancia Microsoft.Network/networkManagers, en la versión 2022-09-01 de la API, que implementa el grupo conectado para la conectividad entre redes virtuales. Establece networkManagerScopes en las suscripciones o los grupos de administración que administra la instancia y mantén Connectivity en networkManagerScopeAccesses para que la instancia pueda implementar configuraciones de conectividad.
@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: []
}
}
}
Definición de grupos de red estáticos y dinámicos
La solución soporta tanto un grupo de red de membresía estática como un grupo dinámico de red de membresía. El networkGroupMembershipType parámetro selecciona cuál se despliega; solo se crea uno de los dos recursos.
Grupo de red de membresía estática
El recurso de grupo de red estático, Microsoft.Network/networkManagers/networkGroups en la versión 2022-09-01de la API, nombra explícitamente a sus miembros. Los recursos anidados staticMembers agregan las redes virtuales satélite A, B y C, además de la red virtual del hub, mediante el identificador del recurso. Para seleccionar tus propias redes virtuales, cambia los parámetros spokeNetworkGroupMembers y hubVnetId.
@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
}
}
}
Grupo dinámico de red de membresía
El recurso dinámico de grupo de red no declara miembros. La membresía se forma con la definición de Azure Policy descrita en Define la política dinámica de membresía.
@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'
}
}
Definir la configuración de conectividad de la malla
El recurso de configuración de conectividad, Microsoft.Network/networkManagers/connectivityConfigurations en la versión 2022-09-01de la API , asocia el grupo de red con la topología de la red mallada. La appliesToGroups propiedad hace referencia al grupo de red que desplegaste, y configuras connectivityTopology como Mesh.
@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'
}
}
Confirma la configuración con un script de despliegue
Para desplegar la configuración en el grupo de red objetivo, utiliza un script de despliegue que llama al Deploy-AzNetworkManagerCommit comando PowerShell. El script de despliegue necesita una identidad con permisos suficientes para ejecutar el script PowerShell contra el administrador de red virtual. El archivo Bicep crea una identidad administrada por el usuario y le concede el rol Colaborador en el grupo de recursos de destino. Para más información sobre scripts de despliegue e identidades asociadas, consulte Usar scripts de despliegue en plantillas ARM.
El siguiente recurso es un recurso Microsoft.Resources/deploymentScripts en la versión de la API 2020-10-01. Ejecuta un script de PowerShell insertado que inicia sesión con la identidad asignada por el usuario y llama a Deploy-AzNetworkManagerCommit. Cambia las propiedades azPowerShellVersion, retentionInterval, y timeout para tu propio despliegue. Cambia los valores que se pasan mediante arguments: el nombre del administrador de red, las ubicaciones de destino, los identificadores de configuración, el ID de suscripción, el tipo de configuración y el nombre del grupo de recursos.
@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: $_"
}
'''
}
}
Defina la política dinámica de membresía
Cuando configuras el despliegue para usar la pertenencia a grupos de red de dynamic, la solución también despliega una definición y una asignación de Azure Policy.
El siguiente recurso es un recurso Microsoft.Authorization/policyDefinitions en la versión de la API 2021-06-01. Utiliza el Microsoft.Network.Data modo de política y el addToNetworkGroup efecto, que añade redes virtuales coincidentes al grupo de red identificado por networkGroupId. La regla de directiva se aplica a las redes virtuales que tienen la etiqueta _avnm_quickstart_deployment y que se encuentran en el grupo de recursos de este ejemplo. Cambia el nombre de la etiqueta y el filtro del grupo de recursos en la like condición para que coincidan con tu propio entorno.
@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
}
}
}
}
}
Implementación de la solución de Bicep
Requisitos previos de implementación
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Permisos para crear una definición de directiva y una asignación de directiva en el ámbito de la suscripción de destino. Necesita estos permisos al usar el parámetro
networkGroupMembershipType=Dynamicde implementación para implementar los recursos de directiva necesarios para la pertenencia a grupos de red. El valor predeterminado esstatic, que no implementa una directiva. - Todos los recursos de esta solución están disponibles en el repositorio de GitHub Azure Samples. Puede descargar la solución Bicep desde el repositorio o clonar el repositorio en la máquina local.
Descarga de la solución de Bicep
- Descargue un archivo ZIP del repositorio de ejemplo en este vínculo.
- Extraiga el archivo ZIP descargado. En el terminal, vaya al directorio extraído
avnm-mesh-connected-group. Los archivos Bicep para esta solución se encuentran en elbicepsubdirectorio.
Como alternativa, puede usar git para clonar el repositorio:
git clone https://github.com/Azure-Samples/avnm-mesh-connected-group
cd avnm-mesh-connected-group
Conexión con Azure
Iniciar sesión en la cuenta de Azure y seleccione la suscripción
Para empezar la configuración, inicie sesión en la cuenta de Azure:
Connect-AzAccount
Luego, conéctela a la suscripción:
Set-AzContext -Subscription <subscription name or id>
Instalación del módulo de Azure PowerShell
Instale el módulo Az.Network de Azure PowerShell más reciente mediante este comando:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Parámetros de implementación
- resourceGroupName: [obligatorio] Nombre del grupo de recursos donde desea implementar el administrador de red virtual y las redes virtuales de ejemplo.
- location: [required] La ubicación de los recursos que se van a implementar.
-
networkGroupMembershipType: [opcional] Tipo de pertenencia a grupos de red que se va a implementar. El valor predeterminado es
static, pero puede usardynamicpara la pertenencia dinámica a grupos.
Nota:
La elección de la pertenencia dinámica a grupos implementa una Azure Policy para administrar la pertenencia, lo que requiere más permisos.
Implementación predeterminada con pertenencia a grupos de red estáticos
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup>
Implementación con pertenencia dinámica a grupos de red
Para usar Azure Policy para administrar dinámicamente la pertenencia del grupo de red, incluya el parámetro networkGroupMembershipType de implementación con un valor de dynamic.
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup> -networkGroupMembershipType dynamic
Comprobación de la implementación de la configuración
Use la sección Network Manager para cada red virtual para comprobar que ha implementado la configuración:
Vaya a la red virtual vnet-learn-prod-{location}-spoke001.
En Configuración, seleccione Network Manager.
En la pestaña Configuraciones de Conectividad, compruebe que cc-learn-prod-{location}-mesh001 aparece en la lista.
Repita los pasos anteriores en vnet-learn-prod-{location}-spoke004; debería ver que vnet-learn-prod-{location}-spoke004 está excluida de la configuración de conectividad.
Limpieza de recursos
Si ya no necesita Azure Virtual Network Manager y las redes virtuales asociadas, quítelos eliminando el grupo de recursos y sus recursos.
- En el Azure Portal, vaya a su grupo de recursos - grupo de recursos.
- Seleccione el grupo de recursos y elija Eliminar grupo de recursos.
- En Eliminar un grupo de recursos, confirme que desea eliminar escribiendo el grupo de recursos en el cuadro de texto y, a continuación, seleccione Eliminar.
- Si usó Pertenencia dinámica a grupos de red, elimine la definición y la asignación de Azure Policy implementadas; para ello, vaya a la suscripción en el portal y seleccione Directivas. En Directivas, busque la asignación denominada
AVNM quickstart dynamic group membership Policyy elimínela y, a continuación, haga lo mismo para la definición denominadaAVNM quickstart dynamic group membership Policy.
Pasos siguientes
Ahora que ha creado una instancia de Azure Virtual Network Manager, aprenda a bloquear el tráfico de red mediante una configuración de administrador de seguridad: