Izolacja kontenerów Dockera

Izolacja kontenerów Dockera

W tym materiale chcę omówić jeden z najważniejszych aspektów Dockera, jakim jest izolacja kontenerów Dockera. Możesz się zastanawiać, po co w ogóle interesować się tym? Jednak wiedz, że dzięki tej izolacji aplikacje lub też, jeżeli wolisz ogólniej, to, co uruchomisz w kontenerze, działa w bezpiecznym i odseparowanym środowisku. Dzięki temu, co byś nie uruchomił w swoim kontenerze, nie będzie miało wpływu na główny system hosta. W ten sposób nie zakłócisz funkcjonowania swojego systemu bazowego, czy też serwera, ponieważ to, co uruchomione w kontenerze w nim pozostaje. Dlatego nawet przy uruchomieniu złośliwego oprogramowania nie będzie ono miało wpływu na inne kontenery, czy też jak wspomniałem, na główny system. Natomiast wbudowana metoda nie jest jedynym rozwiązaniem z jakiego możesz skorzystać.

W tym materiale chciałbym pokazać Ci, że tak naprawdę izolacja kontenerów Dockera jest to bardzo rozbudowany system, dlatego warto poświęcić mu trochę uwagi. Dzięki niej jesteś w stanie osiągnąć poziom bezpieczeństwa, jaki jest Ci potrzebny.

 

Akcja Wiosenna - Promocja na najnowsze kursy w naszej ofercie!

Do końca marca masz możliwość zakupić najnowsze kursy:

  • Wdrożenie Serwera NGINX w Chmurze
  • NGINX jako Ingress w K8s
  • Kurs Grafany

Dodatkowo odbierz za darmo godzinny wykład "K8s Pod, MultiContainer Pod, Init Containers" na hasło "freek8s"!

Promocja trwa do 31 marca do godziny 23:59. 

Chcesz wziąć udział w kursie? Kliknij w link: https://asdevops.pl/promocja-marzec-2024

 

 

 

 

 

Znaczenie sformułowania “izolacja kontenerów Dockera”.

Trochę o tym wspomniałem na wstępie, dlatego możliwe, że się powtórzę. Jednak chciałbym, abyś wiedział, że przez izolacja kontenerów Dockera to wyodrębnione miejsce, w którym istnieje, to co znajduje się wewnątrz kontenera. W ten sposób to, co jest w nim, w żaden sposób nie wpływa ani na inne kontenery, ani na system hosta. Na inne kontenery nie wpływa, ponieważ każdy kontener ma swoją własną wyznaczoną przestrzeń, na której działa i pracuje. Jest to kluczowym aspektem Dockera i konteneryzacji z nim związanej. W ten sposób możemy zabezpieczyć dostęp do poufnych danych, ponieważ każdy kontener posiada swój własny system plików, sieć i zasoby. Dlatego, jeżeli któryś zostanie naruszony to pozostałe już nie.

Dlaczego izolacja kontenerów Dockera jest ważna?

Wyobraź sobie sytuację, że chcesz uruchomić kilka instancji tego samego oprogramowania z różnymi ustawieniami na jednym hoście. Przy pomocy kontenerów możesz zrobić to w bardzo prosty sposób. Możesz nawet stworzyć 100 instancji kontenerów z tego samego obrazu, i jeszcze więcej, o ile pozwoli Ci ilość zasobów znajdująca się na urządzeniu. Każdy z tych programów, przepraszam, kontenerów zawierających program będzie wykonywał jakieś czynności na danych. Niektóre z tych kontenerów będą zawierały bardzo poufne dane, niektóre segregowały rysunki dzieci zgodnie z kolorami, jakie użyły. Wybacz przykład, bo jest to raczej niemożliwe, ale obrazuje wagę izolacji. Na tym samym hoście możemy uruchomić kontenery, które działają na danych poufnych i to dzięki izolacji. Kontenery nie oddziaływają na siebie w jakiś sposób, ba one nawet nie wiedzą co który wykonuje. Jest to możliwe dzięki wspomnianej izolacji oraz dzięki temu, że kontener działa we własnym środowisku i ma własne zasoby.

Jednak, aby ta wizja nie zamydliła Ci oczu. Nie istnieje idealne zabezpieczenie, dlatego też nawet dzięki tej izolacji ktoś może obejść zabezpieczenie. Izolacja w kontenerach jest środkiem dodatkowej ochrony, jednak nie gwarantuje stuprocentowego bezpieczeństwa. Jak bezmyślny był przykład prezentowany powyżej z segregowaniem danych poufnych i obrazków dzieci na jednym hoście, tak i nieodpowiedzialne jest wierzyć w idealność izolacji Dockera.

Podsumowując i powtarzając się, izolacja, którą zapewnia Docker swoim kontenerom, jest dodatkowym środkiem zabezpieczeń, jednak nie gwarantuje 100% ochrony.

Techniki izolacji kontenerów Dockera

Nie istnieje tylko jeden podstawowy sposób izolacji występujący w Dockerze. W tej części chcę w skrócie omówić każdą z możliwości, a następnie wdać się w szczegóły. Czyli na początku pokażę Ci ogrom technik zabezpieczających, jakimi dysponuje Docker. Następnie omówię je w skrócony sposób. Na końcu w poszczególnych akapitach skupię się na każdym z nich bardziej szczegółowo.

By uniknąć nieporozumień, korzystać będę z angielskiego nazewnictwa. Robię to, ponieważ polskie tłumaczenie bywa bardzo często mylące. Przyznać też muszę, że osobiście do tej pory korzystałem z angielskich nazw. W związku z tym, że chciałbym być jak najlepiej zrozumianym, dlatego nie będę eksperymentował z polskimi określeniami.

Izolacja kontenerów Dockera – techniki:

Namespaces: tworzone jest izolowane środowisko dla kontenerów, które mają własne zasoby systemowe takie jak sieć czy też system plików.

Control Groups (Cgroups): dzięki tej technice możemy kontrolować i ograniczać zasoby kontenerom. Przy pomocy odpowiedniemu podziałowi kontener otrzyma taką ilością, jaka jest niezbędna. W ten sposób nie wystąpi coś w rodzaju marnotrawstwa zasobów, jak i również nie odbierze zasobów pozostałym kontenerom.

Union File Systems: Docker wykorzystuje ten system plików do tworzenia obrazów, ponieważ pozwala on na utworzenie warstwowego systemu plików, dzięki któremu powstaje izolacja pomiędzy kontenerami a systemem hosta. Jest to jeden z elementów, który nie będzie opisany w dalszej części artykułu.

Seccomp: Jest to zaawansowana funkcja jądra Linux. Dzięki niej możemy definiować zasady wywołań systemowych, za pomocą których ograniczymy działania jakie, może wykonywać kontener. Korzystając z tej możliwości, powstrzymujemy funkcje kontenera, przez które mogłyby zaszkodzić hostowi i innym kontenerom.

AppArmor: Narzędzie bardzo często mylone z zaporą ogniową. Natomiast jest to pewnego rodzaju struktura kontroli dostępu do plików i zasobów systemowych. W Dockerze używa się go jako dodatkową warstwę bezpieczeństwa, ponieważ wymusza zasady na kontenerach.

SELinux: Jest to obowiązkowa struktura bezpieczeństwa kontroli dostępu dla systemów Linux. Służy do zapewnienia szczegółowej kontroli dostępu i egzekwowania zasad bezpieczeństwa w kontenerach.

Techniki, o których przed chwilą przeczytałeś, są dodatkowymi opcjami które w połączeniu ze standardową izolacją kontenerów zapewnić mogą solidną ochronę. Jednak nie zastępują podstawowej izolacji, tylko ją wzmacniają.

Namespaces

Pierwszą techniką z powyższej listy jest namespaces, czyli coś, co można rozumieć jako przestrzenie nazw znanych z języków programowania. To właśnie dzięki namespaces wszystko, co do tej pory opisałem, występuje w takiej formie. Docker korzysta z tej techniki, by stworzyć izolację pomiędzy hostem oraz pozostałymi kontenerami.

Gdy tworzymy kontener, Docker tworzy dla niego przestrzeń, w której dodatkowo generuje przestrzeń dla identyfikatora procesu, sieci, punktów montowania i komunikacji między nimi. Pomimo takiej złożoności namespaces, kontener działa, tak jakby był jedynym procesem, na maszynie hosta.

PID Namespace

PID jest to unikatowy identyfikator nadawany na proces w systemach operacyjnych. Natomiast pierwszy proces w systemach uniksowych, jaki jest uruchamiany, nosi nazwę init o numerze id 1. Służy on do inicjacji pozostałych procesów. Opisuję to na wstępie, ponieważ ma bardzo duże znaczenie co do opisywanej w tym podrozdziale technice. Każdy kontener posiada swoje własne izolowane drzewo procesów. Procesy wewnątrz kontenera nie są świadome istnienia procesów poza tymi, które mają uruchomione. Dlatego każdy kontener posiada swój własny proces inicjujący drzewo procesów, które jest oddzielone od pozostałych kontenerów, jak i od samego hosta. Omawiana technika jest automatycznie uruchamiana przy tworzeniu kontenera. Natomiast możesz to zmienić, jeżeli chciałbyś, aby kontener widział listę procesów hosta. Przy tworzeniu kontenera, jeżeli skorzystasz z opcji –pid=host to procesy kontenera będą używały tej samej przestrzeń nazw PID co host.

Network Namespace

Dość często wykorzystywana technika w Dockerze. Zapewnia kontenerowi własny stos sieciowy, jak i również własny interfejs, adres IP i routing. Oznacza to, że kontenery mogą komunikować się ze sobą oraz z systemem hosta przy pomocy wspomnianych wirtualnych interfejsów. Dzięki Network Namespace zapewniamy izolację kontenera, od innych, jak i również otrzymujemy możliwość konfigurowania różnych zasad sieciowych lub ograniczać dostęp do jakichś zasobów.

Najlepszym przykładem tego typu jest kilka instancji serwera WWW na jednym hoście. Tworząc taką przestrzeń nazw, tworzymy własne izolowane interfejsy sieciowe, adresy IP i routing dla każdej instancji wspomnianego serwera WWW. W ten sposób każda z nich ma własny stos sieciowy i uzyskujemy do niej dostęp przy pomocy adresu IP. Dzięki temu rozwiązaniu ułatwiamy sobie sprawę z konfiguracją sieci, ponieważ przy wykonywaniu jej nie wpływamy na inne instancje, co sprawia, że pozostałe funkcjonują niezależnie.

Mount Namespace

Dzięki tej technice oddzielamy system plików hosta od systemu plików kontenera. Natomiast sama idea Mount Namespaces jest taka, że procesy wewnątrz kontenera nie posiadają dostępu do systemu plików hosta. Jest to o tyle istotne, ponieważ jeżeli osoba niepowołana uzyska dostęp do kontenera, to nadal nie będzie miała dostępu do systemu plików hosta. Standardowo mechanizm ten działa na zasadzie, gdy kontener jest uruchamiany, otrzymuje własną przestrzeń montowania, a wszelkie wprowadzone w nim zmiany są tylko w jego obrębie. Dla przykładu, gdy korzystamy z woluminu, to pliki tam udostępnione też nie mają wpływu na system plików hosta, zostaną one tylko udostępnione jednak nieuruchomione. Dlatego ten system idealnie nadaje się, gdy pomiędzy kontenerami potrzebne jest współdzielenie plików.

User Namespace

Dzięki tej technice możemy zmniejszyć ryzyko nieautoryzowanego dostępu do wrażliwych zasobów i danych. Przy użyciu tej techniki jesteś w stanie każdemu kontenerowi nadać własne identyfikatory użytkowników i grup niezależnie od systemu hosta. Jest to dość rozbudowane, jednak bardzo dobrze zostało opisane w dokumentacji znajdującej się pod adresem https://docs.docker.com/engine/security/userns-remap/.

Control Groups (Cgroups)

Ta technika polega na zarządzaniu zasobami dostępnymi na urządzeniu, na którym został uruchomiony kontener. To właśnie dzięki tej funkcji jesteśmy w stanie każdemu z kontenerów przydzielić takie zasoby jak procesor, pamięć czy też nawet ustalić priorytety uruchamiania. Czyli w pewnym sensie Control Groups możemy określić jako narzędzie, dzięki któremu ograniczamy zasoby kontenera po to, aby lepiej je wykorzystać na przykład w innych kontenerach. Biorąc pod uwagę ich funkcje, odgrywają one bardzo istotną rolę w zapewnieniu bezpieczeństwa kontenerów, ponieważ kontrolują zasoby, do których kontener ma dostęp. To dzięki nim ustawiasz limity zasobów systemowych, z których korzysta kontener, dlatego sprawiasz, że wskazany kontener nie jest w stanie przekroczyć określonej ilości zasobów. Ma to ogromne znaczenie, gdy uruchamiasz kilka aplikacji na tym samym hoście.

Jak to zaprezentowałem w poprzednim akapicie Control Groups to potężny mechanizm w Dockerze, który pozwala kontrolować zasoby, do których kontener ma dostęp. Korzystając z Cgroups, możesz ustawić limity procesora, pamięci, dyskowych operacji we/wy i innych zasobów systemowych, z których może korzystać kontener. Może to pomóc upewnić się, że kontenery nie zużywają zbyt wielu zasobów i nie powodują problemów z wydajnością lub stabilnością systemu hosta. Natomiast nadanie ograniczenie nie należy do bardzo skomplikowanych, a mianowicie wystarczy, że dodasz opcję do polecenia, które powinieneś już dobrze znać:

docker run -it --memory 500m ubuntu /bin/bash

W tym przykładzie używam opcji –memory, aby określić, że chcę ograniczyć pamięć kontenera do 500 MB. Jeżeli kontener zechce przekroczyć wyznaczoną ilość pamięci, ta możliwość zostanie zablokowana.

Seccomp

Seccomp, skrót od Secure Computing Mode, to funkcja jądra Linuksa, która zapewnia mechanizm ograniczania wywołań systemowych, jaką może wykonać proces. Jest to ważne, ponieważ wywołania systemowe mogą umożliwić złośliwemu oprogramowaniu interakcję z bazowym systemem operacyjnym hosta i potencjalnie wyrządzić szkody. Dzięki Seccomp można zdefiniować zasady określające, które wywołania systemowe są dozwolone dla procesu, a które odrzucane.

Natomiast nie należy to do zadań łatwych. Wymaga stworzenia odpowiedniego pliku konfiguracyjnego w formacie json. Dlatego po głębokiej analizie dokumentacji ze strony https://docs.docker.com/engine/security/seccomp/ możemy stworzyć prosty plik zawierający proste instrukcje postępowania. Jednak jak wiadomo, nie ma opcji pasującej do wszystkiego, dlatego załóżmy, że mamy aplikację, która działa w kontenerze. Jest ona podatna na awarie, jeżeli wykonuje określone wywołanie systemowe. Mniej więcej definicja profilu, który zablokuje takie problematyczne wywołanie systemowe, powinna wyglądać następująco:

{
	"defaultAction": "SCMP_ACT_ALLOW",
	"syscalls": [
    		{
        			"name": "write",
        			"action": "SCMP_ACT_ERRNO"
    		},
    		{
        			"name": "open",
        			"action": "SCMP_ACT_ERRNO"
    		}
	]
}

Natomiast wywołanie powinno wyglądać mniej więcej w następujący sposób:

docker run --rm -it --security-opt seccomp=/path/to/seccomp/profile.json <obraz-z-aplikacją>

Wskazany przykład jest pewnego rodzaju abstrakcją, wymagałby aplikacji, która sprawiałaby opisany problem. Warto jeszcze zerknąć na plik, jaki standardowo jest używany, gdy uruchamiamy kontener. Znajduje się on pod adresem https://github.com/moby/moby/blob/master/profiles/seccomp/default.json.

AppArmor i SELinux

Możliwe, że słyszałeś o zabezpieczeniach jak AppArmor i SELinux. Są to zestawy polityk i reguł bezpieczeństwa dla systemu Linux, które dostępne są również w kontenerach Dockera. Jeśli chcesz zabezpieczyć swoje kontenery, AppArmor i SELinux są to dwa narzędzia, które warto rozważyć. Zapewniają dodatkową warstwę zabezpieczeń, która może pomóc w ochronie przed złośliwymi atakami i nieautoryzowanym dostępem. Natomiast warto zerknąć do dokumentacji:

AppArmor: https://docs.docker.com/engine/security/apparmor/

Niestety oficjalnej dokumentacji dla SELinux nie udało mi się odnaleźć.

Dobre praktyki – izolacja kontenerów Dockera

Poniżej prezentuję kilka najlepszych praktyk dotyczących izolowania kontenerów:

  1. Użyj najnowszej wersji Dockera, dzięki temu zapewnisz dostęp do najnowszych funkcji, zabezpieczeń i poprawek błędów.
  2. Izoluj kontenery od siebie, korzystając z przestrzeni nazw, oraz innych opisywanych form izolacji, aby uniemożliwić jednemu kontenerowi zakłócanie działania lub dostępu do drugiego.
  3. Ogranicz dostęp do systemu hosta przy pomocy mount namespace, aby ograniczyć dostęp do systemu plików hosta i przestrzeni nazw sieci.
  4. Włącz AppArmor lub SELinux, ponieważ te struktury zabezpieczeń mogą pomóc w dalszym izolowaniu kontenerów i ograniczaniu działań, które może wykonywać kontener.
  5. Monitoruj kontenery pod kątem nieoczekiwanego zachowania i w razie potrzeby wprowadzaj zmiany w celu zwiększenia bezpieczeństwa.
  6. Regularnie aktualizuj obrazy, dzięki czemu będą one posiadały najnowsze poprawki zabezpieczeń i poprawki błędów.
  7. Uważaj na pobierane obrazy i pobieraj je tylko z zaufanych źródeł. Zawsze testuj je, czy nie posiadają luk w zabezpieczeniach przed ich wdrożeniem.

Stosując się do tych kilku zasad, zapewnisz swoim kontenerom, jak i aplikacjom w nich uruchomionym wysoki poziom bezpieczeństwa. Jednak nie zwalnia Cię to z konieczności monitorowania występowania luk.

Dobór odpowiednich technik

W poprzednich akapitach omówiłem techniki izolacji kontenera, natomiast w tym chciałbym porozmawiać o odpowiednim ich doborze. Każda z tych nazwijmy to grupami, zapewnia różny poziom bezpieczeństwa, dlatego odpowiedni ich wybór zależy też od tego, co mamy zainstalowane w kontenerze. Nie zawsze istnieje konieczność, jak i również potrzeba stosowania ich wszystkich czy też większości z nich. W ramach przykładu, gdy chcemy odizolować jedynie od siebie kontenery, aby uniemożliwić jednemu kontenerowi dostęp do zasobów należących do innego kontenera, wystarczy, że skorzystamy z namespaces. Natomiast jeżeli chcemy dodatkowo przydzielić określoną liczbę zasobów pomiędzy kontenerami, to powinniśmy skorzystać z Control Groups.

Pamiętaj jednak, że wymienione techniki nie wykluczają się wzajemnie. Dlatego możesz stosować je wszystkie w tym samym kontenerze. Jednak konfiguracja ich wszystkich w niektórych przypadkach bardziej utrudnić może nam posługiwanie się aplikacją w kontenerze. Jednak zawsze warto kombinować z nimi, aby zapewnić pożądany poziom bezpieczeństwa i kontroli. W związku z powyższym przy wyborze technik izolacji powinieneś przemyśleć następujące kwestie:

  • jakie są szczegółowe wymagania dotyczące bezpieczeństwa;
  • jaki powinien być poziom kontroli nad zasobami systemowymi;
  • jaki powinien być poziom dostępu do twojego kontenera z aplikacją / aplikacjami.

W przypadku, gdy kontener zawiera wrażliwą aplikację, możesz potrzebować, skorzystać z wielu technik izolacji w celu zapewniania maksymalnego bezpieczeństwa. Dlaczego nie w każdym? Można by tak założyć i w każdym wypadku korzystać z technik izolacji jak na przykład AppArmor i SELinux. Jednak te mogą wymagać ogromnej ilości zasobów, przez co negatywnie wpływać na wydajność kontenerów. W przypadkach ograniczonych możliwości warto przemyśleć i czy nie skorzystać z lżejszych możliwości jakimi są Seccomp, czy też same Namespaces.

Pamiętaj, że…

AppArmor i SELinux nie są dostępne, w każdej dystrybucji Linux co za tym idzie, nie każdy system obsługuje jedną i drugą technikę. Na przykład SELinux w kontenerach Dockera działa głównie, gdy kontener posiada dystrybucję z rodziny Red Hat Enterprise Linux. Jest to o tyle istotne przy planowaniu, bo musisz upewnić się, czy w danej dystrybucji masz możliwość użycia tej platformy.

Pamiętaj o odpowiednim poziomie wiedzy jaką musisz posiadać przy AppArmor i SELinux, ponieważ ich konfiguracja nie należy do najprostszych, dlatego czasami warto zastanowić się, czy poziom wiedzy jaki posiadamy, pozwala mi na skorzystanie z tych narzędzi. Jeżeli odpowiesz sobie przecząco to albo przed wykorzystanie tych technik doucz się, albo użyj łatwiejszych rozwiązań jak namespaces.

W wielu przypadkach samo Namespaces jako zabezpieczenie wystarczy. Dlatego musisz solidnie zastanowić się jakie dane zamierzasz umieścić w danym kontenerze i jakie metody będą niezbędne, by zapewnić im bezpieczeństwo względem posiadanych zasobów oraz własnych umiejętności.

Przydzielanie zasobów kontenerowi

W sytuacji, kiedy uczysz się Dockera czy też ogólnie poznajesz konteneryzacje, przydzielanie zasobów nie ma większego znaczenia. Gdy zaczynasz korzystać z Dockera w sposób produkcyjny, zawsze warto kontenerom przydzielić odpowiednią ich ilość. Należy to do dobrych praktyk, ponieważ nawet jeżeli kontener zostanie naruszony, to osoba nieupoważniona w żaden sposób nie wpłynie na pozostałe uruchomione kontenery poprzez użycie całych zasobów hosta. Nie jest to możliwe, ponieważ Docker nie pozwala przekroczyć maksymalnej ilości.

Drugim powodem stosowania tej techniki jest odpowiednie wykorzystanie potencjalnych zasobów hosta. Dzięki temu jesteś w stanie określić, co może zostać uruchomione na danym hoście i w ten sposób nie marnujesz zasobów hosta. Jednak przedstawiona wizja nie jest tak idealna na jaką wygląda. Zawsze należy monitorować wykorzystanie zasobów przez kontenery, ile zasobów zużywania i w razie konieczności odpowiednio przydzielić im nowe zasoby.

Samo przydzielenie zasobów stanowi bardzo solidną podstawę bezpieczeństwa dzięki której zyskujesz również odpowiednie wykorzystanie możliwości serwera.

Izolacja kontenerów Dockera – monitorowanie wykorzystania zasobów kontenera

Do wspomnianej czynności dobrze jest ustalić pewien program działania. Przykład prezentuję poniżej:

  1. Korzystaj z dostępnych narzędzi takich jak podstawowy docker stats czy też narzędzi firm zewnętrznych takich jak cAdvisor, czy też Datadog w celu monitorowania kontenerów w czasie rzeczywistym.
  2. Skonfiguruj odpowiednio alerty tak, aby uruchamiały się, gdy zasoby w kontenerze kończą się. W ten sposób efektywnie będziesz w stanie rozwiązywać powstałe problemy.
  3. Sprawdzanie dzienników oraz metryk wydajności pozwolą lepiej zarządzać zasobami, jak i również wskażą problemy, jeżeli określone przydzielenie zasobów jest zbyt małe.
  4. Możesz również korzystać z Docker Compose do definiowania limitów zasobów dla kontenerów.

Stosowanie się do powyższych kroków bardziej efektywne zarządzasz swoimi zasobami poprzez odpowiednie przydzielenie ich do poszczególnych kontenerów.

Zapory ogniowe

Powinniśmy również zadbać o zapory sieciowe dla kontenerów. Dzięki nim kontrolować będziemy ruch przychodzący, jak i również wychodzący i ograniczyć dostęp do określonych portów, a także adresów IP. Stosując tego typu narzędzie, blokujesz nieautoryzowany dostęp do twoich kontenerów.

Jednak pamiętaj, że zapora sieciowa jest kolejnym narzędziem jaki możesz wykorzystać do zapewniania bezpieczeństwa twoich kontenerów. Z tego względu powinieneś łączyć ją z poznanymi w tym materiale technikami bezpieczeństwa.

Szyfrowanie danych wrażliwych

Szyfrowanie wrażliwych danych jest to dość istotny element bezpieczeństwa, który stosowany jest nie tylko w kontenerach. Natomiast samo szyfrowanie określa się jako proces przekształcenia tekstu na kod, który może być odczytany tylko i wyłącznie przy pomocy klucza. Dzięki zastosowaniu tej techniki bardzo utrudniasz odczytanie danych poufnych. Nawet jeżeli ktoś uzyska nieautoryzowany dostęp do kontenera, to bez odpowiedniego klucza nie będzie w stanie odczytać z plików żadnych informacji. Najbardziej znanym programem służącym do szyfrowania jest GPG który stosuje szyfrowanie asymetryczne, czyli posiada dwa klucze. Jeden jest to klucz publiczny służący do szyfrowania danych drugi prywatny, który używamy do deszyfrowania. Ten typ szyfrowania stosuje się w bankowości, dlatego możesz być pewny jego niezawodności.

Skanowanie w poszukiwaniu luk w zabezpieczeniach

Tego typu skanowania powinniśmy stosować zarówno do samych serwerów, jak i również dla kontenerów. Skanowanie pod względem wyszukiwania luk w zabezpieczeniach jest kluczowym i uzupełniającym elementem bezpieczeństwa systemów, jak i również kontenerów. Dzięki stosowaniu takich skanowań upewniasz się, że jesteś na bieżąco z wszystkimi dostępnymi lukami i że nie występują one w twoim środowisku. Natomiast jeżeli się jakieś pojawią, jesteś w stanie zareagować i podjąć działania w celu pozbycia się problemy lub chociaż złagodzenia konsekwencji wynikającej z luki w zabezpieczeniach. Jednak wiedz, że nie istnieje skaner, który zapewni Ci 100% bezpieczeństwo. Wszystkie wspomniane i dalej wymienione skanery posiadają bazy z już znanymi lukami. Natomiast zawsze może istnieć jakaś nieznana do tej pory luka. Do narzędzi z których możesz skorzystać, w celu przeprowadzenia wspomnianych skanowań możemy zaliczyć Docker Bench for Security, OpenSCAP, Clair, Anchore.

Podsumowanie – izolacja kontenerów Dockera

W powyższym materiale przedstawiłem Ci, czym jest izolacja kontenerów Dockera, jakimi narzędziami dysponuje Docker oraz na co warto zwrócić uwagę, aby poprawić i zapewnić bezpieczeństwo twoich kontenerów. Jednak pamiętaj, aby odpowiednio planować swoje działania, analizując każdy kontener. Wszystkie wymienione czynności powinieneś łączyć z sobą. Niemniej jednak wizja idealnego zabezpieczenia nie istnieje. Dlatego musisz monitorować działanie twoich kontenerów, by odpowiednio zwiększać lub zmniejszać ich zasoby. Zapewni Ci to blokowanie nadużyć, gdy ktoś niepowołany uzyska dostęp do kontenera. Natomiast przeprowadzanie skanowania pod względem luk bezpieczeństwa, jak i również odpowiednia konfiguracja zapory ogniowej jest już praktyką dobrze znaną. A do tego stosowaną od lat nie tylko przy kontenerach, ale ogólnie przy wszystkich systemach informatycznych.

O Dockerze możesz przeczytać jeszcze w naszych innych artykułach. Mamy też przygotowany kurs – Docker i konteneryzacja dla administratora!

 

 

Akcja Wiosenna - Promocja na najnowsze kursy w naszej ofercie!

Do końca marca masz możliwość zakupić najnowsze kursy:

  • Wdrożenie Serwera NGINX w Chmurze
  • NGINX jako Ingress w K8s
  • Kurs Grafany

Dodatkowo odbierz za darmo godzinny wykład "K8s Pod, MultiContainer Pod, Init Containers" na hasło "freek8s"!

Promocja trwa do 31 marca do godziny 23:59. 

Chcesz wziąć udział w kursie? Kliknij w link: https://asdevops.pl/promocja-marzec-2024

 
 
 

Promocja na trzy najnowsze kursy w ofercie!

X