Добавете или премахнете възможностите на Linux в Kubernetes SecurityContext

Dobavete Ili Premahnete V Zmoznostite Na Linux V Kubernetes Securitycontext



Може да е трудно да се управлява степента на привилегии, които се предоставят на всеки Pod и контейнер в контейнер на Kubernetes. Можем да използваме възможностите на Kubernetes SecurityContext, за да добавим или изтрием възможностите на Linux от Pod и Container, за да повишим сигурността на контейнера. Тази статия се фокусира върху използването на securityContext за прилагане на прост пример за добавяне и изтриване на възможности. Конфигурацията на yaml файл за изтриване на всички възможности и добавяне само на една възможност към контейнер е предоставена в примерния пример. В тази статия командите proc и capsh се използват за показване на възможностите на контейнера.

Стъпка 1: Стартирайте сървъра Minikube







Първо стартирайте сървъра на minikube, за да можете да стартирате приложението си и да използвате инструкциите на kubectl. Можете да разположите вашите възли, подове и дори клъстер, като използвате сървъра minikube в средата на Kubernetes. Следната команда трябва да се използва за поддържане на minikube в активен режим:



> стартирайте minikube



По този начин сървърът на minikube се включва и средата на Kubernetes е готова за използване.





Стъпка 2: Създайте Kubernetes YAML файл



Във втората стъпка създайте YAML файл, за да разположите pod.

Следвайте стъпките, за да създадете yaml файл с помощта на nano:

  • Отидете до пътя на директорията, където искате да създадете файла или да промените съществуващ файл.
  • Въведете командата nano, последвана от името на файла.

Изпълнете следната nano команда. Той създава YAML конфигурационен файл с име „nano podsample.yaml“.

> нано podsample.yaml

Нека да преминем към следващата стъпка, която ще ви помогне да знаете как да конфигурирате файл podsample.yaml.

Стъпка 3: Конфигурирайте YAML файла

Добавяме инструмента capsh в предходната стъпка, за да можем да видим възможностите на нашия контейнер.

Обърнете внимание, че нито един от тези параметри не е конфигуриран за секция securityContext за този контейнер. По този начин всички те са настроени на системните настройки по подразбиране. Обърнете внимание на факта, че този контейнер работи като потребител по подразбиране, който се предоставя във файла Docker, от който е конструиран, ако не е дефиниран потребител за него в Kubernetes. За много контейнери този потребител по подразбиране е root.

Стъпка 4: Създайте под

В тази стъпка нека създадем podsample.yaml със следната прикачена команда:

> kubectl се прилага -f podsample.yaml

Стъпка 5: Проверете за възможности

В предишната стъпка се създава и изпълнява под.

Сега, когато имаме обвивка вътре в него, можем да използваме capsh, за да проверим неговите възможности, като използваме следната команда:

> $ kubectl изп - -stdin - -тти капачки - - пепел

С помощта на командата capsh е възможно да видите капацитетите по подразбиране на контейнера, които са изброени, както следва:

Можем да забележим от дадения изход, че контейнерът има много възможности по подразбиране, които се дават на контейнера по време на изпълнение.

Стъпка 6: Пуснете Неженен Капабилит Y в Kubernetes SecurityContext

В тази стъпка премахваме единствената способност на контейнера.

Нека конфигурираме yaml файла, като използваме следната команда:

> нано dropod.yaml

След това преминете към конфигуриране на файла droppod.yaml, като използвате следната команда:

> kubectl се прилага -f droppod.yaml

стъпка 7 : Конфигурирайте за добавяне на единична възможност в YAML файл

В тази стъпка отворете файла yaml (dropped.yaml), създаден в стъпка 6. След това настройте контейнера така, че вече да няма достъп до възможността CAP_MKNOD, което премахва възможността за създаване на нови възли на файловата система.

Конфигурираният файл е както е показано:

стъпка 8 : Проверете за възможности

Файлът yaml е конфигуриран да премахва възможността CAP_MKNOD.

В тази стъпка изпълнете и стартирайте файла dropcaps.yaml, за да проверите възможностите на контейнера, като използвате следната команда:

> $ kubectl изп - -stdin - -тти капачки - - пепел

Капацитетът може да се провери чрез стартиране на файла dropcaps:

> # capsh - -print

Можем да забележим, че тази група е загубила възможността CAP_MKNOD в сравнение с първата група.

стъпка 9 : Премахнете всички възможности в Kubernetes SecurityContext

Тъй като Kubernetes може да премахне една единствена възможност, той може също да премахне всички възможности чрез securityContext. В тази стъпка премахнете всички възможности на контейнера, като зададете дадената команда:

> нано samplenocap.yaml

След това конфигурирайте файла samplenocap.yaml, като използвате следната команда:

> kubectl създаване -f samplenocap.yaml

Сега нека преминем към следващата стъпка, за да премахнем всички капацитети в нашите настройки на securityContext.

Стъпка 10: Конфигурирайте всички възможности в YAML файла

В тази стъпка отворете файла yaml, който е създаден в стъпка 9. След това конфигурирайте вътре в container.securityContext  и изпуснете всички възможности на контейнера.

Конфигурираният файл е както е показано:

стъпка единадесет : Проверете за възможности

Стартирайте nocaps в capsh, за да видите информацията за възможностите. В тази стъпка използвайте следната команда и покажете всички възможности на контейнера:

> kubectl изп - -stdin - -тти nocaps - - пепел

Капацитетите могат да бъдат проверени на следната илюстрация чрез стартиране на файла samplenocaps yaml в capsh:

> # capsh - -print

Предишният изход показва, че current=”” и bounding set=”” сега са празни. Възможностите са премахнати успешно.

Етап 1 2 : Инсталирайте Bash

В тази стъпка инсталирайте Bash чрез apk, тъй като някои системни функции няма да работят, ако изобщо нямаме никакви възможности. Въпреки че нашият контейнер работи като root, инсталирането на пакета Bash е неуспешно.

> # apk добави bash

Етап 1 3 : Проверете информацията за възможностите

Има няколко начина за преглед на възможностите на нашия контейнер, като например използването на командите capsh и proc. В тази стъпка показваме капацитета на контейнера с помощта на командата proc и proc показва капацитета като растерно изображение. Въпреки че не е толкова четим като резултата от capsh, всеки бит, който е дефиниран тук, означава определена способност.

> # cd /proc/1/

Тук можем да видим, че този конкретен контейнер няма активирани възможности; всички тези стойности са нула.

Етап 1 4 : Добавяне на единична възможност в Kubernetes SecurityContext

В предишните стъпки премахнахме една възможност, която е CAP_MKNOD, и премахнахме всички възможности. Но в тази стъпка можем да добавим възможностите обратно.

Изпълнете следната команда, за да създадете yAML файла:

> нано sampleadd.yaml

След това конфигурирайте файла sampleadd.yaml.

> kubectl създаване -f sampleadd.yaml

Сега, нека опитаме файла sampleadd.yaml и да добавим един капацитет в нашите настройки на securityContext.

Етап 1 5 : Конфигурирайте единичната възможност в YAML файла

Сега нека конфигурираме файла, като добавим възможността в spec.container.securityContext в capabilities.add ['MKNOD'].

Възможността се показва в YAML файла.

стъпка 16 : Проверете за възможности

В тази стъпка изпълнете addcaps, за да проверите възможностите, като използвате следната команда:

> kubectl изп - -stdin - -тти addcaps - - като

Добавеният капацитет може да се види в следния даден резултат:

ток = cap_mknod+ep

Ограничаващ набор = cap_mknod

> # capsh - -print

Заключение

Първо научихте от внедрения пример за възможностите по подразбиране на контейнера, които се присвояват по време на изпълнение, което се показва с командата capsh. След това се научихте да пуснете една възможност в контейнер с име CAP_MKNOD. След това научихте и как да премахнете всички възможности на контейнера с помощта на конфигурацията //drop: –all. След това използвахме два начина за показване на възможностите на контейнерите – използвайки командите capsh и proc.