Pojęcia dotyczące zabezpieczeń aplikacji i klastrów w usłudze Azure Kubernetes Service (AKS)
Zabezpieczenia kontenerów chroni cały kompletny potok przed kompilacją do obciążeń aplikacji uruchomionych w usłudze Azure Kubernetes Service (AKS).
Łańcuch bezpiecznych dostaw obejmuje środowisko kompilacji i rejestr.
Platforma Kubernetes obejmuje składniki zabezpieczeń, takie jak standardy zabezpieczeń zasobnika i wpisy tajne. Platforma Azure obejmuje składniki, takie jak Active Directory, Microsoft Defender for Containers, Azure Policy, Azure Key Vault, sieciowe grupy zabezpieczeń i aranżowane uaktualnienia klastrów. Usługa AKS łączy te składniki zabezpieczeń w następujące elementy:
- Podaj pełny scenariusz uwierzytelniania i autoryzacji.
- Zastosuj wbudowaną usługę Azure Policy w usłudze AKS, aby zabezpieczyć aplikacje.
- 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 wydaniami 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.
Zabezpieczenia kompilacji
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ż przerywa programowanie. Chodzi o zapoznanie się ze stanem dostawcy w celu segmentowania na podstawie luk w zabezpieczeniach, które można podjąć przez zespoły programistyczne. Ponadto używaj okresów prolongaty, aby umożliwić deweloperom czas korygowania zidentyfikowanych problemów.
Zabezpieczenia rejestru
Ocena stanu luki w zabezpieczeniach obrazu w rejestrze wykrywa dryf, a także przechwytuje 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 serwer główny kubernetes z jedną dzierżawą, który udostępnia serwer interfejsu API, harmonogram itp. Aby uzyskać więcej informacji, zobacz Zarządzanie lukami w zabezpieczeniach dla usługi Azure Kubernetes Service.
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żesz 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 platformy Kubernetes (Kubernetes RBAC) i kontroli dostępu na podstawie ról platformy Azure. Aby uzyskać więcej informacji, zobacz Microsoft Entra integration with AKS (Integracja firmy Microsoft 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ą zoptymalizowane wersje systemu Ubuntu lub Azure Linux.
- Węzły systemu Windows Server uruchamiają zoptymalizowaną wersję systemu Windows Server 2022 przy użyciu środowiska uruchomieniowego kontenera
containerd
.
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
Uruchomione klastry usługi AKS:
- Platforma Kubernetes w wersji 1.19 lub nowszej — pule węzłów systemu Linux używają
containerd
jako środowiska uruchomieniowego kontenera. Pule węzłów systemów Windows Server 2019 i Windows Server 2022 używającontainerd
jako środowiska uruchomieniowego kontenera. Aby uzyskać więcej informacji, zobacz Dodawanie puli węzłów systemu Windows Server za pomocącontainerd
polecenia . - Platforma Kubernetes w wersji 1.19 lub starszej — pule węzłów systemu Linux używają platformy Docker jako środowiska uruchomieniowego kontenera.
Aby uzyskać więcej informacji na temat procesu uaktualniania zabezpieczeń dla węzłów roboczych systemu Linux i Windows, zobacz Węzły stosowania poprawek zabezpieczeń.
Klastry usługi AKS z uruchomioną maszynami wirtualnymi generacji 2 platformy Azure obejmują obsługę zaufanego uruchamiania, która chroni przed zaawansowanymi i trwałymi technikami ataków, łącząc technologie, które mogą być włączone niezależnie, takie jak bezpieczny rozruch i zwirtualizowana wersja modułu zaufanej platformy (vTPM). Administratorzy mogą wdrażać węzły robocze usługi AKS ze zweryfikowanymi i podpisanymi modułami ładujących, jądrami systemu operacyjnego i sterownikami, aby zapewnić integralność całego łańcucha rozruchu podstawowej maszyny wirtualnej.
Autoryzacja węzła
Autoryzacja węzła to tryb autoryzacji specjalnego przeznaczenia, który specjalnie autoryzuje żądania interfejsu API kubelet do ochrony przed atakami na Wschód-Zachód. 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. Wyłączenie protokołu SSH podczas tworzenia puli klastrów i węzłów lub dla istniejącej puli klastrów lub węzłów jest w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem za pomocą protokołu SSH.
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 w spoczynku 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 wielodostępu. Dodatkowe funkcje zabezpieczeń, takie jak zasady zabezpieczeń zasobnika lub kontrola RBAC platformy Kubernetes dla węzłów, skutecznie blokują luki w zabezpieczeniach. W przypadku prawdziwych zabezpieczeń w przypadku uruchamiania wrogich obciążeń wielodostępnych ufaj tylko funkcji hypervisor. Domena zabezpieczeń dla platformy Kubernetes staje się całym klastrem, a nie pojedynczym węzłem.
W przypadku tych typów 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 środowiska obliczeniowego
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 zapewnia następujące możliwości:
- Kontenery izolowane jądra do użycia jako węzły agenta w klastrze usługi AKS. Te kontenery są całkowicie odizolowane od określonego typu sprzętu i odizolowane od sieci szkieletowej usługi Azure Host, systemu operacyjnego hosta i funkcji hypervisor. Są one 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.
- Poufne kontenery (wersja zapoznawcza) również oparte na kontenerach poufnych kata szyfrują pamięć kontenera i uniemożliwiają dane w pamięci podczas obliczeń w postaci zwykłego tekstu, format czytelny i manipulowanie. Pomaga odizolować kontenery od innych grup kontenerów/zasobników, a także jądra systemu operacyjnego węzła maszyny wirtualnej. Kontenery poufne (wersja zapoznawcza) korzystają z szyfrowania pamięci opartego na sprzęcie (SEV-SNP).
- Piaskownica zasobnika (wersja zapoznawcza) zapewnia granicę izolacji między aplikacją kontenera a udostępnionym jądrem i zasobami obliczeniowymi (procesor, pamięć i sieć) hosta kontenera.
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 powrotem 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. Domyślne reguły są tworzone, aby zezwolić na ruch TLS do serwera 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 należy modyfikować 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 lub ruch wychodzący.
Zasady sieciowe platformy Kubernetes
Aby ograniczyć ruch sieciowy między zasobnikami w klastrze, usługa AKS oferuje obsługę zasad sieci platformy 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.
Application Security
Aby chronić zasobniki działające w usłudze AKS, rozważ usługę 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.
Zabezpieczanie dostępu kontenera do zasobów
W taki sam sposób, jak należy przyznać użytkownikom lub grupom wymagane minimalne uprawnienia, należy również ograniczyć kontenery tylko do niezbędnych akcji i procesów. Aby zminimalizować ryzyko ataku, należy unikać konfigurowania aplikacji i kontenerów, które wymagają eskalowanych uprawnień lub dostępu głównego. Wbudowane funkcje zabezpieczeń systemu Linux, takie jak AppArmor i seccomp , są zalecane jako najlepsze rozwiązania w zakresie [zabezpieczania dostępu kontenera do zasobów][secure-container-access].
Wpisy tajne usługi Kubernetes
Wpis tajny kubernetes umożliwia wprowadzanie poufnych danych do zasobników, takich jak poświadczenia dostępu lub klucze.
- Utwórz wpis tajny przy użyciu interfejsu API platformy Kubernetes.
- Zdefiniuj zasobnik lub wdrożenie i zażądaj określonego wpisu tajnego.
- Wpisy tajne są udostępniane tylko węzłom z zaplanowanym zasobnikiem, który ich wymaga.
- Wpis tajny jest przechowywany w plikach tmpfs, a nie zapisywanych na dysku.
- Usunięcie ostatniego zasobnika w węźle wymagającego wpisu tajnego spowoduje usunięcie wpisu tajnego z plików tmpfs węzła.
- Wpisy tajne są przechowywane w danej przestrzeni nazw i są dostępne tylko z zasobników w tej samej przestrzeni nazw.
Użycie wpisów tajnych zmniejsza informacje poufne zdefiniowane w manifeście YAML zasobnika lub usługi. Zamiast tego żądasz wpisu tajnego przechowywanego na serwerze interfejsu API Platformy 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. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację. Traktuj te pliki jako poufne informacje i nigdy nie zatwierdzaj ich do kontroli źródła.
Wpisy tajne platformy Kubernetes są przechowywane w lokalizacji itp., rozproszony magazyn par klucz-wartość. Usługa AKS w pełni zarządza magazynem etcd i 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 uzyskać informacje o skojarzonych najlepszych rozwiązaniach, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i uaktualnień klastra w usłudze AKS oraz 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:
Azure Kubernetes Service