Definiowanie dynamicznego członkostwa w grupie sieci w usłudze Azure Virtual Network Manager za pomocą usługi Azure Policy

Z tego artykułu dowiesz się, jak używać instrukcji warunkowych usługi Azure Policy do tworzenia grup sieciowych z członkostwem dynamicznym. Te instrukcje warunkowe są tworzone przy użyciu edytora podstawowego, wybierając parametry i operatory z menu rozwijanego. Dowiesz się również, jak za pomocą edytora zaawansowanego aktualizować instrukcje warunkowe istniejącej grupy sieciowej.

Azure Policy to usługa umożliwiająca wymuszanie ładu poszczególnych zasobów na dużą skalę. Może służyć do określania wyrażeń warunkowych definiujących członkostwo w grupie, w przeciwieństwie do jawnych list sieci wirtualnych. Ten warunek nadal dynamicznie obsługuje grupy sieciowe, umożliwiając sieciom wirtualnym automatyczne dołączanie do grupy i opuszczanie jej w miarę jak zmienia się stopień spełniania przez nie tego warunku, bez konieczności wykonywania operacji w Menedżerze sieci.

Uwaga

Czasowanie warunkowego członkostwa w grupie sieciowej zależy od zakresu przypisania Azure Policy. Przy liczbie subskrypcji poniżej 1 000 aktualizacje członkostwa mogą trwać kilka minut. W środowiskach z ponad 1000 subskrypcji Azure Policy może potrzebować nawet 24 godzin, by powiadomić grupę sieciową. Po wysłaniu powiadomienia aktywne konfiguracje zaczynają obowiązywać dla zaktualizowanych członków po kilku minutach. Więcej informacji można znaleźć w artykule Opóźnienia i timing wdrożenia.

Wymagania wstępne

Parametry i operatory

Sieci wirtualne z członkostwem dynamicznym są wybierane przy użyciu instrukcji warunkowych. Można zdefiniować więcej niż jedną instrukcję warunkową przy użyciu operatorów logicznych, takich jak AND i OR , w scenariuszach, w których należy dodatkowo zawęzić wybrane sieci wirtualne.

Lista obsługiwanych parametrów:

Parametry Zaawansowane pole edytora
Nazwa/nazwisko Name
Identyfikator Id
Tagi tag['tagName']
Nazwa subskrypcji [subscription().Name]
Identyfikator subskrypcji [subscription().Id]
Tagi subskrypcji [subscription().tags['tagName']]
Nazwa grupy zasobów [resourceGroup().Name]
Identyfikator grupy zasobów [resourceGroup().Id]
Tagi grupy zasobów [resourceGroup().tags['tagName']]

Lista obsługiwanych operatorów:

Operatorzy Edytor zaawansowany
Zawiera "contains": <>
Nie zawiera "notcontains": <>
In "in": <>
Nie należy do "notin": <>
Równa się "equals": <>
Nie równa się "notequals": <>
Zawiera dowolny z "contains": <>
Zawiera wszystkie "contains": <>
Nie zawiera żadnych z nich "notcontains": <>
Istnieje "exists": true
Nie istnieje "exists": false

Uwaga

Operatory Istnieje i nie istnieje są używane tylko z parametrem Tagi.

Edytor podstawowy

Załóżmy, że masz następujące sieci wirtualne w ramach subskrypcji. Każda sieć wirtualna ma skojarzony tag o nazwie environment z odpowiednią wartością środowiska produkcyjnego lub testowego.

Sieć wirtualna Nazwa tagu Wartość tagu
myVNet01-EastUS środowisko produkcja
myVNet01-WestUS środowisko produkcja
myVNet02-WestUS środowisko test
myVNet03-WestUS środowisko test

Chcesz wybrać tylko sieci wirtualne, których tag ma parę klucz-wartość, w której klucz environment jest równy production. Aby rozpocząć tworzenie instrukcji warunkowej przy użyciu edytora podstawowego, należy utworzyć nową grupę sieciową.

  1. Przejdź do wystąpienia usługi Azure Virtual Network Manager i wybierz pozycję Grupy sieciowe w obszarze Ustawienia. Następnie wybierz pozycję + Utwórz , aby utworzyć nową grupę sieciową.

  2. Wprowadź nazwę i opcjonalny opis grupy sieciowej, a następnie wybierz pozycję Dodaj.

  3. Wybierz grupę sieci z listy i wybierz pozycję Utwórz usługę Azure Policy.

  4. Wprowadź nazwę zasady i pozostaw wybrane opcje w sekcji Zakres bez zmian, chyba że trzeba je zmienić.

  5. W sekcji Kryteria wybierz pozycję Tagi z listy rozwijanej pod Parametr, a następnie wybierz z listy rozwijanej pod Operator pozycję para klucz-wartość.

  6. Wprowadź środowisko i produkcyjne w sekcji Warunek, a następnie wybierz Zasoby w wersji zapoznawczej. Na liście powinny pojawić się myVNet01-EastUS i myVNet01-WestUS.

    Zrzut ekranu okna Tworzenie zasad Azure przedstawiający ustawienie tagu za pomocą pary klucz-wartość.

  7. Wybierz pozycję Zamknij i zapisz.

  8. Po kilku minutach wybierz grupę sieci i wybierz pozycję Członkowie grupy w obszarze Ustawienia. Powinieneś zobaczyć tylko myVNet01-EastUS i myVNet01-WestUS.

Ważne

Edytor podstawowy jest dostępny tylko podczas tworzenia usługi Azure Policy. Po utworzeniu zasad wszystkie edycje będą wykonywane przy użyciu formatu JSON w sekcji Zasady menedżera sieci wirtualnej lub za pośrednictwem usługi Azure Policy.

Zaawansowany edytor

Edytor zaawansowany może służyć do wybierania sieci wirtualnych podczas tworzenia grupy sieciowej lub aktualizowania istniejącej grupy sieciowej. Oparty na formacie JSON zaawansowany edytor jest przydatny do tworzenia i aktualizowania złożonych instrukcji warunkowych usługi Azure Policy przez doświadczonych użytkowników.

Tworzenie nowych zasad za pomocą edytora zaawansowanego

  1. Przejdź do wystąpienia usługi Azure Virtual Network Manager i wybierz pozycję Grupy sieciowe w obszarze Ustawienia. Następnie wybierz pozycję + Utwórz , aby utworzyć nową grupę sieciową.

  2. Wprowadź nazwę i opcjonalny opis grupy sieciowej, a następnie wybierz pozycję Dodaj.

  3. Wybierz grupę sieci z listy i wybierz pozycję Utwórz usługę Azure Policy.

  4. Wprowadź nazwę zasady i pozostaw wybrane opcje w sekcji Zakres bez zmian, chyba że trzeba je zmienić.

  5. W obszarze Kryteria wybierz pozycję Edytor zaawansowany (JSON), aby otworzyć edytor.

  6. Wprowadź następujący kod JSON w polu tekstowym i wybierz pozycję Zapisz:

       {
       "field": "Name",
       "contains": "myVNet01"
       }
    
  7. Po kilku minutach wybierz grupę sieci i wybierz pozycję Członkowie grupy w obszarze Ustawienia. Powinny być widoczne tylko sieci myVNet01-WestUS i myVNet01-EastUS.

Ważne

Wszystkie zasady platformy Azure tworzone za pomocą menedżera sieci wirtualnej będą aktywne w obszarze usług Azure Policy. Nie zostaną one usunięte z przypisań i definicji usługi Azure Policy po usunięciu wystąpienia menedżera sieci wirtualnej. Wymaga to ręcznego usunięcia zasad. Dowiedz się, jak usunąć zasady platformy Azure

Edytowanie istniejących zasad

  1. Wybierz grupę sieci utworzoną w poprzedniej sekcji. Następnie wybierz kartę Zasady .

  2. Wybierz zasady utworzone w poprzedniej sekcji.

  3. W widoku edytora zaawansowanego zobaczysz warunki dla grupy sieci, jak poniżej:

    [
      {
         "field": "Name",
         "contains": "myVNet01"
      }
    ]
    
  4. Aby dodać kolejną instrukcję warunkową dla pola Nazwa, którenie zawiera westUS, wprowadź następujące polecenie w edytorze zaawansowanym:

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

    Parametr "allOf" zawiera obie instrukcje warunkowe oddzielone operatorem logicznym AND .

  5. Wybierz pozycję Zapisz.

  6. Po kilku minutach wybierz grupę sieci i wybierz pozycję Członkowie grupy w obszarze Ustawienia. Powinna zostać wyświetlona tylko sieć myVNet01-EastUS.

Zobacz Parametry i operatory , aby uzyskać pełną listę parametrów i operatorów, których można używać z edytorem zaawansowanym.

Więcej przykładów

Poniżej przedstawiono więcej przykładów instrukcji warunkowych w edytorze zaawansowanym.

Przykład 1: wyłącznie operator OR

W tym przykładzie użyto operatora logicznego OR do oddzielenia dwóch instrukcji warunkowych.

  • Edytor podstawowy:

    Zrzut ekranu przedstawiający instrukcję warunkową grupy sieci przy użyciu operatora logicznego OR.

  • Operator zaawansowany:

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

Parametr "anyOf" zawiera obie instrukcje warunkowe oddzielone operatorem logicznym OR .

Przykład 2: operatory AND i OR jednocześnie

  • Edytor podstawowy:

    Zrzut ekranu przedstawiający wyrażenie warunkowe dla grupy sieciowej z użyciem operatorów logicznych OR i AND.

  • Edytor zaawansowany:

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

Zarówno "allOf", jak i "anyOf", są używane w kodzie. Ponieważ operator AND jest ostatni na liście, znajduje się na zewnętrznej części kodu zawierającego dwie instrukcje warunkowe z operatorem OR.

Przykład 3. Używanie niestandardowych wartości tagów z edytorem zaawansowanym

W tym przykładzie tworzona jest instrukcja warunkowa, która znajduje sieci wirtualne, których nazwa zawiera myVNet ORAZ tag environment jest równy wartości production.

  • Edytor zaawansowany:

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

    Uwaga

    Aby zwiększyć wydajność, warunkowe należy filtrować według typu zasobu Microsoft.Network/virtualNetwork. Ten warunek jest automatycznie dodawany na początku wszystkich warunków określonych w portalu.

Następne kroki