Przystańmy do dokowania aplikacji (napisanej w Node.js), która będzie wymagać dostępu do niektórych poufnych danych w czasie wykonywania (tokeny API dla różnych usług) i nie mogę znaleźć żadnych zalecane podejście do radzenia sobie z tym.Docker i poufne informacje używane w czasie wykonywania
Niektóre informacje:
- Wrażliwe informacje nie są w naszym kodzie, ale jest utrzymany w innym repozytorium w formie zaszyfrowanej.
- W naszym obecnym wdrożeniu, bez Docker, aktualizujemy kod z git, a następnie ręcznie kopiujemy wrażliwe informacje przez SSH.
- ilustracje dokowane będą przechowywane w prywatnym, self-hosted rejestru
mogę myśleć o kilku różnych podejść, ale wszystkie z nich mają pewne wady:
- zawierać poufne informacje obrazy Dockera w czasie kompilacji. Jest to z pewnością najłatwiejszy; jednak sprawia, że są one dostępne dla każdego, kto ma dostęp do obrazu (nie wiem, czy powinniśmy tak bardzo ufać rejestrze).
- Podobnie jak 1, ale ma poświadczenia w obrazie tylko do odczytu.
- Utwórz wolumin na obrazie, który prowadzi do katalogu w systemie hosta, i ręcznie skopiuj poświadczenia za pośrednictwem SSH, tak jak teraz. Jest to również bardzo wygodne, ale nie możemy łatwo rozprowadzić nowych serwerów (może moglibyśmy użyć czegoś takiego, jak itd. do zsynchronizowania ich?)
- Przekaż informacje jako zmienne środowiskowe. Jednak mamy teraz 5 różnych par referencji API, co sprawia, że jest to trochę niewygodne. Co najważniejsze jednak, musielibyśmy zachować kolejną kopię poufnych informacji w skryptach konfiguracyjnych (polecenia, które będą wykonywane w celu uruchamiania obrazów Docker), a to z łatwością może powodować problemy (np. Poświadczenia przypadkowo zawarte w git, itp.).
PS: Zrobiłem pewne badania, ale nie mogłem znaleźć niczego podobnego do mojego problemu. Inne pytania (takie jak this one) dotyczyły poufnych informacji potrzebnych podczas budowania; w naszym przypadku potrzebujemy informacji w czasie wykonywania
Bardzo trudny problem do rozwiązania. Najlepsze rozwiązanie, jakie znalazłem, to skarbiec Hashicorp, ale projekt jest bardzo nowy: https://www.vaultproject.io/ –