Dela via


Definiera dynamiskt nätverksgruppmedlemskap i Azure Virtual Network Manager med Azure Policy

I den här artikeln får du lära dig hur du använder villkorssatser för Azure Policy för att skapa nätverksgrupper med dynamiskt medlemskap. Du skapar dessa villkorssatser med hjälp av den grundläggande redigeraren genom att välja parametrar och operatorer från en nedrullningsbara meny. Dessutom lär du dig hur du använder den avancerade redigeraren för att uppdatera villkorsstyrda instruktioner för en befintlig nätverksgrupp.

Azure Policy är en tjänst som gör att du kan tillämpa styrning per resurs i stor skala. Den kan användas för att ange villkorsstyrda uttryck som definierar gruppmedlemskap, i stället för explicita listor över virtuella nätverk. Det här villkoret fortsätter att driva dina nätverksgrupper dynamiskt, vilket gör att virtuella nätverk kan ansluta och lämna gruppen automatiskt när deras uppfyllande av villkoret ändras, utan att någon Network Manager-åtgärd krävs.

Förutsättningar

Parametrar och operatorer

Virtuella nätverk med dynamiska medlemskap väljs med hjälp av villkorsstyrda instruktioner. Du kan definiera mer än en villkorsstyrd instruktion med hjälp av logiska operatorer som AND och OR för scenarier där du behöver begränsa de valda virtuella nätverken ytterligare.

Lista över parametrar som stöds:

Parameters Avancerat redigeringsfält
Namn Name
ID Id
Taggar tag['tagName']
Prenumerationsnamn [subscription().Name]
Prenumerations-ID [subscription().Id]
Prenumerationstaggar [subscription().tags['tagName']]
Namn på resursgrupp [resourceGroup().Name]
Resursgrupps-ID [resourceGroup().Id]
Resursgruppstaggar [resourceGroup().tags['tagName']]

Lista över operatorer som stöds:

Operatorer Avancerad redigerare
Innehåller "contains": <>
Innehåller inte "notcontains": <>
I "in": <>
Inte i "notin": <>
Motsvarar "equals": <>
Är inte lika med "notequals": <>
Innehåller något av "contains": <>
Innehåller alla "contains": <>
Innehåller inte något av "notcontains": <>
Finns "exists": true
Finns inte "exists": false

Kommentar

Operatorerna Exists och Does not exist används endast med parametern Taggar.

Grundläggande redigerare

Anta att du har följande virtuella nätverk i din prenumeration. Varje virtuellt nätverk har en associerad tagg med namnet environment med respektive värde för produktion eller test.

Virtual Network Taggnamn Taggvärde
myVNet01-EastUS -miljö produktion
myVNet01-WestUS -miljö produktion
myVNet02-WestUS -miljö test
myVNet03-WestUS -miljö test

Du vill bara välja virtuella nätverk vars tagg har ett nyckelvärdepar med miljö som är lika med produktion. Om du vill börja använda den grundläggande redigeraren för att skapa villkorssatsen måste du skapa en ny nätverksgrupp.

  1. Gå till din Azure Virtual Network Manager-instans och välj Nätverksgrupper under Inställningar. Välj sedan + Skapa för att skapa en ny nätverksgrupp.

  2. Ange ett namn och en valfri beskrivning för nätverksgruppen och välj Lägg till.

  3. Välj nätverksgruppen i listan och välj Skapa Azure Policy.

  4. Ange ett principnamn och lämna omfångsvalen om inte ändringar behövs.

  5. Under Villkor väljer du Taggar i listrutan under Parameter och väljer sedan Nyckelvärdepar i listrutan under Operator.

  6. Ange miljö och produktion under Villkor och välj Förhandsgranska resurser. Du bör se myVNet01-EastUS och myVNet01-WestUS visas i listan.

    Skärmbild av taggen Skapa Azure Policy-fönsterinställning med nyckelvärdepar.

  7. Välj Stäng och Spara.

  8. Efter några minuter väljer du din nätverksgrupp och väljer Gruppmedlemmar under Inställningar. Du bör bara se myVNet01-WestUS och myVNet01-WestUS.

Viktigt!

Den grundläggande redigeraren är endast tillgänglig när en Azure Policy skapas. När en princip har skapats görs alla ändringar med JSON i avsnittet Principer i den virtuella nätverkshanteraren eller via Azure Policy.

Avancerad redigerare

Den avancerade redigeraren kan användas för att välja virtuella nätverk när en nätverksgrupp skapas eller när en befintlig nätverksgrupp uppdateras. Den avancerade redigeraren är baserad i JSON och är användbar för att skapa och uppdatera komplexa villkorssatser för Azure Policy av erfarna användare.

Skapa en ny princip med avancerad redigerare

  1. Gå till din Azure Virtual Network Manager-instans och välj Nätverksgrupper under Inställningar. Välj sedan + Skapa för att skapa en ny nätverksgrupp.

  2. Ange ett namn och en valfri beskrivning för nätverksgruppen och välj Lägg till.

  3. Välj nätverksgruppen i listan och välj Skapa Azure Policy.

  4. Ange ett principnamn och lämna omfångsvalen om inte ändringar behövs.

  5. Under Villkor väljer du Avancerad (JSON)-redigerare för att öppna redigeraren.

  6. Ange följande JSON-kod i textrutan och välj Spara:

       {
       "field": "Name",
       "contains": "myVNet01"
       }
    
  7. Efter några minuter väljer du din nätverksgrupp och väljer Gruppmedlemmar under Inställningar. Du bör bara se myVNet01-WestUS och myVNet01-EastUS.

Viktigt!

Alla Azure-principer som du skapar med virtual network manager kommer att finnas i Azure Policy-tjänstområdet. De tas inte bort från dina Azure Policy-tilldelningar och definitioner när en instans av den virtuella nätverkshanteraren tas bort. Detta kräver att principerna tas bort manuellt. Lär dig att ta bort Azure-principer

Redigera en befintlig princip

  1. Välj den nätverksgrupp som skapades i föregående avsnitt. Välj sedan fliken Principer .

  2. Välj den princip som skapades i föregående avsnitt.

  3. Du ser villkorssatserna för nätverksgruppen i förhandsredigerarens vy på följande sätt:

    [
      {
         "field": "Name",
         "contains": "myVNet01"
      }
    ]
    
  4. Om du vill lägga till ytterligare en villkorssats för ett namnfältsom inte innehållerWestUS anger du följande i den avancerade redigeraren:

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

    Parametern "allOf" innehåller båda de villkorsstyrda instruktioner som avgränsas av den logiska OPERATORN AND .

  5. Välj Spara.

  6. Efter några minuter väljer du din nätverksgrupp och väljer Gruppmedlemmar under Inställningar. Du bör bara se myVNet01-EastUS.

Se Parameter och operatorer för den fullständiga listan över parametrar och operatorer som du kan använda med den avancerade redigeraren.

Fler exempel

Här är fler exempel på villkorsstyrda instruktioner i den avancerade redigeraren.

Exempel 1: Endast OR-operator

I det här exemplet används den logiska OPERATORN OR för att separera två villkorssatser.

  • Grundläggande redigerare:

    Skärmbild av villkorssats för nätverksgrupper med hjälp av den logiska operatorn OR.

  • Avancerad operator:

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

Parametern "anyOf" innehåller båda de villkorsstyrda instruktioner som avgränsas av den logiska OPERATORN OR .

Exempel 2: AND och OR-operatorn på samma gång

  • Grundläggande redigerare:

    Skärmbild av villkorssatsen för nätverksgrupper med både OR och AND logisk operator.

  • Avancerad redigerare:

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

Både "allOf" och "anyOf" används i koden. Eftersom AND-operatorn är sist i listan finns den på den yttre delen av koden som innehåller de två villkorssatserna med OR-operatorn.

Exempel 3: Använda anpassade taggvärden med avancerad redigerare

I det här exemplet skapas en villkorsstyrd instruktion som hittar virtuella nätverk där namnet innehåller myVNet OCH miljötaggen är lika med produktion.

  • Avancerad redigerare:

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

    Kommentar

    Villkor bör filtrera på resurstypen Microsoft.Network/virtualNetwork för att förbättra effektiviteten. Det här villkoret förbereds för dig på villkor som anges via portalen.

Nästa steg