Jak zapewnić bezpieczeństwo kontenerów w środowisku Docker?

Docker® ma wiele ruchomych części, przez co zabezpieczenie go jest trudniejsze od zabezpieczenia starszych technologii wdrażania. W przypadku tego systemu konieczne jest podejście kompleksowe, tzn. należy zająć się wszystkim od sieci i zapór, przez ochronę środowiska wykonawczego kontenerów po zabezpieczenie hosta.

Bezpieczeństwo kontenerów w środowisku Docker

Zabezpieczanie kontenerów w środowisku Docker nie różni się niczym od zabezpieczania innych kontenerów. Należy zastosować kompleksowe podejście obejmujące wszystko od hosta do sieci. Wiele organizacji ma problemy z zabezpieczaniem kontenerów z powodu ich ruchomych części, które zmuszają do zachowania wyjątkowej czujności. 

O czym należy pamiętać

Oto kilka kwestii, o których należy pamiętać przy zabezpieczaniu kontenerów na platformie Docker:

  • Wprowadzenie limitów wykorzystania zasobów
  • Kontenery środowiska Docker nie powinny działać jako użytkownik root
  • Bezpieczeństwo rejestrów kontenerów Docker
  • Korzystanie z zaufanego źródła
  • Sprawdzenie źródła kodu
  • Przy projektowaniu interfejsów API i sieci należy mieć na względzie kwestie bezpieczeństwa

 

Wprowadzenie limitów wykorzystania zasobów

Limity wykorzystania zasobów umożliwiają ograniczenie zużycia pamięci i procesora przez kontener. Konfiguracja limitów wykorzystania zasobów na każdym kontenerze nie tylko zwiększa wydajność środowiska, ale dodatkowo zapobiega nierównomiernemu rozłożeniu zasobów między wszystkie kontenery w środowisku.

Dzięki temu kontenery będą działać z oczekiwaną wydajnością i co najważniejsze będą bezpieczniejsze. Jeśli jeden kontener zostanie zainfekowany, konsekwencje tego ataku zostaną ograniczone dzięki limitom, które uniemożliwią wykorzystanie ogromnych ilości zasobów. To prosta metoda zapewniania bezpieczeństwa, którą można zastosować przy użyciu flag wiersza poleceń.

Kontenery środowiska Docker nie powinny działać jako użytkownik root

Jedną z najlepszych praktyk budowy aplikacji jest przestrzeganie zasady przyznawania możliwie jak najmniejszych uprawnień. Oznacza to, że aplikacji należy nadać najmniejsze uprawnienia wystarczające jej do normalnego funkcjonowania. Jest to jeden z najlepszych sposobów na ochronę kontenerów przed nieuprawnionym dostępem.

Ma to kluczowe znaczenie dla bezpieczeństwa kontenerów w środowisku Docker i stanowi przyczynę, dla której domyślnie kontenery te nie działają z uprawnieniami root. Gdyby na przykład dana aplikacja kontenerowa była podatna na pewien exploit, a zawierający ją kontener miałby uprawnienia użytkownika root, zwiększyłoby to powierzchnię ataku i dałoby hackerowi możliwość łatwego zdobycia wysokich uprawnień w systemie.

Bezpieczeństwo rejestrów kontenerów w środowisku Docker

Rejestry kontenerów, szczególnie te w kontenerach w środowisku Docker, stanowią jedną z wielkich zalet tej platformy. Przy ich użyciu można tworzyć centralne repozytoria obrazów, które można łatwo i szybko pobierać. Jednak mimo niewątpliwych zalet, rejestry stwarzają też poważne zagrożenie bezpieczeństwa. Dlatego najlepiej jest korzystać z zaufanych i dokładnie zbadanych rejestrów, takich jak Docker Trusted Registry. Obrazy pobrane z rejestru Dockera instaluje się za zaporą, która jest już wdrożona w infrastrukturze IT, aby zmniejszyć ryzyko zagrożeń pochodzących z Internetu, ale nawet w takim przypadku nie należy pozwalać użytkownikom na wysyłanie danych do rejestru ani ich stamtąd pobieranie.

Choć perspektywa uniknięcia całej tej pracy dzięki udzieleniu otwartego dostępu może być bardzo kusząca, zaakceptowanie tej drobnej niedogodności może zapobiec poważnemu naruszeniu bezpieczeństwa rejestru. Dobrym rozwiązaniem w takiej sytuacji jest implementacja kontroli dostępu opartej na rolach, która pozwala na precyzyjne określenie uprawnień użytkowników do zasobów.

Korzystanie z zaufanego źródła

Po zabezpieczeniu rejestru kontenerów należy dopilnować, aby nie zainfekować go obrazami kontenerów uzyskanych z niezaufanego źródła. Pobranie gotowych obrazów kontenerów z publicznego źródła za pomocą jednego kliknięcia myszą może wydawać się bardzo wygodnym rozwiązaniem, ale zawsze należy upewnić się, czy jest to sprawdzone i godne zaufania źródło.

Ze względów bezpieczeństwa najlepiej jest unikać publicznych rejestrów kontenerów i korzystać wyłącznie z oferowanych przez Dockera, takich jak Docker Hub. Aby wzmocnić ochronę swoich kontenerów w środowisku Docker, należy zbadać je za pomocą skanerów wyszukujących luki bezpieczeństwa w obrazach i je zlikwidować. 

Sprawdzenie źródła kodu

Jak zostało już napisane, kontenery środowiska Docker należy pobierać z zaufanych źródeł obrazów. Ponadto dobrym zwyczajem jest przejrzenie źródła obrazu pod kątem obecności zainfekowanego kodu, nawet jeśli obraz ten pochodzi z zaufanego rejestru. Obrazy środowiska Docker zawierają zarówno oryginalny kod źródłowy, jak i pakiety ze źródeł zewnętrznych, które mogą nie być wiarygodne.

W takim przypadku najlepiej jest skorzystać z narzędzi do analizy kodu źródłowego. Po pobraniu obrazów można przeskanować zawarte w nich pakiety, aby określić pochodzenie kodu przez pobranie ich źródeł. To pozwala wykryć ewentualne znane luki bezpieczeństwa w obrazach i zapewnienie bezpieczeństwa od samego początku.

Przy projektowaniu interfejsów API i sieci należy mieć na względzie kwestie bezpieczeństwa

Kontenery w środowisku Docker komunikują się ze sobą za pośrednictwem interfejsów API i sieci. Ta komunikacja jest niezbędna do ich poprawnego działania, ale wymaga odpowiednich zabezpieczeń i monitoringu. Choć interfejsy API i sieć nie stanowią części kontenera środowiska Docker, lecz są zasobami, których używa się razem z nim, to jednak również mogą być źródłem ryzyka. W związku z tym, aby zapewnić sobie możliwość powstrzymywania ataków, interfejsy API i sieci należy projektować z myślą o monitoringu i bezpieczeństwie. 

Podsumowanie

Zabezpieczanie kontenerów w środowisku Docker to nie bułka z masłem, ale gra jest warta świeczki. Należy zastosować kompleksowe podejście i zwiększać bezpieczeństwo środowiska na każdym poziomie. Choć powyższe porady mogą się wydawać trudne w realizacji, ich przestrzeganie oszczędzi Ci mnóstwo czasu w przyszłości oraz zmniejszy ryzyko ze strony poważnych zagrożeń bezpieczeństwa. 

Tematy dotyczące bezpieczeństwa kontenerów