Najczęstsze problemy z bezpieczeństwem Kubernetes i sposoby ich łagodzenia
Opublikowany: 2021-03-30Kubernetes i kontenery obiecują trzy rzeczy:
- Szybsze tworzenie i wydawanie aplikacji.
- Szybsze poprawki błędów.
- Zwiększona prędkość funkcji.
Jednak często odbywa się to kosztem złamanego bezpieczeństwa, a to jest coś nie do zaakceptowania w żadnej technologii tworzenia stron internetowych.
Aby uświadomić sobie stan bezpieczeństwa Kubernetes, oto dwa czynniki z ankiety przeprowadzonej przez StackRox pod koniec 2020 r.:
- 90% uczestników ankiety zgłosiło, że w ciągu ostatnich 12 miesięcy miało do czynienia z incydentem bezpieczeństwa związanym z kontenerami i Kubernetes.
- 44% uczestników musiało opóźnić wydanie aplikacji ze względu na obawy dotyczące bezpieczeństwa dotyczące Kubernetes.
Jakie są najczęstsze przyczyny tych obaw o bezpieczeństwo?
Najczęstsze problemy z bezpieczeństwem związane z Kubernetes
1. Błędne konfiguracje
Ankiety wykazały, że ekspozycje spowodowane błędną konfiguracją są najbardziej rozpowszechnionym zagrożeniem w bezpieczeństwie środowisk kontenerowych i Kubernetes.
Podczas korzystania z Kubernetes do tworzenia aplikacji kontenerowych zarządzanie konfiguracją stanowi największe zagrożenie dla specjalistów ds. bezpieczeństwa.
Dzieje się tak głównie dlatego, że rynek jest pełen narzędzi do skanowania podatności, ale zarządzanie konfiguracją nadal w dużej mierze opiera się na ludzkiej uwadze.
Oto kilka porad dotyczących konfigurowania niektórych typowych składników aplikacji kontenerowej, aby upewnić się, że bezpieczeństwo nie zostanie naruszone.
Obrazy:
Unikaj używania oprogramowania, które nie jest absolutnie konieczne. Obejmuje to menedżery pakietów, narzędzia sieciowe i klienty, takie jak curl lub powłoki Unix.
Pamiętaj, że korzystanie z dowolnego oprogramowania zwiększa zagrożenie bezpieczeństwa. Ponadto używaj tylko obrazów z wiarygodnych źródeł.
Tajniki:
Unikaj wypalania tajemnic w obrazach lub w inny sposób ich niepotrzebnego eksponowania.
W ramach bezpiecznej praktyki używaj godnych zaufania narzędzi do zarządzania hasłami, aby upewnić się, że wdrożenia montują wpisy tajne tylko wtedy, gdy są potrzebne.
Przestrzenie nazw:
Hojnie korzystaj z przestrzeni nazw. Działają jako granica dla Kubernetes i zasad sieciowych. Użycie przestrzeni nazw może ograniczyć skutki ataku i może zawierać błędy i ataki, tak aby nie mogły się rozprzestrzeniać i powodować więcej zniszczeń.
Uprawnienia wykonawcze:
Jest tylko jedna zasada uprawnień: pozwól jak najmniejszej ich liczbie, aby oprogramowanie było najbezpieczniejsze.
Zasady sieciowe
Zgodnie z ustawieniami domyślnymi pody mogą niezależnie komunikować się ze sobą w Kubernetes. Dobrą praktyką jest jednak zaimplementowanie zasad sieciowych w celu ograniczenia interakcji podów. Może to zapobiec rozprzestrzenianiu się zagrożeń w kontenerze i całej aplikacji.
Pamięć trwała
Musisz mieć odpowiedni wgląd w konfigurację i wykorzystanie pamięci trwałej. Dzieje się tak, ponieważ jest to jedyny trwały wektor w efemerycznej konfiguracji kontenera.
Sterowanie samolotem
Jeśli samodzielnie zarządzasz klastrami Kubernetes, bardzo ważne jest skonfigurowanie płaszczyzny sterowania. Dzieje się tak, ponieważ niektóre klastry mogą podejmować globalne decyzje, a zainfekowanie klastra może zagrozić całemu ekosystemowi.
Najlepszym podejściem do złagodzenia tych i różnych innych problemów bezpieczeństwa związanych z konfiguracją jest użycie kombinacji ręcznych i zautomatyzowanych działań, aby upewnić się, że konfiguracja została wykonana w taki sposób, aby zapewnić bezpieczeństwo Kubernetes i w konsekwencji oprogramowania, którego jest częścią z.
2. Luki
W ciągu ostatnich kilku lat w Kubernetes i innych kontenerach wykryto i wykorzystano wiele różnych luk w zabezpieczeniach.
Najczęstsze exploity luk w zabezpieczeniach to:
- Wydobywanie kryptowalut.
- Instalacja złośliwego oprogramowania.
- Eskalacja uprawnień.
- Dostęp do hosta.
Skuteczne podejście do zarządzania podatnością to coś, co musi trwać przez cały cykl życia kontenera i powinno obejmować:
- Identyfikowanie i usuwanie luk w obrazach, w tym w zainstalowanym systemie operacyjnym.
- Wykrywanie i eliminowanie wszelkich luk w zabezpieczeniach bibliotek wykonawczych używanych języków programowania.
- Podjęcie kroków, aby zapobiec przedostawaniu się obrazów zawierających ryzykowne luki do rejestru kontenerów dostępnego w środowisku produkcyjnym.
- Podejmowanie działań mających na celu powstrzymanie zagrożeń o pewnym poziomie ryzyka bezpieczeństwa.
- Korzystanie z kontrolerów dostępu innych firm w klastrach Kubernetes w celu zapobiegania planowaniu podatnych na ataki składników kontenera.
3. Zagrożenia w czasie wykonywania
Po wyeliminowaniu wszystkich problemów związanych z bezpieczeństwem Kubernetes faza uruchomieniowa ma swój własny, unikalny zestaw zagrożeń bezpieczeństwa.
Nawet jeśli położyłeś nacisk na bezpieczeństwo i zminimalizowałeś ryzyko w każdy możliwy sposób, w czasie wykonywania mogą pojawić się różne zagrożenia ze strony przeciwników.
Oto kilka rzeczy, które możesz zrobić, aby złagodzić te zagrożenia:
Monitorowanie aktywności w czasie wykonywania:
Rozpocznij proces monitorowania z największą liczbą działań kontenerowych, które są najbardziej istotne z punktu widzenia bezpieczeństwa. Obejmuje to takie działania, jak aktywność procesów, komunikacja sieciowa w ramach usług kontenerowych i między nimi oraz komunikacja do iz zewnętrznych serwerów i klientów.
Skorzystaj z danych deklaratywnych
Skorzystaj z informacji o czasie kompilacji i wdrożenia, aby ocenić różnicę między obserwowaną a oczekiwaną aktywnością, aby wiedzieć, czy jest jakaś podejrzana aktywność.
Ogranicz komunikację sieciową
Runtime to czas, w którym widać różnicę między rodzajem dozwolonego ruchu sieciowego a tym, który jest potrzebny do uruchomienia systemu. Jest to okazja, którą można wykorzystać do usunięcia niepotrzebnej komunikacji, która może stanowić zagrożenie dla bezpieczeństwa Kubernetes.
Uważnie obserwuj procesy
Obserwuj aplikację przez pewien czas, aby poznać wszystkie procesy, które są wykonywane w celu prawidłowego działania aplikacji. Zrób listę wszystkich niezbędnych procesów i losowo sprawdź aplikację, aby zobaczyć, czy nie jest wykonywany jakiś proces, który nie jest zwykły.
4. Nieudany audyt zgodności
Jedną z głównych rzeczy, które zapewniają Kubernetes i bezpieczeństwo kontenerów, jest zgodność. Jeśli bezpieczeństwo nie jest należycie podkreślone w cyklu rozwoju oprogramowania, może to prowadzić do niepowodzenia audytu zgodności.
Istnieje wiele standardów zgodności, które można wykorzystać do Kubernetes i bezpieczeństwa kontenerów.
PCI-DSS, HIPAA i SOC 2 to branżowe standardy zgodności.
Jednym z głównych błędów popełnianych w tym zakresie jest niewprowadzanie audytów zgodności od początku w skład SDLC lub uwzględnianie ich tylko w czasie wykonywania. Aby upewnić się, że wszystko w oprogramowaniu jest zgodne:
- Spraw, aby zgodność od samego początku była częścią SDLC.
- Skorzystaj ze standardów branżowych, aby zapewnić zgodność składników oprogramowania.