W przypadku serverless.com najprostszym sposobem na ujawnienie sekretu funkcji AWS Lambda jest przechowanie go w serverless.yml
pliku (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?
security
aws-lambda
serverless
encryption
Assaf Lavie
źródło
źródło
Odpowiedzi:
Należy wziąć pod uwagę kilka elementów:
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.
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ę.
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ę:
źródło
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 ).
źródło