Pojęcia dotyczące zabezpieczeń aplikacji i klastrów w usłudze Azure Kubernetes Service (AKS)

Zabezpieczenia kontenerów chroni cały całościowy potok przed kompilacją do obciążeń aplikacji uruchomionych w usłudze Azure Kubernetes Service (AKS).

Łańcuch bezpiecznych dostaw zawiera środowisko kompilacji i rejestr.

Platforma Kubernetes obejmuje składniki zabezpieczeń, takie jak standardy zabezpieczeń zasobnika i wpisy tajne. Tymczasem platforma Azure obejmuje składniki, takie jak Active Directory, Microsoft Defender for Containers, Azure Policy, Azure Key Vault, sieciowe grupy zabezpieczeń i zorganizowanych uaktualnień klastrów. Usługa AKS łączy następujące składniki zabezpieczeń:

  • Podaj pełną historię uwierzytelniania i autoryzacji.
  • Korzystaj z wbudowanych Azure Policy usługi AKS w celu zabezpieczenia aplikacji.
  • Kompleksowe szczegółowe informacje z kompilacji za pośrednictwem aplikacji za pomocą usługi Microsoft Defender for Containers.
  • Zachowaj klaster usługi AKS z najnowszymi aktualizacjami zabezpieczeń systemu operacyjnego i wersjami rozwiązania Kubernetes.
  • Zapewnij bezpieczny ruch zasobnika i dostęp do poufnych poświadczeń.

W tym artykule przedstawiono podstawowe pojęcia, które zabezpieczają aplikacje w usłudze AKS:

Tworzenie zabezpieczeń

Jako punkt wejścia dla łańcucha dostaw ważne jest przeprowadzenie statycznej analizy kompilacji obrazu przed podwyższeniem poziomu potoku. Obejmuje to ocenę luk w zabezpieczeniach i zgodności. Nie chodzi o niepowodzenie kompilacji, ponieważ ma ona lukę w zabezpieczeniach, ponieważ spowoduje to przerwanie programowania. Chodzi o zapoznanie się z "Stanem dostawcy" w celu segmentowania na podstawie luk w zabezpieczeniach, które można podjąć działania przez zespoły programistyczne. Korzystaj również z opcji "Okresy prolongaty", aby umożliwić deweloperom czas na korygowanie zidentyfikowanych problemów.

Zabezpieczenia rejestru

Ocena stanu luki w zabezpieczeniach obrazu w rejestrze wykryje dryf, a także przechwyci obrazy, które nie pochodzą ze środowiska kompilacji. Użyj notary v2 , aby dołączyć podpisy do obrazów, aby upewnić się, że wdrożenia pochodzą z zaufanej lokalizacji.

Zabezpieczenia klastra

W usłudze AKS składniki główne platformy Kubernetes są częścią usługi zarządzanej, zarządzanej i obsługiwanej przez firmę Microsoft. Każdy klaster usługi AKS ma własny wzorzec platformy Kubernetes z jedną dzierżawą, który zapewnia serwer interfejsu API, harmonogram itp.

Domyślnie serwer interfejsu API Kubernetes używa publicznego adresu IP i w pełni kwalifikowanej nazwy domeny (FQDN). Dostęp do punktu końcowego serwera interfejsu API można ograniczyć przy użyciu autoryzowanych zakresów adresów IP. Można również utworzyć w pełni prywatny klaster , aby ograniczyć dostęp serwera interfejsu API do sieci wirtualnej.

Dostęp do serwera interfejsu API można kontrolować przy użyciu kontroli dostępu opartej na rolach (Kubernetes RBAC) platformy Kubernetes i kontroli dostępu opartej na rolach platformy Azure. Aby uzyskać więcej informacji, zobacz Azure AD integracja z usługą AKS.

Zabezpieczenia węzłów

Węzły usługi AKS to maszyny wirtualne platformy Azure, którymi zarządzasz i obsługujesz.

  • Węzły systemu Linux uruchamiają zoptymalizowaną dystrybucję systemu Ubuntu przy użyciu środowiska uruchomieniowego kontenera containerd platformy Docker lub .
  • Węzły systemu Windows Server uruchamiają zoptymalizowaną wersję systemu Windows Server 2019 przy użyciu środowiska uruchomieniowego kontenera containerd platformy Docker lub .

Po utworzeniu lub skalowaniu klastra usługi AKS węzły są automatycznie wdrażane przy użyciu najnowszych aktualizacji i konfiguracji zabezpieczeń systemu operacyjnego.

Uwaga

Klastry usługi AKS korzystające z:

  • Platforma Kubernetes w wersji 1.19 i nowszej dla pul węzłów systemu Linux jest używana containerd jako środowisko uruchomieniowe kontenera. Korzystanie containerd z pul węzłów systemu Windows Server 2019 jest obecnie dostępne w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Dodawanie puli węzłów systemu Windows Server za pomocą containerdpolecenia .
  • Platforma Kubernetes przed wersją 1.19 dla pul węzłów systemu Linux używa platformy Docker jako środowiska uruchomieniowego kontenera. W przypadku pul węzłów systemu Windows Server 2019 platforma Docker jest domyślnym środowiskiem uruchomieniowym kontenera.

Poprawki zabezpieczeń węzła

Węzły systemu Linux

Każdego wieczoru węzły systemu Linux w usłudze AKS uzyskują poprawki zabezpieczeń za pośrednictwem kanału aktualizacji zabezpieczeń dystrybucji. To zachowanie jest konfigurowane automatycznie, gdy węzły są wdrażane w klastrze usługi AKS. Aby zminimalizować zakłócenia i potencjalny wpływ na uruchomione obciążenia, węzły nie są automatycznie uruchamiane ponownie, jeśli wymaga tego poprawka zabezpieczeń lub aktualizacja jądra. Aby uzyskać więcej informacji na temat obsługi ponownych uruchomień węzłów, zobacz Stosowanie aktualizacji zabezpieczeń i jądra do węzłów w usłudze AKS.

Nocne aktualizacje stosują aktualizacje zabezpieczeń do systemu operacyjnego w węźle, ale obraz węzła używany do tworzenia węzłów dla klastra pozostaje niezmieniony. Jeśli nowy węzeł systemu Linux zostanie dodany do klastra, oryginalny obraz zostanie użyty do utworzenia węzła. Ten nowy węzeł będzie otrzymywać wszystkie aktualizacje zabezpieczeń i jądra dostępne podczas automatycznego sprawdzania każdej nocy, ale pozostaną niezapieczętowane do momentu zakończenia wszystkich kontroli i ponownych uruchomień. Możesz użyć uaktualnienia obrazu węzła, aby sprawdzić i zaktualizować obrazy węzłów używane przez klaster. Aby uzyskać więcej informacji na temat uaktualniania obrazu węzła, zobacz uaktualnianie obrazu węzła Azure Kubernetes Service (AKS).

Węzły systemu Windows Server

W przypadku węzłów systemu Windows Server Windows Update nie jest automatycznie uruchamiana i stosuje najnowsze aktualizacje. Zaplanuj uaktualnienia puli węzłów systemu Windows Server w klastrze usługi AKS w ramach cyklu regularnego Windows Update wydania i własnego procesu weryfikacji. Ten proces uaktualniania tworzy węzły, które uruchamiają najnowszy obraz systemu Windows Server i poprawki, a następnie usuwa starsze węzły. Aby uzyskać więcej informacji na temat tego procesu, zobacz Uaktualnianie puli węzłów w usłudze AKS.

Autoryzacja węzła

Autoryzacja węzła to tryb autoryzacji specjalnego przeznaczenia, który specjalnie autoryzuje żądania interfejsu API wysyłane przez narzędzie kubelets w celu ochrony przed atakami East-West. Autoryzacja węzła jest domyślnie włączona w klastrach usługi AKS 1.24 i nowszych.

Wdrażanie węzła

Węzły są wdrażane w podsieci prywatnej sieci wirtualnej bez przypisanych publicznych adresów IP. Na potrzeby rozwiązywania problemów i zarządzania protokół SSH jest domyślnie włączony i dostępny tylko przy użyciu wewnętrznego adresu IP.

Magazyn węzłów

Aby zapewnić magazyn, węzły używają usługi Azure Dyski zarządzane. W przypadku większości rozmiarów węzłów maszyn wirtualnych usługa Azure Dyski zarządzane to dyski w warstwie Premium wspierane przez dyski SSD o wysokiej wydajności. Dane przechowywane na dyskach zarządzanych są automatycznie szyfrowane podczas magazynowania na platformie Azure. Aby zwiększyć nadmiarowość, usługa Azure Dyski zarządzane jest bezpiecznie replikowana w centrum danych platformy Azure.

Wrogie obciążenia wielodostępne

Obecnie środowiska Kubernetes nie są bezpieczne w przypadku wrogiego użycia wielu dzierżaw. Dodatkowe funkcje zabezpieczeń, takie jak zasady zabezpieczeń zasobnika lub kontrola dostępu oparta na rolach platformy Kubernetes dla węzłów, skutecznie blokują luki w zabezpieczeniach. W przypadku rzeczywistych zabezpieczeń podczas uruchamiania wrogich obciążeń z wieloma dzierżawami ufaj tylko funkcji hypervisor. Domena zabezpieczeń dla platformy Kubernetes staje się całym klastrem, a nie pojedynczym węzłem.

W przypadku tego typu wrogich obciążeń wielodostępnych należy używać klastrów odizolowanych fizycznie. Aby uzyskać więcej informacji na temat sposobów izolowania obciążeń, zobacz Najlepsze rozwiązania dotyczące izolacji klastra w usłudze AKS.

Izolacja obliczeniowa

Ze względu na wymagania dotyczące zgodności lub przepisów niektóre obciążenia mogą wymagać wysokiego stopnia izolacji od innych obciążeń klientów. W przypadku tych obciążeń platforma Azure udostępnia izolowane maszyny wirtualne do użycia jako węzły agenta w klastrze usługi AKS. Te maszyny wirtualne są izolowane do określonego typu sprzętu i przeznaczone dla jednego klienta.

Wybierz jeden z izolowanych rozmiarów maszyn wirtualnych jako rozmiar węzła podczas tworzenia klastra usługi AKS lub dodawania puli węzłów.

Uaktualnienia klastra

Platforma Azure udostępnia narzędzia orkiestracji uaktualniania w celu uaktualnienia klastra i składników usługi AKS, utrzymania zabezpieczeń i zgodności oraz uzyskiwania dostępu do najnowszych funkcji. Ta aranżacja uaktualnienia obejmuje zarówno składniki główne platformy Kubernetes, jak i agenta.

Aby rozpocząć proces uaktualniania, określ jedną z dostępnych wersji platformy Kubernetes. Platforma Azure bezpiecznie kordonuje i opróżnia każdy węzeł usługi AKS i uaktualnia je.

Kordon i opróżnianie

Podczas procesu uaktualniania węzły usługi AKS są indywidualnie kordonowane z klastra, aby zapobiec zaplanowaniu na nich nowych zasobników. Węzły są następnie opróżniane i uaktualniane w następujący sposób:

  1. Nowy węzeł jest wdrażany w puli węzłów.
    • Ten węzeł uruchamia najnowszy obraz systemu operacyjnego i poprawki.
  2. Jeden z istniejących węzłów jest identyfikowany pod kątem uaktualnienia.
  3. Zasobniki w zidentyfikowanym węźle są bezpiecznie przerywane i zaplanowane na innych węzłach w puli węzłów.
  4. Opróżniony węzeł jest usuwany z klastra usługi AKS.
  5. Kroki 1–4 są powtarzane do momentu pomyślnego zastąpienia wszystkich węzłów w ramach procesu uaktualniania.

Aby uzyskać więcej informacji, zobacz Uaktualnianie klastra usługi AKS.

Bezpieczeństwo sieci

W przypadku łączności i zabezpieczeń z sieciami lokalnymi można wdrożyć klaster usługi AKS w istniejących podsieciach sieci wirtualnej platformy Azure. Te sieci wirtualne łączą się z siecią lokalną przy użyciu sieci VPN typu lokacja-lokacja platformy Azure lub usługi Express Route. Zdefiniuj kontrolery ruchu przychodzącego Kubernetes z prywatnymi, wewnętrznymi adresami IP, aby ograniczyć dostęp usług do wewnętrznego połączenia sieciowego.

Sieciowe grupy zabezpieczeń platformy Azure

Aby filtrować przepływ ruchu w sieci wirtualnej, platforma Azure używa reguł sieciowej grupy zabezpieczeń. Te reguły definiują źródłowe i docelowe zakresy adresów IP, porty i protokoły dozwolone lub odmawiane dostępu do zasobów. Reguły domyślne są tworzone, aby zezwolić na ruch TLS na serwer interfejsu API Kubernetes. Usługi są tworzone za pomocą modułów równoważenia obciążenia, mapowań portów lub tras ruchu przychodzącego. Usługa AKS automatycznie modyfikuje sieciową grupę zabezpieczeń dla przepływu ruchu.

Jeśli udostępnisz własną podsieć dla klastra usługi AKS (niezależnie od tego, czy używasz usługi Azure CNI, czy Kubenet), nie zmodyfikuj sieciowej grupy zabezpieczeń na poziomie karty sieciowej zarządzanej przez usługę AKS. Zamiast tego utwórz więcej sieciowych grup zabezpieczeń na poziomie podsieci, aby zmodyfikować przepływ ruchu. Upewnij się, że nie zakłócają one niezbędnego ruchu zarządzającego klastrem, takiego jak dostęp do modułu równoważenia obciążenia, komunikacja z płaszczyzną sterowania i ruch wychodzący.

Zasady sieciowe platformy Kubernetes

Aby ograniczyć ruch sieciowy między zasobnikami w klastrze, usługa AKS oferuje obsługę zasad sieci kubernetes. Dzięki zasadom sieci można zezwalać na określone ścieżki sieciowe w klastrze lub blokować je na podstawie przestrzeni nazw i selektorów etykiet.

Zabezpieczenia aplikacji

Aby chronić zasobniki uruchomione w usłudze AKS, skorzystaj z usługi Microsoft Defender for Containers , aby wykrywać i ograniczać ataki cybernetyczne na aplikacje działające w zasobnikach. Uruchom ciągłe skanowanie w celu wykrycia dryfu w stanie luk w zabezpieczeniach aplikacji i zaimplementuj proces "niebieski/zielony/kanary", aby zastosować poprawki i zastąpić obrazy podatne na zagrożenia.

Wpisy tajne usługi Kubernetes

W przypadku wpisu tajnego kubernetes wprowadzasz poufne dane do zasobników, takich jak poświadczenia dostępu lub klucze.

  1. Utwórz wpis tajny przy użyciu interfejsu API platformy Kubernetes.
  2. Zdefiniuj zasobnik lub wdrożenie i zażądaj określonego wpisu tajnego.
    • Wpisy tajne są udostępniane tylko węzłom z zaplanowanym zasobnikem, który ich wymaga.
    • Wpis tajny jest przechowywany w plikach tmpfs, a nie zapisywanych na dysku.
  3. Po usunięciu ostatniego zasobnika w węźle wymagającym wpisu tajnego klucz tajny zostanie usunięty z plików tmpfs węzła.
    • Wpisy tajne są przechowywane w danej przestrzeni nazw i mogą być dostępne tylko przez zasobniki w tej samej przestrzeni nazw.

Używanie wpisów tajnych zmniejsza poufne informacje zdefiniowane w manifeście YAML zasobnika lub usługi. Zamiast tego żądasz wpisu tajnego przechowywanego na serwerze interfejsu API Kubernetes w ramach manifestu YAML. Takie podejście zapewnia tylko określony dostęp zasobnika do wpisu tajnego.

Uwaga

Nieprzetworzone pliki manifestu wpisu tajnego zawierają dane tajne w formacie base64 (zobacz oficjalną dokumentację , aby uzyskać więcej informacji). Traktuj te pliki jako poufne informacje i nigdy nie zatwierdzaj ich do kontroli źródła.

Wpisy tajne platformy Kubernetes są przechowywane w pliku etcd, rozproszonym magazynie klucz-wartość. Magazyn Etcd jest w pełni zarządzany przez usługę AKS, a dane są szyfrowane w spoczynku na platformie Azure.

Następne kroki

Aby rozpocząć zabezpieczanie klastrów usługi AKS, zobacz Uaktualnianie klastra usługi AKS.

Aby zapoznać się z najlepszymi rozwiązaniami, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i uaktualnień klastra w usłudze AKS i Najlepsze rozwiązania dotyczące zabezpieczeń zasobników w usłudze AKS.

Aby uzyskać więcej informacji na temat podstawowych pojęć związanych z platformą Kubernetes i usługą AKS, zobacz: