Najlepsze rozwiązania dotyczące zabezpieczeń i uaktualnień klastra w usłudze Azure Kubernetes Service (AKS)
Podczas zarządzania klastrami w usłudze Azure Kubernetes Service (AKS) kluczowe znaczenie ma obciążenie i zabezpieczenia danych. W przypadku uruchamiania klastrów wielodostępnych przy użyciu izolacji logicznej należy szczególnie zabezpieczyć dostęp do zasobów i obciążeń. Zminimalizuj ryzyko ataku, stosując najnowsze aktualizacje zabezpieczeń platformy Kubernetes i węzła systemu operacyjnego.
W tym artykule opisano sposób zabezpieczania klastra usługi AKS. Dowiedz się, jak odbywa się:
- Aby zabezpieczyć dostęp do serwera interfejsu API, użyj identyfikatora Microsoft Entra i kontroli dostępu opartej na rolach platformy Kubernetes (Kubernetes RBAC).
- Zabezpieczanie dostępu kontenera do zasobów węzłów.
- Uaktualnij klaster usługi AKS do najnowszej wersji rozwiązania Kubernetes.
- Aktualizuj węzły i automatycznie stosuj poprawki zabezpieczeń.
Możesz również zapoznać się z najlepszymi rozwiązaniami dotyczącymi zarządzania obrazami kontenerów i zabezpieczeniami zasobników.
Włączanie ochrony przed zagrożeniami
Wskazówki dotyczące najlepszych rozwiązań
Możesz włączyć usługę Defender for Containers , aby ułatwić zabezpieczanie kontenerów. Usługa Defender for Containers może oceniać konfiguracje klastra i udostępniać zalecenia dotyczące zabezpieczeń, uruchamiać skanowania luk w zabezpieczeniach oraz zapewniać ochronę i alerty w czasie rzeczywistym dla węzłów i klastrów Kubernetes.
Bezpieczny dostęp do serwera interfejsu API i węzłów klastra
Wskazówki dotyczące najlepszych rozwiązań
Jednym z najważniejszych sposobów zabezpieczenia klastra jest zabezpieczenie dostępu do serwera interfejsu API Kubernetes. Aby kontrolować dostęp do serwera interfejsu API, zintegruj kontrolę dostępu na podstawie ról platformy Kubernetes z identyfikatorem Entra firmy Microsoft. Dzięki tym kontrolkom zabezpieczasz usługę AKS w taki sam sposób, jak w przypadku zabezpieczania dostępu do subskrypcji platformy Azure.
Serwer interfejsu API Kubernetes udostępnia pojedynczy punkt połączenia dla żądań wykonywania akcji w klastrze. Aby zabezpieczyć i przeprowadzić inspekcję dostępu do serwera interfejsu API, ogranicz dostęp i zapewnij najniższe możliwe poziomy uprawnień. Chociaż takie podejście nie jest unikatowe dla platformy Kubernetes, jest to szczególnie ważne, gdy klaster usługi AKS został logicznie odizolowany do użytku z wieloma dzierżawami.
Microsoft Entra ID udostępnia rozwiązanie do zarządzania tożsamościami gotowymi do użycia w przedsiębiorstwie, które integruje się z klastrami usługi AKS. Ponieważ platforma Kubernetes nie zapewnia rozwiązania do zarządzania tożsamościami, możesz być mocno naciskany w celu szczegółowego ograniczenia dostępu do serwera interfejsu API. W przypadku klastrów zintegrowanych firmy Microsoft w usłudze AKS używasz istniejących kont użytkowników i grup do uwierzytelniania użytkowników na serwerze interfejsu API.
Korzystając z kontroli dostępu opartej na rolach platformy Kubernetes i integracji identyfikatora Entra firmy Microsoft, można zabezpieczyć serwer interfejsu API i zapewnić minimalne uprawnienia wymagane do zestawu zasobów o określonym zakresie, na przykład w jednej przestrzeni nazw. Możesz przyznać różnym użytkownikom lub grupom różnych ról platformy Kubernetes firmy Microsoft. Dzięki szczegółowym uprawnieniam można ograniczyć dostęp do serwera interfejsu API i zapewnić jasny dziennik inspekcji wykonanych akcji.
Zalecanym najlepszym rozwiązaniem jest użycie grup w celu zapewnienia dostępu do plików i folderów zamiast poszczególnych tożsamości. Na przykład należy użyć członkostwa w grupie Microsoft Entra ID, aby powiązać użytkowników z rolami kubernetes, a nie poszczególnymi użytkownikami. W miarę zmiany członkostwa w grupie użytkownika uprawnienia dostępu do klastra usługi AKS zmieniają się odpowiednio.
Załóżmy, że użytkownik jest powiązany bezpośrednio z rolą, a ich funkcja zadania zmienia się. Podczas aktualizacji członkostwa w grupach firmy Microsoft Entra ich uprawnienia w klastrze usługi AKS nie byłyby. W tym scenariuszu użytkownik kończy się większą większa większa niż wymaga.
Aby uzyskać więcej informacji na temat integracji z firmą Microsoft Entra, kontroli dostępu opartej na rolach platformy Kubernetes i kontroli dostępu opartej na rolach platformy Azure, zobacz Najlepsze rozwiązania dotyczące uwierzytelniania i autoryzacji w usłudze AKS.
Ograniczanie dostępu do interfejsu API metadanych wystąpienia
Wskazówki dotyczące najlepszych rozwiązań
Dodaj zasady sieciowe we wszystkich przestrzeniach nazw użytkowników, aby zablokować ruch wychodzący zasobnika do punktu końcowego metadanych.
Uwaga
Aby zaimplementować zasady sieciowe, dołącz atrybut --network-policy azure
podczas tworzenia klastra usługi AKS. Użyj następującego polecenia, aby utworzyć klaster: az aks create -g myResourceGroup -n myManagedCluster --network-plugin azure --network-policy azure --generate-ssh-keys
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restrict-instance-metadata
spec:
podSelector:
matchLabels: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 10.10.0.0/0#example
except:
- 169.254.169.254/32
Zabezpieczanie dostępu kontenera do zasobów
Wskazówki dotyczące najlepszych rozwiązań
Ogranicz dostęp do akcji, które mogą wykonywać kontenery. Podaj najmniejszą liczbę uprawnień i unikaj korzystania z dostępu głównego lub uprzywilejowanej eskalacji.
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.
Aby uzyskać jeszcze bardziej szczegółową kontrolę nad akcjami kontenera, możesz również użyć wbudowanych funkcji zabezpieczeń systemu Linux, takich jak AppArmor i seccomp. Aby uzyskać więcej informacji, zobacz Bezpieczny dostęp kontenera do zasobów.
Regularnie aktualizuj do najnowszej wersji rozwiązania Kubernetes
Wskazówki dotyczące najlepszych rozwiązań
Aby być na bieżąco z nowymi funkcjami i poprawkami błędów, regularnie uaktualnij wersję rozwiązania Kubernetes w klastrze usługi AKS.
Platforma Kubernetes udostępnia nowe funkcje w szybszym tempie niż w przypadku bardziej tradycyjnych platform infrastruktury. Aktualizacje platformy Kubernetes obejmują:
- Nowe funkcje
- Poprawki błędów lub zabezpieczeń
Nowe funkcje zwykle przechodzą przez stan alfa i beta , zanim staną się stabilne. Gdy jest stabilna, są ogólnie dostępne i zalecane do użytku produkcyjnego. Cykl wydania nowej funkcji platformy Kubernetes umożliwia aktualizowanie platformy Kubernetes bez regularnego napotykania zmian powodujących niezgodność lub dostosowywania wdrożeń i szablonów.
Usługa AKS obsługuje trzy wersje pomocnicze platformy Kubernetes. Po wprowadzeniu nowej wersji poprawki pomocniczej najstarsza obsługiwana wersja pomocnicza i wersje poprawek zostaną wycofane. Aktualizacje pomocnicze platformy Kubernetes są wykonywane okresowo. Aby pozostać w ramach pomocy technicznej, upewnij się, że masz proces zapewniania ładu w celu sprawdzenia niezbędnych uaktualnień. Aby uzyskać więcej informacji, zobacz Obsługiwane wersje platformy Kubernetes w usłudze AKS.
Aby sprawdzić wersje dostępne dla klastra, użyj polecenia az aks get-upgrades , jak pokazano w poniższym przykładzie:
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
Następnie możesz uaktualnić klaster usługi AKS przy użyciu polecenia az aks upgrade . Proces uaktualniania jest bezpieczny:
- Cordony i opróżniają jeden węzeł naraz.
- Planuje zasobniki na pozostałych węzłach.
- Wdraża nowy węzeł z najnowszymi wersjami systemu operacyjnego i platformy Kubernetes.
Ważne
Przetestuj nowe wersje pomocnicze w środowisku testowym deweloperskim i sprawdź, czy obciążenie pozostaje w dobrej kondycji przy użyciu nowej wersji platformy Kubernetes.
Platforma Kubernetes może przestarzać interfejsy API (na przykład w wersji 1.16), na których polegają obciążenia. W przypadku wprowadzenia nowych wersji do środowiska produkcyjnego rozważ użycie wielu pul węzłów w osobnych wersjach i uaktualnienie poszczególnych pul pojedynczo, aby stopniowo wdrażać aktualizację w klastrze. W przypadku uruchamiania wielu klastrów uaktualnij jeden klaster jednocześnie, aby stopniowo monitorować wpływ lub zmiany.
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version KUBERNETES_VERSION
Aby uzyskać więcej informacji na temat uaktualnień w usłudze AKS, zobacz Obsługiwane wersje rozwiązania Kubernetes w usłudze AKS i Uaktualnianie klastra usługi AKS.
Przetwarzanie aktualizacji węzła systemu Linux
Każdego wieczoru węzły systemu Linux w usłudze AKS uzyskują poprawki zabezpieczeń za pośrednictwem kanału aktualizacji 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 uruchamianie obciążeń, węzły nie są automatycznie uruchamiane, jeśli wymagana jest poprawka zabezpieczeń lub aktualizacja jądra. Aby uzyskać więcej informacji na temat obsługi ponownych rozruchów węzłów, zobacz Stosowanie aktualizacji zabezpieczeń i jądra do węzłów w usłudze AKS.
Uaktualnienia obrazu węzła
Nienadzorowane uaktualnienia stosują aktualizacje do systemu operacyjnego węzła systemu Linux, ale obraz 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 usługi Azure Kubernetes Service (AKS).
Przetwarzanie aktualizacji węzłów systemu Windows Server
W przypadku węzłów systemu Windows Server regularnie przeprowadzaj operację uaktualniania obrazu węzła, aby bezpiecznie kordonować i opróżniać zasobniki oraz wdrażać zaktualizowane węzły.
Azure Kubernetes Service