E-book details

Kontenery. Bezpieczne wdrożenia. Podstawowe koncepcje i technologie

Kontenery. Bezpieczne wdrożenia. Podstawowe koncepcje i technologie

Liz Rice

Ebook

Imponująca możliwość skalowania oraz odporność na awarie skłania organizacje do uruchamiania swoich aplikacji w natywnych środowiskach chmury. Technologia kontenerów i orkiestracji stała się ostatnio bardzo modna. Jednak nawet tak nowoczesne systemy nie są wolne od zagrożeń. Aby zapewnić wdrożeniom kontenerowym najwyższy możliwy poziom bezpieczeństwa, trzeba zrozumieć mechanizmy działania kontenerów. Jako że powstają one przez połączenie różnych funkcji jądra systemu Linux, zapewnienie bezpieczeństwa kontenera oznacza zastosowanie wielu mechanizmów wykorzystywanych w komputerze gospodarza działającego pod kontrolą systemu operacyjnego Linux.

Ta książka jest przeznaczona dla programistów, menedżerów i specjalistów do spraw bezpieczeństwa odpowiedzialnych za systemy kontenerowe. Dzięki niej zrozumiesz, co się dzieje podczas uruchamiania aplikacji w kontenerach i jak działają różne mechanizmy zapewnienia bezpieczeństwa. Przyswoisz kluczowe koncepcje, które ułatwią Ci ocenę ryzyka dla konkretnego systemu. Dowiesz się, jak w bezpieczny sposób tworzyć obrazy kontenerów, i zrozumiesz znaczenie poprawnej izolacji kontenerów.

Zapoznasz się z podstawami korzystania z kluczy i certyfikatów służących do identyfikacji i nawiązywania bezpiecznych połączeń sieciowych między kontenerami. Nauczysz się korzystać z narzędzi do zapewniania bezpieczeństwa i unikania ataków. Dodatkowo zaprezentowany tu materiał został bogato zilustrowany gotowymi do przetestowania fragmentami kodu.

Najciekawsze zagadnienia ujęte w książce:

  • mechanizmy ataków na wdrożenia oparte na kontenerach
  • koncepcje systemu Linux istotne dla wdrożeń kontenerowych
  • sposoby zabezpieczania kontenerów: najlepsze praktyki
  • błędy w konfiguracji i luki w zabezpieczeniach kontenera
  • bezpieczeństwo połączeń między kontenerami
  • narzędzia do zapewnienia bezpieczeństwa

System oparty na kontenerach. Jak dobrze jest zabezpieczony?


Wprowadzenie 9

1. Zagrożenia związane z kontenerami 15

  • Ryzyko, zagrożenie i środki ostrożności 16
  • Model zagrożenia kontenera 16
  • Granice bezpieczeństwa 20
  • Wielodostępność 21
    • Maszyny współdzielone 21
    • Wirtualizacja 22
    • Wielodostępność w przypadku kontenerów 23
    • Egzemplarze kontenera 24
  • Zasady dotyczące zapewnienia bezpieczeństwa 24
    • Najmniejsze możliwe uprawnienia 24
    • Głęboka defensywa 24
    • Ograniczenie płaszczyzny ataku 25
    • Ograniczenie pola rażenia 25
    • Podział zadań 25
    • Stosowanie zasad bezpieczeństwa w kontenerach 25
  • Podsumowanie 26

2. Wywołania systemu Linux, uprawnienia i właściwości jądra 27

  • Wywołania systemowe 27
  • Uprawnienia plików 28
    • setuid i setgid 30
  • Mechanizm właściwości jądra systemu Linux 33
  • Podniesienie uprawnień 35
  • Podsumowanie 36

3. Grupy kontrolne 37

  • Hierarchia grup kontrolnych 37
  • Tworzenie grup kontrolnych 38
  • Definiowanie ograniczeń dla zasobów 40
  • Przypisanie procesu do grupy kontrolnej 41
  • Używanie grup kontrolnych z Dockerem 42
  • Grupy kontrolne - wersja druga 43
  • Podsumowanie 44

4. Izolacja kontenera 45

  • Przestrzenie nazw systemu Linux 46
  • Izolacja nazwy hosta 47
  • Izolowanie identyfikatorów procesów 49
  • Zmiana katalogu głównego 52
  • Połączenie przestrzeni nazw i zmiany katalogu głównego 55
  • Przestrzeń nazw punktów montowania 55
  • Przestrzeń nazw sieci 57
  • Przestrzeń nazw użytkownika 59
    • Ograniczenia przestrzeni nazw użytkownika w Dockerze 61
  • Przestrzeń nazw IPC 62
  • Przestrzeń nazw grup kontrolnych 63
  • Proces kontenera z perspektywy systemu komputera gospodarza 64
  • Maszyny gospodarza kontenera 65
  • Podsumowanie 67

5. Maszyna wirtualna 69

  • Uruchomienie komputera 69
  • Poznaj VMM 70
    • Typ 1. VMM - hipernadzorca 71
    • Typ 2. VMM 72
    • Maszyny wirtualne oparte na jądrze 73
  • Przechwyć i emuluj 73
  • Obsługa instrukcji niewirtualizowanych 74
  • Izolacja procesu i zapewnienie bezpieczeństwa 75
  • Wady maszyny wirtualnej 76
  • Izolacja kontenera w porównaniu do izolacji maszyny wirtualnej 77
  • Podsumowanie 77

6. Obrazy kontenera 79

  • Główny system plików i konfiguracja obrazu 79
  • Nadpisanie konfiguracji w trakcie działania obrazu 80
  • Standardy OCI 80
  • Konfiguracja obrazu 81
  • Tworzenie obrazu 82
    • Niebezpieczeństwa związane z poleceniem docker build 82
    • Tworzenie obrazu kontenera bez użycia demona 83
    • Warstwy obrazu 84
  • Przechowywanie obrazów kontenera 86
  • Identyfikowanie obrazów kontenera 86
  • Zapewnienie bezpieczeństwa obrazowi kontenera 88
  • Zapewnienie bezpieczeństwa podczas tworzenia obrazu 89
    • Pochodzenie pliku Dockerfile 89
    • Najlepsze praktyki związane z zapewnieniem bezpieczeństwa pliku Dockerfile 89
    • Ataki na komputer, w którym są tworzone obrazy 92
  • Zapewnienie bezpieczeństwa podczas przechowywania obrazów 92
    • Utworzenie własnego rejestru obrazów 92
    • Podpisywanie obrazów 93
  • Zapewnienie bezpieczeństwa podczas wdrażania obrazów 93
    • Wdrożenie właściwego obrazu 93
    • Definicja wdrożenia zawierającego kod o złośliwym działaniu 94
    • Sterowanie dopuszczeniem 94
  • GitOps i zapewnienie bezpieczeństwa podczas wdrożenia 95
  • Podsumowanie 96

7. Luki w zabezpieczeniach oprogramowania umieszczonego w obrazie kontenera 97

  • Szukanie luk w zabezpieczeniach 97
  • Luki w zabezpieczeniach, poprawki bezpieczeństwa i dystrybucje 98
  • Luki w zabezpieczeniach na poziomie aplikacji 99
  • Zarządzanie ryzykiem związanym z lukami w zabezpieczeniach 99
  • Skanowanie pod kątem luk w zabezpieczeniach 100
  • Zainstalowane pakiety 100
  • Skanowanie obrazu kontenera 101
    • Kontenery niemodyfikowalne 101
    • Regularne skanowanie 102
  • Narzędzia skanowania 103
    • Źródła informacji 103
    • Nieaktualne źródła danych 104
    • Luki w zabezpieczeniach, które nie zostaną usunięte 104
    • Luki w zabezpieczeniach podpakietów 104
    • Różne nazwy pakietu 104
    • Dodatkowe funkcje skanowania 105
    • Błędy narzędzi skanowania 105
  • Skanowanie w trakcie procesu ciągłej integracji i ciągłego wdrożenia 105
  • Uniemożliwianie uruchamiania obrazów zawierających luki w zabezpieczeniach 108
  • Luki w zabezpieczeniach dnia zerowego 108
  • Podsumowanie 109

8. Wzmocnienie izolacji kontenera 111

  • seccomp 111
  • AppArmor 113
  • SELinux 114
  • gVisor 116
  • Kontener Kata 118
  • Firecracker 119
  • Unijądro 119
  • Podsumowanie 120

9. Złamanie izolacji kontenera 121

  • Kontener domyślnie działa z uprawnieniami użytkownika root 121
    • Nadpisanie identyfikatora użytkownika 122
    • Wymaganie uprawnień użytkownika root wewnątrz kontenera 123
    • Kontener niewymagający uprawnień użytkownika root 125
  • Właściwości jądra systemu Linux i opcja --privileged 128
  • Montowanie zawierających dane wrażliwe katalogów systemu gospodarza 130
  • Montowanie gniazda Dockera 131
  • Współdzielenie przestrzeni nazw między kontenerem i gospodarzem 131
  • Kontener przyczepy 132
  • Podsumowanie 133

10. Zapewnienie bezpieczeństwa sieci kontenera 135

  • Zapora sieciowa kontenera 135
  • Model OSI 137
  • Wysyłanie pakietu IP 138
  • Adres IP kontenera 139
  • Izolacja sieci 140
  • Reguły i routing na warstwach 3. i 4. 141
    • iptables 141
    • IPVS 143
  • Polityki sieciowe 143
    • Rozwiązania w zakresie polityki sieciowej 145
    • Najlepsze praktyki związane z polityką sieciową 146
  • Architektura Service Mesh 147
  • Podsumowanie 148

11. Bezpieczna komunikacja między komponentami przy użyciu TLS 149

  • Bezpieczne połączenie 149
  • Certyfikat X.509 150
    • Para kluczy publicznego i prywatnego 151
    • Urząd certyfikacji 152
    • Żądanie podpisania certyfikatu 153
  • Połączenie TLS 154
  • Bezpieczne połączenia między kontenerami 155
  • Unieważnienie certyfikatu 156
  • Podsumowanie 157

12. Przekazywanie danych poufnych do kontenera 159

  • Właściwości danych poufnych 159
  • Przekazywanie informacji do kontenera 160
    • Przechowywanie danych poufnych w obrazie kontenera 161
    • Przekazywanie danych poufnych przez sieć 161
    • Przekazywanie danych poufnych w zmiennych środowiskowych 162
    • Przekazywanie danych poufnych za pomocą plików 163
  • Dane poufne w Kubernetes 163
  • Dane poufne są dostępne dla użytkownika root 164
  • Podsumowanie 165

13. Zabezpieczanie środowiska uruchomieniowego kontenera 167

  • Profile obrazów kontenera 167
    • Profile ruchu sieciowego 168
    • Profile plików wykonywalnych 168
    • Profile dostępu do plików 170
    • Profile identyfikatorów użytkowników 170
    • Inne profile używane w środowisku uruchomieniowym 171
    • Narzędzia zapewnienia bezpieczeństwa kontenera 171
  • Unikanie różnic 173
  • Podsumowanie 174

14. Kontenery i przygotowana przez OWASP lista Top 10 175

  • Wstrzyknięcie kodu 175
  • Złamanie mechanizmu uwierzytelnienia 175
  • Ujawnienie danych wrażliwych 176
  • Zewnętrzne encje XML 176
  • Nieprawidłowa kontrola dostępu 176
  • Błędna konfiguracja zabezpieczeń 177
  • XSS 177
  • Niebezpieczna deserializacja 178
  • Używanie komponentów zawierających znane luki w zabezpieczeniach 178
  • Niewystarczający poziom rejestrowania danych i monitorowania 178
  • Podsumowanie 179

Zakończenie 181

Dodatek A. Lista rzeczy do sprawdzenia w zakresie zapewnienia bezpieczeństwa 182

  • Title: Kontenery. Bezpieczne wdrożenia. Podstawowe koncepcje i technologie
  • Author: Liz Rice
  • Original title: Container Security: Fundamental Technology Concepts that Protect Containerized Applications
  • Translation: Robert Górczyński
  • ISBN: 978-83-283-7229-0, 9788328372290
  • Date of issue: 2021-02-09
  • Format: Ebook
  • Item ID: konten
  • Publisher: Helion