Wie speichere ich API-Schlüssel und Secrets, ohne ISO 27001 A.8.24 zu verletzen?
das heygrc team
Speichern Sie Schlüssel nie im Quellcode. Lesen Sie sie zur Laufzeit aus Umgebungsvariablen oder einem verwalteten Secret-Store, halten Sie sie aus dem Repository und den Logs fern und rotieren Sie jedes Secret, das jemals commited wurde. ISO 27001 A.8.24 (und einfache Vorsicht) verlangt, dass Schlüssel verwaltet und nicht hardcodiert werden.
Secrets aus einem verwalteten Speicher lesen
Laden Sie Anmeldedaten aus Umgebungsvariablen, die von einem Secret-Manager unterstützt werden (Ihre Plattform-Secrets, ein Vault, eine cloudbasierte KMS-Konfiguration), die zur Laufzeit aufgelöst werden. Der Code referenziert das Secret, enthält es aber nie.
Sie aus dem Repository und den Logs fernhalten
Ein Schlüssel im Quellcode gelangt in das Repository, dessen Verlauf und jeden Clone sowie CI-Cache. Ein Schlüssel in einer Log-Zeile gelangt überall dorthin, wo Ihre Logs gespeichert werden. Keines davon kann durch das spätere Löschen des Schlüssels in einem Commit rückgängig gemacht werden.
Alles rotieren, was geleakt wurde
Wenn ein Secret jemals commited wurde, betrachten Sie es als kompromittiert und rotieren Sie es. Das Entfernen aus der aktuellen Datei entfernt es nicht aus dem Verlauf, der bereits veröffentlicht wurde.
- const key = "<the live key, pasted inline>"+ const key = process.env.PAYMENTS_SECRET_KEYconst client = new Payments(key)Der Schlüssel wird zur Laufzeit aus einem verwalteten Secret gelesen, anstatt im Repository zu liegen.