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.
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.
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.
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.
- const key = "<the live key, pasted inline>"+ const key = process.env.PAYMENTS_SECRET_KEYconst client = new Payments(key)Klucz jest odczytywany z zarządzanego tajnego magazynu w czasie wykonywania zamiast być przechowywany w repozytorium.