Ga naar inhoud

IP groups (toevoegen, wijzigen, verwijderen)

Standaardwijziging: Een IP group aanmaken of wijzigen in de firewallconfiguratie van de hub.

Effect: een IP group (azurerm_ip_group) wordt aangemaakt, bijgewerkt of verwijderd in de connectivity resource group van elke regio waar het bestand wordt uitgerold. Regels die naar de group verwijzen volgen automatisch. Alleen de firewall-layer verandert.

IP groups zijn de bouwstenen van firewallregels. Voor de richtlijnen (wanneer je een group gebruikt, naamgeving, hernoemen in twee stappen) zie Richtlijnen voor firewallregels en IP groups. Voor de regelbestanden die de groups gebruiken, zie Firewallregels. Om de bestanden te bewerken met suggesties en validatie, zie De JSON-bestanden bewerken met schemaondersteuning.

Aanvraagvelden

Aanvraagveld Waar het terechtkomt Opmerkingen
Naam ip_group.name en de bestandsnaam Zie naamgeving. Uniek binnen de platformomgeving.
Doel beschrijving van de pull request Wat de group voorstelt en welke workload eigenaar is.
Adressen ip_group.cidrs CIDR-bereiken of losse IPv4-adressen.
Gebruikt door beschrijving van de pull request Welke regels de group gebruiken of gaan gebruiken.
Omgeving platformomgeving en regiomap Maak het bestand aan in elke platformomgeving die het nodig heeft (canary en prod).
Onderbouwing pull request / wijzigingsrecord

Waar de bestanden staan

IP group-bestanden zijn JSON-bestanden in een ip_groups-map. De locatie wordt ingesteld in <env-folder>/<region>/firewall.auto.tfvars (zie Firewallregels):

  • Globale groups in <env-folder>/ip_groups/, uitgerold naar elke regio.
  • Regionale groups in <env-folder>/<region>/ip_groups/. Een regionaal bestand met dezelfde bestandsnaam als een globaal bestand vervangt dat in die regio.

Houd de mapnaam ip_groups aan: de config tests vinden de groups daarop. Eén bestand bevat één IP group. Submappen per workload zijn toegestaan.

Sommige platformen bewaren alle IP groups alleen in de globale map, omdat de groups in elke regio hetzelfde zijn. Kies één aanpak en documenteer die. Elke platformomgeving heeft een eigen map, dus het bestand moet in zowel canary als prod bestaan.

IP group-JSON

{
  "ip_group": {
    "name": "ipgrp-azure-app1-prod-web",
    "cidrs": [
      "10.20.4.0/26",
      "10.20.5.16/32"
    ]
  }
}
Property Verplicht Regels
ip_group ja De enige property op het hoogste niveau.
name ja Uniek. Het is de naam in Azure en de naam waarmee regels naar de group verwijzen.
cidrs ja Een lijst met strings. Elke string is een IPv4-adres, optioneel met een prefixlengte (/0 tot /32). Een enkele host mag met of zonder /32 worden geschreven. Gebruik consequent één stijl.

Andere properties zijn niet toegestaan.

Naamgeving

Gebruik een patroon dat de lezer vertelt wat de group bevat. Er zijn twee patronen in gebruik. Kies er één voor je platform:

Patroon Voorbeeld Gebruik
ipgrp-<description> voor platformgroups, ipgrp-<workload>-<description>-<environment> voor workloadgroups ipgrp-hub, ipgrp-app1-web-prod Kort. Gebruikt in de richtlijnen.
ipgrp-<onprem or azure>-<workload>-<environment>-<use> ipgrp-azure-app1-prod-web, ipgrp-onprem-dns Laat zien waar de adressen staan. Kies azure als beide van toepassing zijn. Laat de workload of omgeving weg als die niet van toepassing is.

Wat je ook kiest, de naam zegt wat de adressen zijn, niet welke regel ze gebruikt.

Een IP group aanmaken

  1. Verzamel de aanvraagvelden. Controleer of de group nog niet bestaat (zoek in de ip_groups-mappen op adres).
  2. Maak een branch aan (Veilig een wijziging doorvoeren).
  3. Maak <name>.json aan in de ip_groups-map van de canary-omgeving en vul het in.
  4. Valideer het bestand tegen het schema (De JSON-bestanden bewerken met schemaondersteuning). Controleer de notatie van elk adres.
  5. Kopieer het bestand naar de ip_groups-map van de prod-omgeving (en naar elke regiomap die het nodig heeft).
  6. Draai de config tests, commit en open een pull request. Reviewers gebruiken het runbook voor IP group-wijzigingen.
  7. Deploy na goedkeuring canary, controleer het resultaat en deploy daarna prod (deployment). Het plan toont azurerm_ip_group als toegevoegd en verder niets.

Als je de group samen met de regels maakt die hem gebruiken, zet je beide in één pull request. De group moet in dezelfde deployment of in een eerdere bestaan.

Een IP group wijzigen

  1. Pas de cidrs-lijst aan in het bestand van de canary-omgeving.
  2. Voer dezelfde wijziging door in het prod-bestand. Overschrijf het met het gevalideerde bestand als de twee omgevingen gelijk moeten zijn.
  3. Pull request, review, deploy canary, controleer, deploy prod.

Het wijzigen van de adressen van een group wijzigt elke regel die de group gebruikt. Lees de lijst met regels die de group gebruiken voordat je hem wijzigt, en beschrijf het effect in de pull request.

Een IP group hernoemen of verwijderen

Een regel die verwijst naar een group die niet meer bestaat laat de deployment falen. Doe het in twee pull requests, zoals beschreven in Een IP group in twee stappen hernoemen of verwijderen.

Do's en don'ts

Do Don't
Gebruik een duidelijke naam die het doel weergeeft. Mix geen niet-gerelateerde subnetten in één group.
Valideer het bestand tegen het schema. Gebruik geen adressen die niet zijn afgebakend of afgesproken voor het doel.
Gebruik het normale branch- en pull request-proces. Commit niet direct naar main zonder review.
Houd de naamconventie consistent over alle groups. Maak geen group voor adressen die maar één regel gebruikt. Zet ze in de regel.
Test eerst in canary. Hernoem of verwijder een group niet in dezelfde wijziging die de regels aanpast.

Controleren

  • Azure-portal → IP Groups in de connectivity resource group: de group bestaat en bevat de adressen.
  • Firewall Policies → de policy van de regio → de regels die de group gebruiken tonen de naam van de group.

Terugdraaien

Draai de pull request terug en draai hub opnieuw.

Veelvoorkomende problemen

Symptoom Oorzaak
Config test Referenced IP Group '<x>' should exist De naam in de regel wijkt af van de naam van de group, of het bestand staat niet in een map met de naam ip_groups.
Schemafout op cidrs Een item is geen IPv4-adres of CIDR, bijvoorbeeld een ontbrekend octet of een prefix boven /32.
Schemafout op het bestand Er is een andere property dan name en cidrs aanwezig, of ip_group ontbreekt.
Het plan wil de group vernietigen en opnieuw aanmaken De name is gewijzigd. De naam is de identiteit van de group.
Regels gebruiken nog oude adressen De wijziging is nog niet uitgerold naar die platformomgeving of regio.