heygrc
ISO 27001 A.8.31 in code

Testen buiten productie houden.

ISO 27001:2022 A.8.31 (scheiding van ontwikkel-, test- en productieomgevingen) vereist dat deze omgevingen gescheiden blijven, zodat werk in ontwikkeling of test geen toegang heeft tot, wijzigingen aanbrengt in of productiegegevens blootstelt. Een groot deel van deze grens bevindt zich in de configuratie: verbindingsstrings, omgevingsvariabelen, seed- en fixture-scripts en CI-pipelines. Wat betekent dat een enkele wijziging in een configuratiebestand deze grens stilletjes kan doorbreken.

How it shows up in a diff

The shapes the same control failure takes.

A.8.31 verzwakt wanneer een niet-productiepad toegang krijgt tot productie, of wanneer productiegegevens en -referenties lekken naar een lagere omgeving. De terugkerende patronen:

  • Een testconfiguratie verwijst naar productie

    Een test- of CI-database-URL, endpoint of configuratie is ingesteld op een productiebron, zodat een testrun echte gegevens leest of schrijft.

  • Productiegeheimen belanden in een lagere omgeving

    Een staging- of ontwikkelconfiguratie krijgt productie-referenties, sleutels of endpoints, waardoor de grens instort zodra die omgeving minder beveiligd is.

  • Een beveiliging tegen kruisomgevings-toegang wordt verwijderd

    Een omgevingscontrole die een destructieve, seed- of reset-bewerking tegenhield om alleen in een toegewijde omgeving uit te voeren, wordt verwijderd, zodat deze nu tegen productie kan worden uitgevoerd.

  • Fixtures of seed-gegevens krijgen toegang tot productie

    Een seed-, fixture- of migratiescript dat gegevens herstelt of wist, krijgt een route naar de productiedatabase in plaats van een geïsoleerde database.

  • Omgevingen delen een onderliggende opslag

    Een cache, bucket of wachtrij is zo ingesteld dat ontwikkeling of test en productie dezelfde opslag lezen en schrijven, zodat niet-productieactiviteiten live gegevens kunnen beïnvloeden.

Worked example

Een end-to-end-suite gericht op de productiedatabase.

Een end-to-end-suite heeft een database nodig om tegen te draaien. De toegewijde testdatabase is leeg en de tests blijven falen door ontbrekende gegevens, dus de opstelling wordt gericht op de productie-verbindingstring om tegen echte gegevens te testen. De suite truncateert en herzaait tabellen bij elke uitvoering, en nu doet het dat met productie.

e2e/setup.ts+1 -1
- const TEST_DB = process.env.TEST_DATABASE_URL+ const TEST_DB = process.env.DATABASE_URL // prod, to test against real dataawait db.connect(TEST_DB)await resetAndSeed(db) // truncates tables before each run
heygrcISO 27001:2022 A.8.31

Dit richt een end-to-end-suite die tabellen truncateert en herzaait in de productiedatabase, zodat een testrun live gegevens kan wissen en overschrijven. A.8.31 vereist dat ontwikkeling, test en productie gescheiden blijven, zodat niet-productieactiviteiten geen toegang hebben tot productie. Herstel de toegewijde testdatabase en laad de ontbrekende fixtures daar, in plaats van productie te gebruiken, en houd de grens in stand zodat een testrun nooit live gegevens kan schrijven.

What an auditor does with this

Scheiding wordt gecontroleerd op de grens, niet alleen beweerd.

Een auditor zoekt naar bewijs dat je omgevingen daadwerkelijk gescheiden zijn: dat test en ontwikkeling geen toegang hebben tot productiegegevens of -referenties, en dat productie alleen via de gecontroleerde route wordt gewijzigd. Een testconfiguratie die gekoppeld is aan een productiebron, of een lagere omgeving die productiegeheimen bevat, is het soort leemte dat de scheiding die je beleid beschrijft, tegenspreekt, en dit komt meestal aan in een enkele wijziging in een configuratie- of opzetbestand. De diff is waar de grens wordt overschreden, en de goedkoopste plek om dit op te vangen.

What this is, and is not

Een review, niet je omgevingsopzet.

heygrc markeert wijzigingen die A.8.31 raken en citeert de controle, zodat de correctie in de pull request plaatsvindt. Het voorziet niet in je omgevingen of beheert je geheimen. Het vangt het moment op waarop een test- of ontwikkelpad toegang krijgt tot productie, in de diff.