Opsio - Cloud and AI Solutions

Najlepsze praktyki dotyczące bezpieczeństwa kontenerów w środowiskach produkcyjnych

Published: ·Updated: ·Reviewed by Opsio Engineering Team
Fredrik Karlsson

Czy Twoje kontenery są wystarczająco bezpieczne do produkcji?Kontenery zapewniają doskonałą izolację między aplikacjami, ale błędne konfiguracje, podatne obrazy i niepewne ustawienia środowiska wykonawczego mogą sprawić, że kontenery z korzyści w zakresie bezpieczeństwa staną się zagrożeniem. W tym przewodniku opisano praktyki bezpieczeństwa wymagane w środowiskach kontenerów produkcyjnych.

Kluczowe wnioski

  • Zacznij od minimalnych obrazów:Obrazy Distroless i Alpine zmniejszają powierzchnię ataku o 90% w porównaniu z obrazami pełnego systemu operacyjnego.
  • Skanuj na każdym etapie:Kompiluj, wypychaj, wdrażaj i stale zapisuj w rejestrze. Luki są wykrywane po wdrożeniu.
  • Nigdy nie uruchamiaj jako root:Pojemniki root mogą uciec do hosta. Pojemniki inne niż root są zabezpieczone, nawet jeśli zostaną naruszone.
  • Systemy plików tylko do odczytu:Jeśli kontener nie wymaga zapisu, ustaw system plików jako tylko do odczytu, aby zapobiec utrzymywaniu się złośliwego oprogramowania.
  • Monitorowanie środowiska wykonawczego wyłapuje to, co pomija skanowanie:Exploity dnia zerowego, ataki na łańcuch dostaw i zagrożenia wewnętrzne wymagają wykrywania w czasie wykonywania.

Bezpieczeństwo obrazu

Użyj minimalnych obrazów podstawowych

Każdy pakiet w obrazie kontenera jest potencjalną powierzchnią ataku. Typowy obraz Ubuntu zawiera ponad 100 pakietów; obraz distroless zawiera tylko środowisko wykonawcze aplikacji. Używaj Google Distroless do aplikacji Java, Python, Node.js i Go. Użyj Alpine (5 MB), jeśli potrzebujesz powłoki do debugowania. Nigdy nie używaj pełnych obrazów systemu operacyjnego (Ubuntu, Debian, CentOS) w środowisku produkcyjnym — zawierają one setki niepotrzebnych pakietów ze znanymi lukami w zabezpieczeniach.

Kompilacje wieloetapowe

Użyj wieloetapowych plików Dockerfile, aby oddzielić zależności kompilacji od obrazów środowiska wykonawczego. Etap kompilacji obejmuje kompilatory, menedżery pakietów i narzędzia programistyczne. Ostatni etap zawiera tylko skompilowaną aplikację i minimalne zależności wykonawcze. Zapobiega to pojawianiu się narzędzi do kompilacji (które często mają CVE o dużej istotności) w obrazach produkcyjnych.

Potok skanowania obrazu

  • Czas budowy:Przed wypchnięciem do rejestru przeskanuj potok CI. Blokuj kompilacje z krytycznymi lukami.
  • Rejestr:Ciągłe skanowanie w ECR, ACR lub Harbor wychwytuje nowo odkryte CVE w istniejących obrazach.
  • Wstęp:Kontrolery dostępu Kubernetes weryfikują wyniki skanowania obrazu przed zezwoleniem na wdrożenie.
  • Czas wykonania:Monitoruj nietypowe zachowanie kontenera, które może wskazywać na wykorzystanie niezałatanych luk w zabezpieczeniach.

Bezpieczeństwo środowiska wykonawczego

Hartowanie kontenerów

UstawienieZalecana wartośćDlaczego
runAsNonRootprawdaZapobiega ucieczce z kontenera poprzez uprawnienia roota
readOnlyRootFilesystemprawdaZapobiega zapisywaniu złośliwego oprogramowania w systemie plików
Zezwalaj na eskalację uprawnieńfałszUniemożliwia procesom uzyskanie dodatkowych uprawnień
możliwościupuść: ["WSZYSTKO"]Usuwa wszystkie możliwości Linux, dodaje tylko to, co jest potrzebne
seccompProfilDomyślny czas wykonaniaOgranicza wywołania systemowe dostępne dla kontenera
zasoby.limityUstaw procesor i pamięćZapobiega nadużyciom zasobów (kopanie kryptowalut, DoS)

Monitorowanie czasu działania za pomocą Falco

Falco monitoruje zachowanie kontenerów pod kątem zasad bezpieczeństwa i ostrzega o naruszeniach. Domyślne reguły wykrywają: powłokę utworzoną w kontenerze, dostęp do poufnych plików (/etc/shadow, /etc/passwd), nieoczekiwane połączenia sieciowe, próby eskalacji uprawnień, wykonywanie menedżera pakietów w kontenerach produkcyjnych i procesy wydobywania kryptowalut. Można dodać niestandardowe reguły dla konkretnego zachowania aplikacji.

Bezpieczeństwo łańcucha dostaw

Podpisywanie i weryfikacja obrazu

Podpisuj obrazy kontenerów w czasie kompilacji za pomocą cosign (Sigstore) lub Docker Content Trust. Weryfikuj podpisy podczas wdrażania za pomocą kontrolerów dostępu Kubernetes. Dzięki temu można wdrażać wyłącznie obrazy utworzone przez potok CI/CD — zapobiegając atakom na łańcuch dostaw, podczas których napastnicy przesyłają złośliwe obrazy do rejestru.

Zestawienie materiałów oprogramowania (SBOM)

Generuj SBOM dla każdego obrazu kontenera za pomocą Syft lub Trivy. SBOM wyświetla listę wszystkich komponentów (pakietów systemu operacyjnego, bibliotek, zależności) w obrazie. Po ujawnieniu nowej luki można natychmiast zidentyfikować, których obrazów dotyczy problem, bez konieczności ponownego skanowania wszystkiego. SBOM są coraz częściej wymagane przez przepisy i klientów korporacyjnych.

Jak Opsio zabezpiecza kontenery

  • Potok obrazów:Wdrażamy skanowanie, podpisywanie i egzekwowanie zasad w całym cyklu życia obrazu kontenera.
  • Bezpieczeństwo środowiska wykonawczego:Wdrażamy i zarządzamy Falco/Sysdig w celu ciągłego monitorowania czasu działania kontenerów.
  • Kubernetes hartowanie:Udoskonalamy konfiguracje klastrów zgodnie z benchmarkami CIS, stale monitorując zgodność.
  • Reakcja na incydent:Nasz zespół SOC reaguje na incydenty związane z bezpieczeństwem kontenerów, zapewniając ochronę i kryminalistykę.

Często zadawane pytania

Czy kontenery są bezpieczniejsze niż maszyny wirtualne?

Kontenery zapewniają izolację na poziomie procesu za pośrednictwem przestrzeni nazw i grup cgroup Linux, podczas gdy maszyny wirtualne zapewniają izolację na poziomie sprzętu za pośrednictwem hiperwizorów. Maszyny wirtualne mają silniejsze granice izolacji. Kontenery oferują szybsze wdrażanie i mniejszą powierzchnię ataku (przy użyciu minimalnej liczby obrazów). W praktyce odpowiednio skonfigurowane kontenery z monitorowaniem bezpieczeństwa w czasie wykonywania są wystarczająco bezpieczne dla większości obciążeń produkcyjnych. Bardzo wrażliwe obciążenia mogą skorzystać z izolacji na poziomie VM lub piaskownicy kontenerów (gVisor, Kata Containers).

Jakie jest największe zagrożenie bezpieczeństwa kontenera?

Uruchamianie kontenerów jako root z nieograniczonymi możliwościami. Kontener główny ze wszystkimi możliwościami może uciec do systemu hosta, uzyskując dostęp do innych kontenerów, zasobów hosta i potencjalnie serwera Kubernetes API. Rozwiązanie jest proste: ustaw runAsNonRoot: true, usuń wszystkie możliwości i używaj systemów plików tylko do odczytu. Te trzy ustawienia eliminują większość zagrożeń bezpieczeństwa kontenera.

Jak postępować z sekretami w kontenerach?

Nigdy nie zapisuj sekretów w obrazach kontenerów ani nie przekazuj ich jako zmiennych środowiskowych (widocznych na listach procesów i dziennikach). Użyj zewnętrznego zarządzania sekretami: HashiCorp Vault z wtryskiem sidecar, AWS Secrets Manager z integracją ECS/EKS lub Azure Key Vault ze sterownikiem CSI. Sekrety należy wstrzykiwać w czasie wykonywania i przechowywać wyłącznie w pamięci, nigdy na dysku.

About the Author

Fredrik Karlsson
Fredrik Karlsson

Group COO & CISO at Opsio

Operational excellence, governance, and information security. Aligns technology, risk, and business outcomes in complex IT environments

Editorial standards: This article was written by a certified practitioner and peer-reviewed by our engineering team. We update content quarterly to ensure technical accuracy. Opsio maintains editorial independence — we recommend solutions based on technical merit, not commercial relationships.

Want to Implement What You Just Read?

Our architects can help you turn these insights into action for your environment.