Obecnie jesteśmy uruchomioną aplikacją na pojedynczym kontenerze dokowanym, aplikacja potrzebuje różnego rodzaju poufnych danych, aby były przekazywane jako zmienne środowiskowe,
Umieszczam je w poleceniu uruchomienia, aby nie kończyły się na obrazie, a następnie w repozytorium, jednak otrzymuję bardzo niezabezpieczone polecenie uruchamiania,
Teraz rozumiem, że istnieją tajemnice dokerów, ale jak mogę ich używać bez wdrażania klastra? czy jest jakiś inny sposób zabezpieczenia tych danych?
Z poważaniem,
security
docker
docker-swarm
Juan Sebastian
źródło
źródło
Odpowiedzi:
Nie możesz ... To nie obsługuje tajemnic bez Roju. Chyba że „może” być „rojem” za pomocą tylko jednego węzła.
Innym rozwiązaniem byłoby, jak sądzę, użycie oprogramowania skarbca innej firmy, takiego jak to:
https://www.vaultproject.io/
Ale aby użyć sekretów w swoich kontenerach z Vault, musisz przeczytać dokument.
Mam nadzieję, że doprowadzi Cię to do właściwej ścieżki, aby rozpocząć.
źródło
build-args
nie są uwzględnione w ostatecznym obrazie, ale można uzyskać do nich dostęp tylko podczas kompilacji obrazu. Odpowiednim rozwiązaniem jest zapisanie sekretów do plików na hoście (oczywiście z odpowiednimi uprawnieniami), a następnie zamontowanie ich w wolumenie w kontenerze dokera. Twoja aplikacja w kontenerze może następnie odczytać sekrety z tych plikówTak , możesz użyć tajemnic, jeśli używasz pliku redagowania . (Nie musisz biegać w roju).
Używasz pliku komponowania z dokerem-komponuj : w pliku docker-compose.yml znajduje się dokumentacja dotycząca „sekretów” .
Przerzuciłem się na komponowanie dokerów, ponieważ chciałem używać sekretów. Cieszę się, że to zrobiłem, wydaje się znacznie czystsze. Każda usługa jest mapowana do kontenera. A jeśli kiedykolwiek chcesz zamiast tego przejść do roju, to po prostu już tam jesteś.
Uwaga: Sekrety nie są ładowane do środowiska kontenera, są montowane w / run / secrets /
Oto przykład:
1) Struktura projektu:
2) zawartość docker-compose.yml:
3) zawartość super_duper_secret.txt:
4) Uruchom to polecenie z katalogu głównego projektu, aby sprawdzić, czy kontener ma dostęp do Twojego klucza tajnego (Docker musi być uruchomiony, a komponent dokujący-zainstalowany):
Powinieneś zobaczyć swój kontener wyprowadzający swój sekret.
źródło
docker-compose
użycia tajemnicy? Dokumentacja i moje zrozumienie implementacji wskazują, że sekret nie zostanie skonfigurowany w kontenerze.docker-compose.yml
w jednym węźle); kiedy zaczynam, kontener/run
zawiera tylkonginx.pid
i nie maMounts
ichdocker inspect $container
.