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:
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
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.