heygrc
Odpowiedź

Jak przechowywać klucze API i tajne dane, nie naruszając ISO 27001 A.8.24?

zespół heygrc

Nigdy nie umieszczaj klucza w kodzie źródłowym. Odczytuj go z zmiennych środowiskowych lub zarządzanego magazynu tajnych danych w czasie wykonywania, trzymaj go z dala od repozytorium i logów oraz wymieniaj każdy tajny klucz, który został kiedykolwiek zatwierdzony. ISO 27001 A.8.24 (oraz zwykła ostrożność) wymaga, aby klucze były zarządzane, a nie wbudowywane w kod.

  1. Odczytuj tajne dane z zarządzanego magazynu

    Ładuj poświadczenia z zmiennych środowiskowych obsługiwanych przez menedżera tajnych danych (tajne dane platformy, skarbiec, konfiguracja obsługiwana przez KMS w chmurze), rozpoznawane w czasie wykonywania. Kod odwołuje się do tajnego klucza, ale nigdy go nie zawiera.

  2. Trzymaj je z dala od repozytorium i logów

    Klucz w kodzie źródłowym trafia do repozytorium, jego historii oraz każdej kopii i pamięci podręcznej CI. Klucz w wierszu logu trafia tam, dokąd trafiają logi. Żadnego z tych przypadków nie da się cofnąć przez usunięcie klucza w późniejszym zatwierdzeniu.

  3. Wymieniaj wszystko, co wyciekło

    Jeśli tajny klucz został kiedykolwiek zatwierdzony, traktuj go jako naruszony i wymień. Usunięcie go z bieżącego pliku nie usuwa go z historii, która została już opublikowana.

config/payments.ts+1 -1
- const key = "<the live key, pasted inline>"+ const key = process.env.PAYMENTS_SECRET_KEYconst client = new Payments(key)
heygrcISO 27001 A.8.24

Klucz jest odczytywany z zarządzanego tajnego magazynu w czasie wykonywania zamiast być przechowywany w repozytorium.