heygrc
ISO 27001 A.8.31 im Code

Testumgebungen von der Produktion fernhalten.

ISO 27001:2022 A.8.31 (Trennung von Entwicklungs-, Test- und Produktionsumgebungen) verlangt, dass diese Umgebungen voneinander getrennt bleiben, sodass Arbeiten in Entwicklung oder Test die Produktion nicht erreichen, ändern oder freilegen können. Ein großer Teil dieser Grenze liegt in der Konfiguration: Verbindungsstrings, Umgebungsvariablen, Seed- und Fixture-Skripte sowie CI-Pipelines. Das bedeutet, dass eine einzelne Änderung an einer Konfigurationsdatei diese Grenze leise aufheben kann.

How it shows up in a diff

The shapes the same control failure takes.

A.8.31 wird geschwächt, wenn ein Nicht-Produktionspfad einen Zugang zur Produktion erhält oder wenn Produktionsdaten und -Anmeldedaten in eine niedrigere Umgebung durchsickern. Die wiederkehrenden Muster:

  • Eine Testkonfiguration zeigt auf die Produktion

    Eine Test- oder CI-Datenbank-URL, ein Endpunkt oder eine Konfiguration ist auf eine Produktionsressource eingestellt, sodass ein Testlauf echte Daten liest oder schreibt.

  • Produktionsgeheimnisse landen in einer niedrigeren Umgebung

    Eine Staging- oder Entwicklungskonfiguration erhält Produktionsanmeldedaten, Schlüssel oder Endpunkte, wodurch die Grenze in dem Moment zusammenbricht, in dem diese Umgebung weniger geschützt ist.

  • Ein Schutz gegen umgebungsübergreifenden Zugriff wird entfernt

    Eine Umgebungsprüfung, die eine zerstörerische, Seed- oder Reset-Operation daran hinderte, außerhalb einer dedizierten Umgebung ausgeführt zu werden, wird entfernt, sodass sie nun gegen die Produktion laufen kann.

  • Fixtures oder Seed-Daten erhalten einen Pfad zur Produktion

    Ein Seed-, Fixture- oder Migrationsskript, das Daten neu erstellt oder löscht, erhält einen Weg zur Produktionsdatenbank anstelle einer isolierten.

  • Umgebungen teilen sich einen Backing-Store

    Ein Cache, Bucket oder eine Warteschlange ist so verkabelt, dass Entwicklung oder Test und Produktion denselben Speicher lesen und schreiben, sodass Nicht-Produktionsaktivitäten Live-Daten beeinflussen können.

Worked example

Ein End-to-End-Suite, das auf die Produktionsdatenbank zeigt.

Ein End-to-End-Suite benötigt eine Datenbank, gegen die es ausgeführt wird. Die dedizierte Testdatenbank ist leer, und die Tests schlagen aufgrund fehlender Daten ständig fehl, sodass die Einrichtung auf den Produktions-Verbindungsstring umgestellt wird, um gegen echte Daten zu testen. Das Suite löscht und neu befüllt Tabellen bei jedem Lauf, und jetzt tut es das mit der Produktion.

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

Dies zeigt ein End-to-End-Suite, das Tabellen in der Produktionsdatenbank löscht und neu befüllt, sodass ein Testlauf Live-Daten löschen und überschreiben kann. A.8.31 verlangt, dass Entwicklung, Test und Produktion getrennt sind, damit Nicht-Produktionsaktivitäten die Produktion nicht erreichen können. Stellen Sie die dedizierte Testdatenbank wieder her und laden Sie die fehlenden Fixtures dort, anstatt die Produktion zu nutzen, und halten Sie die Grenze ein, sodass ein Testlauf niemals Live-Daten schreiben kann.

What an auditor does with this

Trennung wird an der Grenze überprüft, nicht nur behauptet.

Ein Prüfer sucht nach Beweisen, dass Ihre Umgebungen tatsächlich getrennt sind: dass Test und Entwicklung keine Produktionsdaten oder -Anmeldedaten erreichen können und dass die Produktion nur über den kontrollierten Pfad geändert wird. Eine Testkonfiguration, die mit einer Produktionsressource verbunden ist, oder eine niedrigere Umgebung, die Produktionsgeheimnisse enthält, ist die Art von Lücke, die der in Ihrer Richtlinie beschriebenen Trennung widerspricht, und sie gelangt in der Regel durch eine einzelne Änderung an einer Konfigurations- oder Setup-Datei. Der Diff ist der Ort, an dem die Grenze überschritten wird, und der günstigste Ort, um dies zu erkennen.

What this is, and is not

Eine Überprüfung, nicht Ihre Umgebungstopologie.

heygrc markiert Änderungen, die A.8.31 betreffen, und verweist auf die Kontrolle, sodass die Korrektur im Pull Request erfolgt. Es richtet Ihre Umgebungen nicht ein und verwaltet Ihre Geheimnisse nicht. Es erkennt den Moment, in dem ein Test- oder Entwicklungspfad auf die Produktion zugreift, im Diff.