Dodajte ali odstranite zmogljivosti Linuxa v Kubernetes SecurityContext

Dodajte Ali Odstranite Zmogljivosti Linuxa V Kubernetes Securitycontext



Morda bo težko upravljati stopnjo privilegijev, ki so zagotovljeni vsakemu Podu in vsebniku v vsebniku Kubernetes. Zmožnosti Kubernetes SecurityContext lahko uporabimo za dodajanje ali brisanje zmogljivosti Linuxa iz Poda in Vsebnika, da povečamo varnost vsebnika. Ta članek se osredotoča na uporabo varnostnega konteksta za implementacijo preprostega primera dodajanja in brisanja zmogljivosti. Konfiguracija datoteke yaml za brisanje vseh zmožnosti in dodajanje samo ene zmožnosti vsebniku je navedena v vzorčnem primeru. V tem članku sta ukaza proc in capsh uporabljena za prikaz zmogljivosti vsebnika.

1. korak: Zaženite strežnik Minikube







Najprej zaženite strežnik minikube, da boste lahko zagnali svojo aplikacijo in uporabili navodila kubectl. Svoja vozlišča, pode in celo gručo lahko namestite s strežnikom minikube v okolju Kubernetes. Za vzdrževanje minikube v aktivnem načinu je treba uporabiti naslednji ukaz:



> zaženi minikube



S tem je strežnik minikube vklopljen in okolje Kubernetes je pripravljeno za uporabo.





2. korak: Ustvarite datoteko Kubernetes YAML



V drugem koraku ustvarite datoteko YAML za razmestitev pod.

Sledite korakom za ustvarjanje datoteke yaml z uporabo nano:

  • Pojdite na pot imenika, kjer želite ustvariti datoteko ali spremeniti obstoječo datoteko.
  • Vnesite ukaz nano, ki mu sledi ime datoteke.

Zaženite naslednji ukaz nano. Ustvari konfiguracijsko datoteko YAML z imenom »nano podsample.yaml«.

> nano podvzorec.yaml

Preidimo na naslednji korak, ki vam bo pomagal vedeti, kako konfigurirati datoteko podsample.yaml.

3. korak: Konfigurirajte datoteko YAML

Orodje capsh dodamo v prejšnjem koraku, da lahko vidimo zmogljivosti našega vsebnika.

Upoštevajte, da noben od teh parametrov ni konfiguriran za razdelek securityContext za ta vsebnik. Tako so vsi nastavljeni na sistemske privzete nastavitve. Upoštevajte dejstvo, da ta vsebnik deluje kot privzeti uporabnik, ki je naveden v datoteki Dockerfile, iz katere je sestavljen, če zanj v Kubernetesu ni definiran noben uporabnik. Za veliko vsebnikov je ta privzeti uporabnik root.

4. korak: Ustvari Pod

V tem koraku ustvarimo podsample.yaml z naslednjim priloženim ukazom:

> kubectl uporabite -f podvzorec.yaml

5. korak: Preverite zmogljivosti

V prejšnjem koraku je pod ustvarjen in se izvaja.

Zdaj, ko imamo v njej lupino, lahko uporabimo capsh, da preverimo njene zmogljivosti z naslednjim ukazom:

> $ kubectl izv - -stdin - -tty kape - - pepel

Z uporabo ukaza capsh je mogoče videti privzete zmogljivosti vsebnika, ki so navedene na naslednji način:

Iz danega izhoda lahko opazimo, da ima vsebnik veliko privzetih zmožnosti, ki so mu dane med izvajanjem.

6. korak: Spusti Samski Capabilit Y v Kubernetes SecurityContext

V tem koraku izpustimo eno samo zmogljivost vsebnika.

Konfigurirajmo datoteko yaml z naslednjim ukazom:

> nano dropod.yaml

Po tem pojdite na konfiguracijo datoteke droppod.yaml z naslednjim podanim ukazom:

> kubectl uporabite -f droppod.yaml

korak 7 : Konfigurirajte za dodajanje ene same zmogljivosti v datoteko YAML

V tem koraku odprite datoteko yaml (dropped.yaml), ki je bila ustvarjena v koraku 6. Nato nastavite vsebnik tako, da nima več dostopa do zmogljivosti CAP_MKNOD, kar odstrani možnost ustvarjanja novih vozlišč datotečnega sistema.

Konfigurirana datoteka je, kot je prikazano:

korak 8 : Preverite zmogljivosti

Datoteka yaml je konfigurirana tako, da opusti zmogljivost CAP_MKNOD.

V tem koraku izvedite in zaženite datoteko dropcaps.yaml, da preverite zmožnosti vsebnika z naslednjim ukazom:

> $ kubectl izv - -stdin - -tty kapice - - pepel

Zmogljivosti lahko preverite tako, da zaženete datoteko dropcaps:

> # capsh - -print

Opazimo lahko, da je ta sklop opustil zmogljivost CAP_MKNOD v primerjavi s prvim sklopom.

korak 9 : Opusti vse zmožnosti v Kubernetes SecurityContext

Ker lahko Kubernetes opusti eno samo zmogljivost, lahko opusti tudi vse zmožnosti prek securityContexta. V tem koraku opustite vse zmožnosti vsebnika, tako da uporabite podani ukaz:

> nano samplenocap.yaml

Nato konfigurirajte datoteko samplenocap.yaml z naslednjim ukazom:

> kubectl ustvari -f samplenocap.yaml

Zdaj pa pojdimo na naslednji korak, da izpustimo vse zmogljivosti v naših nastavitvah varnostnega konteksta.

10. korak: Konfigurirajte vse zmožnosti v datoteki YAML

V tem koraku odprite datoteko yaml, ki je bila ustvarjena v 9. koraku. Nato konfigurirajte znotraj container.securityContext  in izpustite vse zmožnosti vsebnika.

Konfigurirana datoteka je, kot je prikazano:

korak enajst : Preverite zmogljivosti

Zaženite nocaps v capsh, da vidite informacije o zmogljivostih. V tem koraku uporabite naslednji ukaz in prikažite vse zmožnosti vsebnika:

> kubectl izv - -stdin - -tty nocaps - - pepel

Zmogljivosti lahko preverite na naslednji sliki, tako da zaženete datoteko samplenocaps yaml v capsh:

> # capsh - -print

Prejšnji izhod kaže, da sta trenutni=”” in mejni niz=”” prazna. Zmogljivosti so uspešno opuščene.

Korak 1 2 : Namestite Bash

V tem koraku namestite Bash prek apk-ja, saj nekatere sistemske funkcije ne bodo delovale, če sploh nimamo nobenih zmogljivosti. Čeprav naš vsebnik deluje kot root, namestitev paketa Bash ne uspe.

> # apk dodaj bash

Korak 1 3 : Preverite informacije o zmogljivostih

Obstaja več načinov za ogled zmogljivosti našega vsebnika, na primer z uporabo ukazov capsh in proc. V tem koraku prikažemo zmogljivosti vsebnika z ukazom proc in proc prikaže zmogljivosti kot bitno sliko. Čeprav ni tako berljiv kot rezultat capsh, vsak bit, ki je tukaj definiran, pomeni določeno zmogljivost.

> # cd /proc/1/

Tukaj lahko vidimo, da ta poseben vsebnik nima omogočenih zmogljivosti; vse te vrednosti so nič.

Korak 1 4 : Dodajanje ene same zmogljivosti v Kubernetes SecurityContext

V prejšnjih korakih smo opustili eno zmožnost, ki je CAP_MKNOD, in opustili vse zmožnosti. Toda v tem koraku lahko zmogljivosti dodamo nazaj.

Izvedite naslednji ukaz, da ustvarite datoteko yAML:

> nano sampleadd.yaml

Po tem konfigurirajte datoteko sampleadd.yaml.

> kubectl ustvari -f sampleadd.yaml

Zdaj pa poskusimo datoteko sampleadd.yaml in dodamo eno kapaciteto v naših nastavitvah securityContext.

Korak 1 5 : Konfigurirajte enotno zmogljivost v datoteki YAML

Zdaj pa konfigurirajmo datoteko tako, da dodamo zmogljivost v spec.container.securityContext v capabilities.add [»MKNOD«].

Zmogljivost je prikazana v datoteki YAML.

korak 16 : Preverite zmogljivosti

V tem koraku zaženite addcaps, da preverite zmogljivosti z naslednjim ukazom:

> kubectl izv - -stdin - -tty addcaps - - kot

Dodano zmogljivost je mogoče videti v naslednjem podanem rezultatu:

trenutni = cap_mknod+ep

Omejevalni niz = cap_mknod

> # capsh - -print

Zaključek

Iz implementiranega primera ste se najprej naučili o privzetih zmožnostih vsebnika, ki so dodeljene v času izvajanja in so prikazane z ukazom capsh. Nato ste se naučili spustiti eno zmogljivost v vsebnik z imenom CAP_MKNOD. Nato ste se tudi naučili, kako opustiti vse zmožnosti vsebnika s konfiguracijo //drop: –all. Nato smo uporabili dva načina za prikaz zmožnosti vsebnikov – z uporabo ukazov capsh in proc.