Compartir vía


Definición de la pertenencia dinámica a grupos de red en Azure Virtual Network Manager con Azure Policy

En este artículo aprenderá a usar las instrucciones condicionales de Azure Policy para crear grupos de red con pertenencia dinámica. Estas instrucciones condicionales se crean mediante el editor básico al seleccionar parámetros y operadores en un menú desplegable. También aprenderá a usar el editor avanzado para actualizar las instrucciones condicionales de un grupo de red existente.

Azure Policy es un servicio que permite aplicar la gobernanza por recurso a gran escala. Se puede usar para especificar expresiones condicionales que definan la pertenencia a grupos, en lugar de listas explícitas de redes virtuales. Esta condición seguirá alimentando los grupos de red de forma dinámica, lo que permite que las redes virtuales se unan y abandonen el grupo automáticamente a medida que cambia la condición, sin que se requiera ninguna operación de Network Manager.

Requisitos previos

Parámetros y operadores

Las redes virtuales con pertenencias dinámicas se seleccionan mediante instrucciones condicionales. Puede definir más de una instrucción condicional mediante operadores lógicos como AND y OR para escenarios en los que necesite restringir aún más las redes virtuales seleccionadas.

Lista de parámetros admitidos:

Parámetros Campo de editor avanzado
Nombre Name
ID Id
Etiquetas tag['tagName']
Subscription Name [subscription().Name]
Id. de suscripción [subscription().Id]
Etiquetas de suscripción [subscription().tags['tagName']]
Nombre del grupo de recursos [resourceGroup().Name]
Id. de grupo de recursos [resourceGroup().Id]
Etiquetas de grupos de recursos [resourceGroup().tags['tagName']]

Lista de operadores admitidos:

Operadores Editor avanzado
Contains "contains": <>
No contiene "notcontains": <>
In "in": <>
No en el "notin": <>
Es igual a "equals": <>
No es igual a "notequals": <>
Contiene cualquiera de estos elementos "contains": <>
Contiene todos estos elementos "contains": <>
No contiene ninguno de estos elementos "notcontains": <>
Exists "exists": true
No existe "exists": false

Nota:

Los operadores Existe y No existe solo se usan con el parámetro Etiquetas.

Editor básico

Suponga que tiene las siguientes redes virtuales en su suscripción. Cada red virtual tiene una etiqueta asociada denominada environment con el valor respectivo de Production o Test.

Virtual Network Nombre de etiqueta Valor de etiqueta
myVNet01-EastUS Environment producción
myVNet01-WestUS Environment producción
myVNet02-WestUS Environment test
myVNet03-WestUS Environment test

Solo desea seleccionar redes virtuales cuya etiqueta tenga un par clave de valor de entorno igual a producción. Para empezar a usar el editor básico para crear la instrucción condicional, debe crear un nuevo grupo de red.

  1. Vaya a la instancia de Azure Virtual Network Manager y seleccione Grupos de red en Configuración. Luego, seleccione + Crear para crear un grupo de redes nuevo.

  2. Escriba un nombre y una descripción opcional para el grupo de red y seleccione Agregar.

  3. Seleccione el grupo de red de la lista y elija Crear Azure Policy.

  4. Escriba un nombre de directiva y deje las selecciones de ámbito a menos que se necesiten cambios.

  5. En Criterios, seleccione Etiquetas en la lista desplegable bajo Parámetro y, a continuación, seleccione Par clave-valor en la lista desplegable Operador.

  6. Escriba entorno y producción en Condición y seleccione Previsualizar recursos. Debería ver que myVNet01-EastUS y myVNet01-WestUS aparecen en la lista.

    Captura de pantalla de creación de una etiqueta de configuración de ventana de Azure Policy con el par clave-valor.

  7. Seleccione Cerrar y Guardar.

  8. Después de unos minutos, seleccione el grupo de red y elija Miembros del grupo en Configuración. Solo debería ver myVNet01-WestUS y myVNet01-WestUS.

Importante

El editor básico solo está disponible durante la creación de una instancia de Azure Policy. Una vez creada una directiva, todas las modificaciones se realizarán mediante JSON en la sección Directivas del administrador de redes virtuales o a través de Azure Policy.

Editor avanzado

El editor avanzado se puede usar para seleccionar redes virtuales durante la creación de un grupo de redes o al actualizar un grupo de redes existente. El editor avanzado, basado en JSON, es útil para crear y actualizar instrucciones condicionales de Azure Policy complejas por parte de usuarios experimentados.

Creación de directivas con el editor avanzado

  1. Vaya a la instancia de Azure Virtual Network Manager y seleccione Grupos de red en Configuración. Luego, seleccione + Crear para crear un grupo de redes nuevo.

  2. Escriba un nombre y una descripción opcional para el grupo de red y seleccione Agregar.

  3. Seleccione el grupo de red de la lista y elija Crear Azure Policy.

  4. Escriba un nombre de directiva y deje las selecciones de ámbito a menos que se necesiten cambios.

  5. En Criterios, seleccione Editor avanzado (JSON) para abrir el editor.

  6. Escriba el siguiente código JSON en el cuadro de texto y seleccione Guardar:

       {
       "field": "Name",
       "contains": "myVNet01"
       }
    
  7. Después de unos minutos, seleccione el grupo de red y elija Miembros del grupo en Configuración. Solo debería ver myVNet01-WestUS y myVNet01-EastUS.

Importante

Todas las directivas de Azure que cree con el administrador de redes virtuales residirán en el área de servicios de Azure Policy. No se quitarán de las asignaciones y definiciones de Azure Policy cuando se elimine una instancia de Virtual Network Manager. Esto requiere la eliminación manual de las directivas. Información sobre cómo quitar directivas de Azure

Editar una directiva existente

  1. Seleccione el grupo de redes creado en la sección anterior. Luego, seleccione la pestaña Directivas.

  2. Seleccione la directiva creada en la sección anterior.

  3. Verá las instrucciones condicionales para el grupo de redes en la vista del editor avanzado como se muestra a continuación:

    [
      {
         "field": "Name",
         "contains": "myVNet01"
      }
    ]
    
  4. Para agregar otra instrucción condicional para un campo Nombre que no contenga WestUS, escriba lo siguiente en el editor avanzado:

    {
       "allOf": [
    
          {
             "field": "Name",
             "contains": "VNet01"
          },
          {
             "field": "Name",
             "notcontains": "WestUS"
          }
       ]
    }
    

    El parámetro "allOf" contiene ambas instrucciones condicionales, separadas por el operador lógico AND.

  5. Seleccione Guardar.

  6. Después de unos minutos, seleccione el grupo de red y elija Miembros del grupo en Configuración. Solo debería ver myVNet01-EastUS.

Consulte Parámetros y operadores para obtener la lista completa de parámetros y operadores que puede usar con el editor avanzado.

Más ejemplos

Estos son más ejemplos de instrucciones condicionales en el editor avanzado.

Ejemplo 1: solo operador OR

En este ejemplo se usa el operador lógico OR para separar dos instrucciones condicionales.

  • Editor básico:

    Captura de pantalla de la instrucción condicional del grupo de redes mediante el operador lógico OR.

  • Operador avanzado:

    {
       "anyOf": [
          {
             "field": "Name",
             "contains": "myVNet01"
          },
          {
             "field": "Name",
             "contains": "myVNet02"
          }
       ]
    }
    

El parámetro "anyOf" contiene ambas instrucciones condicionales, separadas por el operador lógico OR.

Ejemplo 2: operador AND y OR al mismo tiempo

  • Editor básico:

    Captura de pantalla de la instrucción condicional del grupo con los operadores lógicos OR y AND.

  • Editor avanzado:

{
   "allOf": [
      {
         "anyOf": [
            {
               "field": "Name",
               "contains": "myVNet01"
            },
            {
               "field": "Name",
               "contains": "myVNet02"
            }
         ]
      },
      {
         "field": "Name",
         "notcontains": "West"
      }
   ]
}

En el código, se usa tanto "allOf" como "anyOf". Puesto que el operador AND es el último de la lista, se encuentra en la parte externa del código que contiene las dos instrucciones condicionales con el operador OR.

Ejemplo 3: uso de valores de etiqueta personalizados con el editor avanzado

En este ejemplo, se crea una instrucción condicional que busca redes virtuales cuyo nombre incluye myVNet Y la etiqueta environment sea production.

  • Editor avanzado:

    
       {
            "allOf": [
              {
                 "field": "Name",
                 "contains": "myVNet"
              },      
              {
                 "field": "tags['environment']",
                 "equals": "production"
              }
            ]    
       }
    
    

    Nota:

    Las expresiones condicionales deben filtrar por el tipo de recurso Microsoft.Network/virtualNetwork para mejorar la eficacia. Esta condición se antepone en cualquier instrucción condicional especificada desde el portal.

Pasos siguientes