Jak przechowywać zaszyfrowane sekrety w kodzie dla projektu serverless.com?


12

W przypadku serverless.com najprostszym sposobem na ujawnienie sekretu funkcji AWS Lambda jest przechowanie go w serverless.ymlpliku (na przykład zaszyfrowanym za pomocą KMS).

Ale przekazywanie Gitowi zaszyfrowanych tajemnic nie jest najlepszą rzeczą na świecie. Z jednej strony wymaga zmiany kodu, gdy sekret musi się zmienić.

Ale jeśli chodzi o samo bezpieczeństwo, jakie są lepsze alternatywy? np. sekret może być przechowywany w S3 (zaszyfrowany), a Lambda ma dostęp do tej lokalizacji i klucza KMS, ale czy w rzeczywistości jest to lepsze w jakiś znaczący sposób?


ta semantyczna gimnastyka semantyczna nie interesuje mnie.
Assaf Lavie

Odpowiedzi:


7

Należy wziąć pod uwagę kilka elementów:

  1. Warto mieć możliwość utrzymania konfiguracji za pomocą oddzielnej kadencji wydania od konfigurowanego kodu. Takie postępowanie zachęca do rotacji poświadczeń w sposób zautomatyzowany, czy to regularnie czyni je bezbolesnym.

  2. Przechowywanie całej konfiguracji w Git jest całkowicie uzasadnione z punktu widzenia „Infrastruktury jako kodu”, aczkolwiek prawdopodobnie w innym repozytorium, ponieważ zakres konfiguracji może obejmować więcej niż jedną usługę.

  3. Zakładając, że oba powyższe stwierdzenia dotyczą twojej sytuacji, byłbym skłonny zaszyfrować dane za pomocą KMS i przechowywać je w S3 lub DynamoDB. Posunąłbym się nawet do stwierdzenia, że ​​w bardzo prostych sytuacjach odpowiednie może być szyfrowanie i przechowywanie danych w samym KMS.

Istnieje kilka bibliotek typu open source, które będą obsługiwać tę operację:


1

Zazwyczaj traktuję sekrety jako dane konfiguracyjne w zakresie. W związku z tym nie działa obok kodu, ponieważ są obsługiwane przez różne harmonogramy i procesy wydań. Oddzielne git repo, KMS, dynamo, s3 lub w systemie zarządzania konfiguracją (chef-vault / szyfrowana baza danych w świecie kucharzy) to dobre miejsca. Zasadniczo nie musisz budować i wdrażać nowej wersji oprogramowania, aby zaktualizować sekret.

Jeśli twoje potrzeby w zakresie zarządzania sekretami są bardziej złożone, dobrym pomysłem byłoby coś takiego jak Hasicorp Vault ( https://github.com/hashicorp/vault ).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.