Czy zmienne środowiskowe Elastic Beanstalk są odpowiednim miejscem do przechowywania tajnych wartości?

15

Wdrożyłem moją aplikację Django w Elastic Beanstalk z zamiarem użycia interfejsu konfiguracji zmiennych środowiskowych do przechowywania kluczy API zamiast przechowywania ich w źródle (jak opisano tutaj /programming//a/17878600 ).

Po zrobieniu tego, dowiedziałem się, że to, co Beanstalk nazywa zmiennymi środowiskowymi, nie jest tak naprawdę zmiennymi środowiskowymi powłoki (jak wspomniano tutaj /programming//a/24564832/378638 ) i są przechowywane w instancji w pliku konfiguracyjnym (jako opisane tutaj /programming//a/24566283/378638 ).

To wydaje mi się problemem bezpieczeństwa. Czy nie jest to sprzeczne z celem trzymania tajnych kluczy z dala od źródła? Rozumiem, że nie ma ich już w repozytorium, ale nadal są dostępne w instancji.

Czy nie rozumiem ryzyka? Jestem sysadminem przez dziedziczenie, więc proszę usprawiedliwić moją ignorancję tutaj. Czy powinienem po prostu załadować zmienne Beanstalk jako zmienne środowiskowe powłoki poprzez plik konfiguracyjny i przejść dalej, ponieważ plik jest dostępny tylko przez root, czy moja obawa jest ważna? Dziękuję Ci.

M. Keller
źródło

Odpowiedzi:

12

Celem ukrywania tajemnic przed kodem źródłowym jest to, aby nie wchodzili w kontrolę źródła . Jest to szczególnie przydatne w projektach typu open source.

Po wdrożeniu nie ma znaczenia, czy sekret znajduje się w pliku, czy w środowisku envvar. Ważne jest to, że tylko użytkownik systemu operacyjnego, który uruchamia Twój program, może go odczytać. Jest to ustawienie domyślne dla envvars, co jest wygodne.

Root zawsze może przeczytać wszystko. Dzięki temu Amazon może poznać twoje tajne wartości, jeśli chcą, ponieważ są rootowane.

Oni zrobić wspierać drogie modułów kryptograficznych (HSM), choć, które sprawiają, że klucze są nieczytelne. Oczywiście nadal mogą używać HSM do odszyfrowywania twoich danych, po prostu nigdy nie uzyskaj rzeczywistego klucza.

Musisz więc zaufać Amazonowi, samemu hostować rzeczy lub kolokować.

Neil McGuigan
źródło