Wreszcie, jesteś tak bardzo zakochany w Docker, że chcesz przenieść swoje krytyczne pod względem biznesowym systemy produkcyjne online z wrażliwymi danymi klientów do Docker Swarm. Niektórzy nawet już to zrobili. Innej organizacji nie stać na to z powodu polityki zabraniającej procesów produkcyjnych działających w trybie root.
Jaka może być lista kontrolna elementów składowych do rozważenia w środowisku produkcyjnym Docker? Nie potrzeba ich wszystkich, ale wszystkie powinny być ważne do oceny.
Oświadczenie: Wiem, że istnieje polityka SE, aby unikać „dużych niekończących się list”, ale myślę, że ta lista kontrolna nie może być bardzo duża ... i nieskończona noway.
Więc - czym są te bloki budynków?
- Jeśli jeszcze nie został wdrożony, rozważ uruchomienie systemu hosta Linux z zaawansowanymi ustawieniami bezpieczeństwa - wzmocnione jądro, SELinux itp.
- Zastanów się nad użyciem małego obrazu podstawowego Docker, takiego jak alpejski, busybox, a nawet zadrapania, np. Zacznij od pustego obrazu podstawowego
- Użyj ustawienia USER innego niż root
- Ostrożnie oceń, aby jeszcze bardziej zmniejszyć i tak już zmniejszony zestaw możliwości jądra przyznanych kontenerowi
- Rozważ użycie tylko jednego pliku binarnego na kontener do uruchomienia procesu, idealnie powiązanego statycznie
- Ci, którzy chcą złamać system, aby uzyskać dostęp do powłoki, mogą się zastanawiać, czy dowiedzieli się, że w twoim kontenerze zostały wyłączone wszystkie powłoki
- Montuj woluminy tylko do odczytu tam, gdzie to możliwe
Pytanie: co jeszcze?
devsecops
?Consider using a tiny Docker base image, like alpine, busybox or even scratch e.g. start with an empty base image
zwiększa to bezpieczeństwo?Odpowiedzi:
Host, na którym działają kontenery
Uruchom ławkę zabezpieczeń dokera na każdym węźle, który uruchamia kontenery dokowania https://github.com/docker/docker-bench-security
Uruchom następujące polecenie w węźle, który obsługuje kontenery dokerów:
zwraca listę kontroli:
Cytat z repozytorium README:
Niektóre problemy zgłoszone przez ławkę bezpieczeństwa można rozwiązać, czytając oficjalny artykuł dotyczący bezpieczeństwa dokera i porównując go z punktorami zdefiniowanymi w pytaniu, ważne są również następujące rzeczy:
DOCKER_CONTENT_TRUST
zmiennejźródło
Docker jest wciąż w fazie rozwoju.
Ponieważ przy każdym innym oprogramowaniu pojawią się błędy, mogą zostać dodane niepewne funkcje, mogą wystąpić wady architektoniczne prowadzące do naruszenia bezpieczeństwa. Nie lekceważ tego! Twój system może być dziś całkowicie bezpieczny, ale dzięki łatce z następnego tygodnia ktoś znajdzie błąd, napisze exploita i nagle twój system jest szeroko otwarty.
Jeśli nie musisz, nie aktualizuj do najnowszej wersji. Zamiast tego użyj najnowszej sprawdzonej wersji.
Docker to nie wirtualizacja
Jeśli ktoś ucieknie z kontenera Docker, atakujący jest natychmiast na prawdziwej maszynie. Nie ma drugiej bramki, takiej jak wirtualizacja, która zapobiegałaby naruszeniu.
Traktuj kontener Docker jak każdy inny program. Uruchom z możliwie najniższymi uprawnieniami użytkownika, zablokuj cały niepotrzebny ruch sieciowy, zwirtualizuj cały host Dockera, jeśli pozwala na to wydajność.
Doker nie stanowi ochrony
Jakikolwiek kod jest uruchamiany w kontenerach Docker, jest uruchamiany bez pytania z Docker. Każdy atakujący może po prostu zainstalować swoje oprogramowanie w kontenerze, a Docker uruchomiłby go tak jak każdy inny kod.
Oprócz rzeczy wymienionych w pytaniu, rozważ użycie metryk i alertów, aby otrzymywać powiadomienia, jeśli jakikolwiek obraz Dockera robi dziwne rzeczy. Czy występuje nagły, ciągły skok procesora? Czy program nagle skanuje porty sieciowe? Czy istnieje podejrzany dostęp do dysku? Powinieneś otrzymać powiadomienie, jeśli coś takiego się wydarzy. Istnieje wiele narzędzi do pomiaru tych rzeczy, powinieneś ich użyć.
źródło
Sam obraz dokera
Dodatkową opcją jest użycie Clair .
źródło
Oprócz punktów w tym wątku; moje zalecenie byłoby następujące:
źródło
Jeśli wypełniasz punkt wejścia dokera
sed
poleceniami, rozważ tę praktykę:Confd odczyta dane z wielu obsługiwanych magazynów klucz-wartość i dynamicznie wyświetli szablony konfiguracji.
źródło
Można użyć A2D do upieczenia aplikacji na obrazie dokera, biorąc pod uwagę pewne rzeczy, np. Inne niż root, uprawnienia, lokalizacja aplikacji:
zwroty:
źródło