heygrc
ISO 27001 A.8.9 in code

De basisconfiguratie die niemand heeft bijgewerkt.

ISO 27001:2022 A.8.9 (configuratiebeheer) vereist dat beveiligingsconfiguraties voor hardware, software, services en netwerken worden vastgesteld, gedocumenteerd, geïmplementeerd, gemonitord en beoordeeld, en dat de daadwerkelijk draaiende configuratie overeenstemt met die basisconfiguratie. In de praktijk leeft de basisconfiguratie meestal als code: een gedeeld manifest, module of sjabloon waar elke service of resource vanaf zou moeten starten. De maatregel verzwakt wanneer de geïmplementeerde configuratie afwijkt van die basisconfiguratie zonder autorisatie, documentatie of monitoring, niet wanneer een beoordeelde uitzondering bewust wordt gemaakt.

How it shows up in a diff

The shapes the same control failure takes.

A.8.9 verzwakt wanneer de draaiende configuratie en de gedocumenteerde basisconfiguratie uit elkaar groeien. De terugkerende patronen:

  • Een verhardingsstandaard wordt ter plekke overschreven

    Een manifest van een service stelt een beveiligingsrelevante instelling in tegen de gedeelde basisconfiguratie om iets specifieks te ontgrendelen, in plaats van de onderliggende behoefte op te lossen of de basisconfiguratie bij te werken.

  • Een gekopieerd sjabloon wijkt stilletjes af

    Een nieuwe service start vanaf het gedeelde configuratiesjabloon, wordt ad hoc aangepast, en de twee groeien uit elkaar zonder dat er iets bijhoudt dat ze niet meer overeenkomen.

  • Een uitzondering wordt verzonden zonder vervaldatum

    Een eenmalige overschrijving (een versoepelde instelling, een debug-vlag die aan blijft staan) is bedoeld als tijdelijk, maar heeft geen beoordelingsdatum, dus blijft deze gewoon staan.

  • Een actieve resource wordt handmatig gewijzigd

    Iemand bewerkt een draaiende resource rechtstreeks (een klik in de console, een ad hoc CLI-opdracht) in plaats van via de versiebeheerde configuratie die als bron van waarheid zou moeten dienen, zodat de twee niet meer overeenkomen.

  • Een nieuw resourcetype wordt verzonden zonder basisconfiguratie

    Een nieuw type resource (een wachtrij, een database-engine) wordt geïntroduceerd zonder dat er een veilige configuratie voor is gedefinieerd, zodat elk exemplaar ad hoc wordt geconfigureerd.

Worked example

Een verhardingsstandaard overschreven om een implementatie te ontgrendelen.

Het gedeelde basis-Kubernetes-manifest van de organisatie draait elke service als non-root met een alleen-lezen root-bestandssysteem, de gedocumenteerde basisconfiguratie. Een nieuwe worker moet een tijdelijk bestand bij de start schrijven, en deze als root uitvoeren is de snelste manier om de implementatie te ontgrendelen. Daarom overschrijft het manifest van de worker de basisconfiguratie rechtstreeks, in plaats van een schrijfbaar volume te mounten of de gedeelde basis bij te werken. De service draait nu met meer rechten dan de gedocumenteerde basisconfiguratie toestaat, en er is niets aan de basisconfiguratie zelf gewijzigd, dus niemand die deze beoordeelt, zou de afwijking opmerken.

k8s/worker/deployment.yaml+1 -1
  containers:  - name: worker-    securityContext:-      runAsNonRoot: true+    securityContext:+      runAsNonRoot: false # needs to write a temp file at startup
heygrcISO 27001:2022 A.8.9

Dit sluit één service uit van de gedeelde verhardingsbasisconfiguratie (`runAsNonRoot: true`) rechtstreeks in het eigen manifest, in plaats van via de beoordeelde basisconfiguratie. A.8.9 vereist dat de geïmplementeerde configuratie overeenstemt met wat is vastgesteld en gedocumenteerd, en dit wijkt hiervan af zonder dat iemand de basisconfiguratie zelf aanpast. Los het daadwerkelijke schrijfpad op (mount een schrijfbaar volume voor het tijdelijke bestand) of documenteer en goedkeer een tijdgebonden uitzondering via het configuratiebeheerproces, in plaats van één service ter plekke uit te sluiten.

What an auditor does with this

Configuratie wordt gecontroleerd op basis van wat daadwerkelijk draait, niet alleen op het document.

Een auditor kijkt of de draaiende configuratie overeenstemt met de gedocumenteerde veilige basisconfiguratie, niet alleen of het basisconfiguratie-document bestaat. Een service die stilletjes een verhardingsstandaard overschrijft, een handmatig bewerkte resource die afwijkt van de bijgehouden configuratie, of een nieuw resourcetype zonder basisconfiguratie zijn het soort mismatches die een bevinding opleveren. Dit is meestal terug te voeren op één wijziging die een lokale omweg heeft genomen in plaats van de basisconfiguratie bij te werken of een uitzondering te maken.

What this is, and is not

Een beoordeling, niet de basisconfiguratie.

heygrc markeert wijzigingen die A.8.9 raken en verwijst naar de maatregel, zodat de correctie in de pull request plaatsvindt. Het definieert niet de basisconfiguratie of beheert de infrastructuur. Het signaleert het moment waarop een wijziging stilletjes afwijkt van de gedocumenteerde configuratie, bij de diff.