Dodajte ili uklonite Linux mogućnosti u Kubernetes SecurityContext

Dodajte Ili Uklonite Linux Mogucnosti U Kubernetes Securitycontext



Može biti teško upravljati stupnjem privilegija koje se daju svakom Podu i spremniku u Kubernetes spremniku. Možemo upotrijebiti mogućnosti Kubernetes SecurityContexta za dodavanje ili brisanje mogućnosti Linuxa iz Poda i Spremnika kako bismo povećali sigurnost spremnika. Ovaj se članak fokusira na korištenje securityContexta za implementaciju jednostavnog primjera dodavanja i brisanja mogućnosti. Konfiguracija yaml datoteke za brisanje svih mogućnosti i dodavanje samo jedne mogućnosti u spremnik navedena je u oglednom primjeru. U ovom se članku naredbe proc i capsh koriste za prikaz mogućnosti spremnika.

Korak 1: Pokrenite Minikube poslužitelj







Najprije pokrenite minikube poslužitelj kako biste mogli pokrenuti svoju aplikaciju i koristiti upute za kubectl. Možete postaviti svoje čvorove, podove, pa čak i klaster koristeći minikube poslužitelj u Kubernetes okruženju. Sljedeća naredba mora se koristiti za održavanje minikubea u aktivnom načinu rada:



> pokrenite minikube



Time je minikube poslužitelj uključen i Kubernetes okruženje je spremno za korištenje.





Korak 2: Stvorite Kubernetes YAML datoteku



U drugom koraku izradite YAML datoteku za implementaciju modula.

Slijedite korake za stvaranje yaml datoteke koristeći nano:

  • Idite na stazu direktorija gdje želite stvoriti datoteku ili izmijeniti postojeću datoteku.
  • Upišite nano naredbu nakon koje slijedi naziv datoteke.

Pokrenite sljedeću nano naredbu. Stvara YAML konfiguracijsku datoteku pod nazivom 'nano podsample.yaml'.

> nano poduzorak.yaml

Prijeđimo na sljedeći korak koji će vam pomoći da znate kako konfigurirati datoteku podsample.yaml.

Korak 3: Konfigurirajte YAML datoteku

Dodali smo capsh alat u prethodnom koraku kako bismo mogli vidjeti mogućnosti našeg spremnika.

Imajte na umu da nijedan od tih parametara nije konfiguriran za odjeljak securityContext za ovaj spremnik. Stoga su svi postavljeni na zadane postavke sustava. Uzmite u obzir činjenicu da ovaj spremnik radi kao zadani korisnik koji je naveden u Docker datoteci iz koje je konstruiran ako korisnik nije definiran za njega u Kubernetesu. Za mnoge spremnike ovaj zadani korisnik je root.

Korak 4: Stvorite pod

U ovom koraku stvorimo podsample.yaml sa sljedećom priloženom naredbom:

> kubectl primijeniti -f poduzorak.yaml

Korak 5: Provjerite mogućnosti

U prethodnom koraku, pod je kreiran i pokrenut.

Sada kada imamo ljusku unutar njega, možemo koristiti capsh da provjerimo njegove mogućnosti pomoću sljedeće naredbe:

> $ kubectl izvrs - -stdin - -tty kape - - pepeo

Pomoću naredbe capsh moguće je vidjeti zadane kapacitete spremnika koji su navedeni na sljedeći način:

Iz danog izlaza možemo uočiti da spremnik ima mnogo zadanih mogućnosti koje su mu dane tijekom izvođenja.

Korak 6: Baci Singl Sposobnost Y u Kubernetes SecurityContext

U ovom koraku odbacujemo jedinstvenu sposobnost spremnika.

Konfigurirajmo yaml datoteku pomoću sljedeće naredbe:

> nano droppod.yaml

Nakon toga prijeđite na konfiguraciju datoteke droppod.yaml pomoću sljedeće zadane naredbe:

> kubectl primijeniti -f droppod.yaml

Korak 7 : Konfigurirajte za dodavanje pojedinačne mogućnosti u YAML datoteku

U ovom koraku otvorite yaml datoteku (dropped.yaml) koja je stvorena u koraku 6. Zatim postavite spremnik tako da više nema pristup mogućnosti CAP_MKNOD, što uklanja mogućnost stvaranja novih čvorova datotečnog sustava.

Konfigurirana datoteka je kao što je prikazano:

Korak 8 : Provjerite mogućnosti

Datoteka yaml je konfigurirana za ispuštanje mogućnosti CAP_MKNOD.

U ovom koraku izvršite i pokrenite datoteku dropcaps.yaml da provjerite mogućnosti spremnika pomoću sljedeće naredbe:

> $ kubectl izvrs - -stdin - -tty kapice - - pepeo

Kapaciteti se mogu provjeriti pokretanjem dropcaps datoteke:

> # capsh - -print

Možemo primijetiti da je ova grupa izgubila mogućnost CAP_MKNOD u usporedbi s prvom skupinom.

Korak 9 : Ispustite sve mogućnosti u Kubernetes SecurityContext

Budući da Kubernetes može ispustiti jednu mogućnost, također može ispustiti sve mogućnosti kroz securityContext. U ovom koraku ispustite sve mogućnosti spremnika implicirajući zadanu naredbu:

> nano samplenocap.yaml

Nakon toga konfigurirajte datoteku samplenocap.yaml pomoću sljedeće naredbe:

> kubectl stvoriti -f samplenocap.yaml

Sada prijeđimo na sljedeći korak da ispustimo sve kapacitete u našim postavkama sigurnosnog konteksta.

Korak 10: Konfigurirajte sve mogućnosti u YAML datoteci

U ovom koraku otvorite yaml datoteku koja je stvorena u koraku 9. Zatim konfigurirajte unutar container.securityContext  i ispustite sve mogućnosti spremnika.

Konfigurirana datoteka je kao što je prikazano:

Korak jedanaest : Provjerite mogućnosti

Pokrenite nocaps u capsh da biste vidjeli informacije o mogućnostima. U ovom koraku upotrijebite sljedeću naredbu i prikažite sve mogućnosti spremnika:

> kubectl izvrs - -stdin - -tty nocaps - - pepeo

Kapaciteti se mogu provjeriti na sljedećoj ilustraciji pokretanjem samplenocaps yaml datoteke u capsh:

> # capsh - -print

Prethodni izlaz pokazuje da su current=”” i limiting set=”” sada prazni. Mogućnosti su uspješno odbačene.

Korak 1 2 : Instalirajte Bash

U ovom koraku instalirajte Bash putem apk-a jer neke funkcije sustava neće raditi ako nemamo nikakve mogućnosti. Iako naš spremnik radi kao root, instalacija Bash paketa ne uspijeva.

> # apk dodaj bash

Korak 1 3 : Provjerite informacije o mogućnostima

Postoji nekoliko načina za pregled mogućnosti našeg spremnika, kao što je korištenje naredbi capsh i proc. U ovom koraku prikazujemo kapacitete spremnika pomoću naredbe proc, a proc prikazuje kapacitete kao bitmapu. Iako nije tako čitljiv kao rezultat capsh-a, svaki bit koji je ovdje definiran označava određenu sposobnost.

> # cd /proc/1/

Ovdje možemo vidjeti da ovaj određeni spremnik nema omogućene mogućnosti; sve ove vrijednosti su nula.

Korak 1 4 : Dodavanje jedne mogućnosti u Kubernetes SecurityContext

U prethodnim smo koracima izbacili jednu sposobnost koja je CAP_MKNOD i izbacili smo sve mogućnosti. Ali u ovom koraku možemo vratiti mogućnosti.

Izvršite sljedeću naredbu za stvaranje yAML datoteke:

> nano sampleadd.yaml

Nakon toga konfigurirajte datoteku sampleadd.yaml.

> kubectl stvoriti -f sampleadd.yaml

Sada isprobajmo datoteku sampleadd.yaml i dodamo jedan kapacitet u našim postavkama securityContext-a.

Korak 1 5 : Konfigurirajte jedinstvenu sposobnost u YAML datoteci

Sada, konfigurirajmo datoteku dodavanjem mogućnosti u spec.container.securityContext u capabilities.add ['MKNOD'].

Mogućnost je prikazana u YAML datoteci.

Korak 16 : Provjerite mogućnosti

U ovom koraku pokrenite addcaps da provjerite mogućnosti pomoću sljedeće naredbe:

> kubectl izvrs - -stdin - -tty addcaps - - kao

Dodani kapacitet može se vidjeti u sljedećem izlazu:

struja = cap_mknod+ep

Ograničujući skup = cap_mknod

> # capsh - -print

Zaključak

Prvo ste iz implementiranog primjera naučili o zadanim mogućnostima spremnika koje se dodjeljuju u vrijeme izvođenja koje se prikazuje pomoću naredbe capsh. Zatim ste naučili ispustiti jednu sposobnost u spremnik pod nazivom CAP_MKNOD. Zatim ste također naučili kako ispustiti sve mogućnosti spremnika pomoću konfiguracije //drop: –all. Zatim smo upotrijebili dva načina za prikaz mogućnosti spremnika – pomoću naredbi capsh i proc.