‫W
‫porządku, więc nowa funkcja w 1. 13. 1 było pełne wsparcie dla tajemnic.
‫Gdybym miał stworzyć linię znaczników tego, co to jest, jest to zasadniczo "najłatwiejsze bezpieczne rozwiązanie do przechowywania sekretów w
‫Swarm. "Mówię, że
‫jest najłatwiejszy, ponieważ jest wbudowany w Swarm, wychodzi z pudełka
‫i nie ma nic, co musisz zrobić, aby go użyć. Dopóki zainicjowałeś swój rój i twoją
‫wersję 1. 13
‫lub nowszy, masz sekrety. Mówię, że jest bezpieczny, ponieważ został zaprojektowany od podstaw
‫w celu zaszyfrowania na dysku, aby mógł być szyfrowany w tranzycie i dostępny tylko dla miejsc, które powinien.
‫I naprawdę tego potrzebujemy.
‫Czym jest sekret? Sekretem w tym przypadku jest klasyfikowanie wszystkiego, czego nie
‫chcesz na pierwszej stronie gazety. Jeśli pojawił się na pierwszej stronie i musiałeś
‫to zmienić, to sekret.
‫Jest to nazwa użytkownika
‫lub hasło, jest to certyfikat TLS lub
‫klucze do niego,
‫jest to klucz SSH, klucz do Twitter API, jest to klucz Amazon, to wszystko, czego potrzebujesz, aby umożliwić łączność
‫między rzeczami, jest prawdopodobnie tajemnicą i powinieneś chronić to.
‫Do tej pory nie mieliśmy wielu świetnych opcji dla Swarm.
‫Z całą pewnością jest wiele opcji, takich jak Vault i inne świetne narzędzia do przechowywania sekretów, ale
‫nie zostały one wbudowane i wymagały osobnej konfiguracji infrastruktury, aby można było nawet zacząć
‫z nich korzystać.
‫Możemy zapisać tutaj wszystko, co jest ciągiem lub plikiem binarnym do. 5 MB w rozmiarze.
‫A najfajniejszą częścią tego jest to, że nie wymaga ona od ciebie ponownego napisania aplikacji, aby z
‫niej skorzystać.
‫Aby uzyskać te informacje, nie musisz rozmawiać o aplikacji z usługą sieciową w innym miejscu.
‫Zobaczmy więc, jak to działa.
‫Od 1. 13. 0 Baza danych Roju Raft jest domyślnie zaszyfrowana na dysku. Jeśli zainstalujesz Docker i zrobisz
‫inicjację roju, tak jak robiliśmy to wcześniej, jest
‫to zaszyfrowana baza danych.
‫A kiedy zamknie usługę, zostanie zaszyfrowane za pomocą bezpiecznie zapisanych kluczy.
‫Jest przechowywany tylko na dysku węzłów menedżera i tylko oni mają klucze
‫do odblokowania lub odszyfrowania.
‫To już istnieje w Swarm, ale w zasadzie sposób, w jaki klucze
‫docierają do kontenerów, odbywa się przez płaszczyznę kontrolną lub zaszyfrowaną komunikację
‫sieciową TLS pomiędzy menedżerami a pracownikami. Połączenie to było już bezpieczne, wykorzystywało już uwierzytelnianie TLS
‫i wzajemne PKI, więc był to świetny sposób na wykorzystanie istniejącego kanału do przekazywania tych tajemnic do naszych kontenerów.
‫Sposób, w jaki je otrzymujemy, polega na tym, że najpierw umieszczamy je w bazie danych Swarm przy użyciu poleceń
‫tajnych Docker.
‫Następnie przypisujemy je do usług, niezależnie od tego, czy korzystamy z samych komend usług, czy z pliku stosu,
‫aby poinformować Swarm, kto może korzystać z tego sekretu. Kluczem jest to, że tylko dlatego, że istnieje kontener na hoście lub
‫w węźle i przypisano klucz do tej usługi, nie oznacza to, że inne kontenery mogą uzyskać do
‫niego dostęp.
‫Ponieważ jest on wbudowany w silnik Docker, robot Docker utrzymuje klucz w pamięci tylko i tylko dociera
‫do kontenerów w tym węźle, który ich potrzebuje.
‫Teraz, w jaki sposób są one wyświetlane w systemie plików do kontenera, wygląda na to, że jest to plik na dysku
‫twardym do aplikacji w kontenerze.
‫Ale tak naprawdę nie jest tak. W rzeczywistości nie działają na dysku. Są w pamięci tylko
‫przy użyciu systemu plików ramfs, a dostaniesz je pod katalogiem / run / secrets, gdzie domyślnie będzie
‫to nazwa, którą podałeś jako plik tajny.
‫Wtedy, gdy tylko otworzysz ten plik, zobaczysz jeden sekret, który się w nim znajduje.
‫Jeśli myślisz o tym jak o składnicy
‫kluczy kluczowych, klucz jest nazwą pliku, a wartość jest tym, co jest w nim zawarte.
‫Możemy również skonfigurować aliasy, abyśmy mogli mieć wiele nazw dla tego samego klucza, a zobaczymy, jak to
‫się stanie później.
‫W przypadku lokalnego rozwoju, jeśli używasz pliku stosu, który zawiera tajne przypisania, będzie on działał w Dockerze
‫Compose na twoim lokalnym komputerze.
‫Teraz znowu, wiersz poleceń, nigdy nie powinien być używany w produkcji na serwerze produkcyjnym.
‫W tym przypadku w szczególności jest to fałszowanie zabezpieczeń.
‫Dlatego naprawdę chcemy, aby programista Docker lub użytkownik Docker na swoim komputerze mógł używać plików stosów
‫tak bardzo, jak to tylko możliwe.
‫Zatem kontenery, które uruchamiasz na swojej lokalnej maszynie, rzeczywiście zobaczą sekrety dokładnie tak, jak
‫w Swarm.
‫Ale nie mamy Swarm na naszej lokalnej maszynie, chyba że ją zainicjujemy, czego
‫większość ludzi nie zrobi.
‫A sposób, w jaki przechowujemy sekrety, znajduje się w bazie danych Swarm.
‫To może być dla ciebie oczywiste, ale tajemnice zależą od Swarm. To jest tylko rój. Jeśli nie masz
‫Swarm, nie możesz używać sekretów.
‫Jednak polecenie docker-compose ma obejście, w którym faktycznie montuje sekrety w czystym pliku tekstowym
‫do lokalnego kontenera.
‫Teraz to nie jest bezpieczne, ale pozwala nam używać sekretów lokalnie na naszym komputerze.
‫To nie jest coś, co chciałbyś wykorzystać w produkcji, dlatego mamy bezpieczny sklep dla
‫Swarm.