Dodaj lub usuń możliwości Linux w Kubernetes SecurityContext

Dodaj lub usuń możliwości Linux w Kubernetes SecurityContext

Może być trudno zarządzać stopniem uprawnień dostarczanych do każdego kapsułki i kontenera w pojemniku Kubernetes. Możemy wykorzystać funkcje Kubernetes SecurityContext do dodawania lub usuwania możliwości Linux z kapsułki i kontenera, aby zwiększyć bezpieczeństwo kontenera. W tym artykule koncentruje się na korzystaniu z SecurityContext do wdrożenia prostego przykładu dodawania i usuwania możliwości. Konfiguracja pliku YAML w celu usunięcia wszystkich funkcji i dodania tylko jednej możliwości do kontenera jest podana w przykładowym przykładzie. W tym artykule polecenia PROC i CAPSH są używane do wyświetlania możliwości kontenera.

Krok 1: Rozpocznij serwer minikube

Najpierw uruchom serwer Minikube, aby móc uruchomić aplikację i użyć instrukcji Kubectl. Możesz wdrażać swoje węzły, kapsuły, a nawet klaster za pomocą serwera minikube w środowisku Kubernetes. Do utrzymania minikube w trybie aktywnym należy użyć następujące polecenie:

> Minikube start

W ten sposób serwer minikube jest włączony, a środowisko Kubernetes jest gotowe do użycia.

Krok 2: Utwórz plik Kubernetes YAML

W drugim kroku utwórz plik YAML, aby wdrożyć POD.

Wykonaj kroki, aby utworzyć plik YAML za pomocą Nano:

  • Przejdź do ścieżki katalogu, w której chcesz utworzyć plik lub zmodyfikować istniejący plik.
  • Wpisz w poleceniu Nano, a następnie nazwa pliku.

Uruchom następujące polecenie Nano. Tworzy plik konfiguracyjny YAML o nazwie „Nano Podsample.YAML ”.

> Nano Podsample.Yaml

Przejdźmy do następnego kroku, którym pomogą Ci wiedzieć, jak skonfigurować podsample.plik YAML.

Krok 3: Skonfiguruj plik YAML

Dodajemy narzędzie Capsh w poprzednim kroku, abyśmy mogli zobaczyć możliwości naszego pojemnika.

Zauważ, że żaden z tych parametrów nie jest skonfigurowany dla sekcji SecurityContext dla tego kontenera. Zatem wszystkie są ustawione na domyślne systemy systemowe. Rozważ fakt, że ten kontener działa jako domyślny użytkownik, który jest dostarczany w pliku Docker, z którego jest konstruowany, jeśli żaden użytkownik jest dla niego zdefiniowany w Kubernetes. W przypadku wielu kontenerów ten domyślny użytkownik to root.

Krok 4: Utwórz kapsułkę

W tym kroku stwórzmy podsample.YAML z następującymi załączonymi poleceniem:

> kubectl Zastosuj -f podsample.Yaml

Krok 5: Sprawdź możliwości

W poprzednim kroku tworzone i działające jest kapsuły.

Teraz, gdy mamy w sobie skorupę, możemy użyć Capsh do weryfikacji jego możliwości za pomocą następującego polecenia:

> $ kubectl exec - -stdin - -tty caps - - popiół

Korzystając z polecenia CAPSH, można zobaczyć domyślne pojemności kontenera wymienione w następujący sposób:

Z danego wyjścia możemy zaobserwować, że kontener ma wiele domyślnych możliwości, które są podawane do kontenera w czasie wykonywania.

Krok 6: Odrzuć Pojedynczy Capability W Kubernetes SecurityContext

Na tym etapie upuszczamy pojedynczą zdolność pojemnika.

Skonfigurujmy plik YAML za pomocą następującego polecenia:

> Nano Dropod.Yaml

Następnie przejdź, aby skonfigurować Droppod.plik YAML za pomocą następujące podane polecenie:

> Kubectl Zastosuj -f Droppod.Yaml

Krok 7: Skonfiguruj, aby dodać pojedynczą możliwość w pliku YAML

W tym kroku otwórz plik YAML (upuszczony.YAML), który został utworzony w kroku 6. Następnie ustaw kontener, aby nie miał już dostępu do funkcji CAP_MKNOD, co usuwa możliwość tworzenia nowych węzłów systemu plików.

Skonfigurowany plik jest jak pokazany:

Krok 8: Sprawdź możliwości

Plik YAML jest skonfigurowany do upuszczania funkcji cap_mknod.

W tym kroku wykonaj i uruchom kropel.plik YAML, aby sprawdzić możliwości kontenera za pomocą następującego polecenia:

> $ kubectl exec - -Stdin - -tty Dropcaps - - popiół

Pojemności można sprawdzić, uruchamiając plik DropCaps:

> # capsh - -print

Możemy zauważyć, że ta kapsuł.

Krok 9: Upuść wszystkie funkcje w Kubernetes SecurityContext

Ponieważ Kubernetes może zrzucić jedną funkcję, może również zrzucić wszystkie możliwości za pośrednictwem bezpieczeństwa. W tym etapie upuść wszystkie możliwości kontenera, sugerując podane polecenie:

> Nano SampLenocap.Yaml

Następnie skonfiguruj SampLenoCap.plik YAML za pomocą następującego polecenia:

> kubectl Utwórz -f SamplenoCap.Yaml

Teraz przejdźmy do następnego kroku, aby zrzucić wszystkie zdolności w naszych ustawieniach SecurityContext.

Krok 10: Skonfiguruj wszystkie możliwości w pliku YAML

W tym kroku otwórz plik YAML, który został utworzony w kroku 9. Następnie skonfiguruj wewnątrz pojemnika.SecurityContext i upuść wszystkie możliwości kontenera.

Skonfigurowany plik jest jak pokazany:

Krok 11: Sprawdź możliwości

Uruchom NOCAPS w Capsh, aby zobaczyć informacje o możliwościach. W tym etapie użyj następującego polecenia i wyświetl wszystkie możliwości kontenera:

> Kubectl Exec - -Stdin - -tty Nocaps - - Ash

Pojemności można sprawdzić na poniższej ilustracji, uruchamiając plik YAML SAMPLENOCAPS w Capsh:

># capsh - -print

Poprzednie wyjście pokazuje, że current = ”i ograniczanie set =” ”są teraz puste. Możliwości są pomyślnie upuszczane.

Krok 12: Zainstaluj bash

W tym etapie zainstaluj bash przez APK, ponieważ niektóre funkcje systemowe nie będą działać, jeśli w ogóle nie mamy żadnych możliwości. Mimo że nasz kontener działa jako root, instalacja pakietu bash.

> # apk dodaj bash

Krok 13: Sprawdź informacje o możliwościach

Istnieje kilka sposobów wyświetlania możliwości naszego kontenera, takich jak korzystanie z poleceń CAPSH i PROC. W tym etapie wyświetlamy pojemności kontenera za pomocą polecenia PROC, a PROC wyświetla zdolności jako mapę bitową. Chociaż nie jest to tak czytelne, jak wynika z Capsh, każdy zdefiniowany tutaj bit oznacza określoną zdolność.

> # cd/proc/1/

Widzimy tutaj, że ten konkretny kontener nie ma możliwości włączonych; Wszystkie te wartości są zerowe.

Krok 14: Dodanie pojedynczej możliwości w Kubernetes SecurityContext

W poprzednich krokach zrzuciliśmy jedną zdolność, jaką jest cap_mknod i upuściliśmy wszystkie możliwości. Ale na tym etapie możemy odzyskać możliwości.

Wykonaj następujące polecenie, aby utworzyć plik YAML:

> Nano Sampleadd.Yaml

Następnie skonfiguruj sampleadd.plik YAML.

> kubectl Utwórz -f Sampleadd.Yaml

Teraz spróbujmy Sampleadd.plik YAML i dodaj jedną pojemność w naszych ustawieniach SecurityContext.

Krok 15: Skonfiguruj pojedynczą możliwość w pliku YAML

Teraz skonfigurujmy plik, dodając możliwość w specyfikacji.pojemnik.SecurityContext do możliwości.Dodaj [„Mknod”].

Możliwość jest wyświetlana w pliku YAML.

Krok 16: Sprawdź możliwości

W tym kroku uruchom addCaps, aby sprawdzić możliwości za pomocą następującego polecenia:

> kubectl exec - -Stdin - -tty addcaps - - as

Dodatkową pojemność można zobaczyć następujące dane wyjściowe:

prąd = cap_mknod+ep

SET OGRANICZENIE = CAP_MKNOD

> # capsh - -print

Wniosek

Po raz pierwszy dowiedziałeś się z wdrożonego przykładu o domyślnych możliwościach kontenera, które są przypisywane w czasie wykonywania wyświetlane za pomocą polecenia CAPSH. Następnie nauczyłeś się upuszczać jedną zdolność w pojemniku o nazwie cap_mknod. Następnie nauczyłeś się także, jak upuścić wszystkie możliwości kontenera za pomocą // upuść: -wszystko konfiguracja. Następnie wykorzystaliśmy dwa sposoby wyświetlania możliwości kontenerów - za pomocą poleceń CAPSH i PROC.