Legg til eller fjern Linux-funksjonene i Kubernetes SecurityContext

Legg Til Eller Fjern Linux Funksjonene I Kubernetes Securitycontext



Det kan være vanskelig å administrere graden av rettigheter som gis til hver Pod og beholder i en Kubernetes-beholder. Vi kan bruke Kubernetes SecurityContext-funksjonene for å legge til eller slette Linux-funksjonene fra Pod og Container for å øke sikkerheten til containeren. Denne artikkelen fokuserer på å bruke securityContext for å implementere et enkelt eksempel på å legge til og slette funksjoner. Konfigurasjonen av en yaml-fil for å slette alle funksjoner og legge til bare én funksjon til en beholder er gitt i eksempeleksemplet. I denne artikkelen brukes proc- og capsh-kommandoene til å vise beholderens muligheter.

Trinn 1: Start Minikube-serveren







Start først minikube-serveren slik at du kan kjøre applikasjonen din og bruke kubectl-instruksjonene. Du kan distribuere noder, pods og til og med klynge ved å bruke minikube-serveren i Kubernetes-miljøet. Følgende kommando må brukes for å opprettholde minikuben i aktiv modus:



> start minikube



Ved å gjøre det slås minikube-serveren på og Kubernetes-miljøet er klart til bruk.





Steg 2: Opprett en Kubernetes YAML-fil



I det andre trinnet oppretter du en YAML-fil for å distribuere en pod.

Følg trinnene for å lage en yaml-fil ved hjelp av nano:

  • Gå til katalogbanen der du vil opprette filen eller endre en eksisterende fil.
  • Skriv inn nano-kommandoen etterfulgt av filnavnet.

Kjør følgende nano-kommando. Den oppretter en YAML-konfigurasjonsfil kalt 'nano podsample.yaml'.

> nano podsample.yaml

La oss gå videre til neste trinn som er å hjelpe deg å vite hvordan du konfigurerer en podsample.yaml-fil.

Trinn 3: Konfigurer YAML-filen

Vi legger til capsh-verktøyet i det foregående trinnet slik at vi kan se mulighetene til beholderen vår.

Merk at ingen av disse parameterne er konfigurert for en securityContext-seksjon for denne beholderen. Dermed er de alle satt til systemstandarder. Tenk på det faktum at denne beholderen fungerer som standardbruker som er levert i Dockerfilen som den er konstruert fra hvis ingen bruker er definert for den i Kubernetes. For mange beholdere er denne standardbrukeren roten.

Trinn 4: Lag en Pod

I dette trinnet, la oss lage podsample.yaml med følgende vedlagte kommando:

> kubectl gjelder -f podsample.yaml

Trinn 5: Se etter evner

I forrige trinn opprettes og kjører en pod.

Nå som vi har et skall inni det, kan vi bruke capsh for å bekrefte funksjonene ved å bruke følgende kommando:

> $ kubectl exec - -stdin - -tty caps - - aske

Ved å bruke capsh-kommandoen er det mulig å se standardkapasiteten til beholderen som er oppført som følger:

Vi kan observere fra den gitte utgangen at beholderen har mange standardfunksjoner som er gitt til beholderen under kjøring.

Trinn 6: Slipp Enkelt Kapabilitet Y i Kubernetes SecurityContext

I dette trinnet dropper vi enkeltfunksjonen til beholderen.

La oss konfigurere yaml-filen ved å bruke følgende kommando:

> nano dropod.yaml

Etter det, flytt for å konfigurere dropod.yaml-filen ved å bruke følgende gitte kommando:

> kubectl gjelder -f dropod.yaml

Steg 7 : Konfigurer for å legge til enkeltfunksjonen i YAML-filen

I dette trinnet åpner du yaml-filen (dropped.yaml) som ble opprettet i trinn 6. Sett deretter beholderen slik at den ikke lenger har tilgang til CAP_MKNOD-funksjonen, som fjerner muligheten til å opprette de nye filsystemnodene.

Den konfigurerte filen er som vist:

Steg 8 : Se etter evner

Yaml-filen er konfigurert til å slippe CAP_MKNOD-funksjonen.

I dette trinnet, kjør og kjør filen dropcaps.yaml for å sjekke egenskapene til beholderen ved å bruke følgende kommando:

> $ kubectl exec - -stdin - -tty dropcaps - - aske

Kapasitetene kan kontrolleres ved å kjøre dropcaps-filen:

> # capsh - -print

Vi kan observere at denne poden droppet CAP_MKNOD-evnen sammenlignet med den første poden.

Steg 9 : Slipp alle funksjoner i Kubernetes SecurityContext

Siden Kubernetes kan droppe en enkelt funksjon, kan den også slippe alle funksjonene gjennom securityContext. I dette trinnet slipper du alle egenskapene til beholderen ved å antyde den gitte kommandoen:

> nano samplenocap.yaml

Deretter konfigurerer du samplenocap.yaml-filen ved å bruke følgende kommando:

> kubectl opprette -f samplenocap.yaml

La oss nå gå til neste trinn for å slippe alle kapasitetene i sikkerhetskontekstinnstillingene våre.

Trinn 10: Konfigurer alle funksjonene i YAML-filen

I dette trinnet åpner du yaml-filen som ble opprettet i trinn 9. Konfigurer deretter inne i container.securityContext  og slipp alle funksjonene til beholderen.

Den konfigurerte filen er som vist:

Steg elleve : Se etter evner

Kjør nocaps i capsh for å se informasjon om muligheter. I dette trinnet bruker du følgende kommando og viser alle egenskapene til beholderen:

> kubectl exec - -stdin - -tty nocaps - - aske

Kapasitetene kan kontrolleres i følgende illustrasjon ved å kjøre samplenocaps yaml-filen i capsh:

> # capsh - -print

Den forrige utgangen viser at gjeldende=”” og grensesett=”” er tomme nå. Mulighetene er droppet.

Trinn 1 2 : Installer Bash

I dette trinnet, installer Bash gjennom apk siden noen systemfunksjoner ikke vil fungere hvis vi ikke har noen muligheter i det hele tatt. Selv om containeren vår fungerer som en rot, mislykkes installasjonen av Bash-pakken.

> # apk legg til bash

Trinn 1 3 : Sjekk funksjonsinformasjonen

Det er flere måter å se egenskapene til containeren vår på, som å bruke capsh- og proc-kommandoene. I dette trinnet viser vi beholderkapasiteten ved å bruke proc-kommandoen og proc viser kapasiteter som en bitmap. Selv om det ikke er fullt så lesbart som resultatet fra capsh, står hver bit som er definert her for en viss evne.

> # cd /proc/1/

Her kan vi se at denne spesielle beholderen ikke har noen aktiverte muligheter; alle disse verdiene er null.

Trinn 1 4 : Legge til en enkelt funksjon i Kubernetes SecurityContext

I de forrige trinnene droppet vi en enkelt funksjon som er CAP_MKNOD og droppet alle funksjoner. Men i dette trinnet kan vi legge til funksjonene tilbake.

Utfør følgende kommando for å lage yAML-filen:

> nano sampleadd.yaml

Deretter konfigurerer du sampleadd.yaml-filen.

> kubectl opprette -f sampleadd.yaml

La oss nå prøve sampleadd.yaml-filen og legge til en enkelt kapasitet i securityContext-innstillingene våre.

Trinn 1 5 : Konfigurer Single Capability i YAML-filen

La oss nå konfigurere filen ved å legge til funksjonen i spec.container.securityContext i capabilities.add [“MKNOD”].

Muligheten vises i YAML-filen.

Steg 16 : Se etter evner

I dette trinnet, kjør addcaps for å sjekke egenskapene ved å bruke følgende kommando:

> kubectl exec - -stdin - -tty addcaps - - som

Den ekstra kapasiteten kan sees i følgende gitte utdata:

strøm = cap_mknod+ep

Bounding set = cap_mknod

> # capsh - -print

Konklusjon

Du lærte først fra det implementerte eksemplet om standardfunksjonene til beholderen som er tilordnet på kjøretid som vises med capsh-kommandoen. Deretter lærte du å slippe en enkelt funksjon i en beholder kalt CAP_MKNOD. Deretter lærte du også hvordan du dropper alle funksjonene til beholderen ved å bruke //drop: –all-konfigurasjonen. Deretter brukte vi to måter å vise mulighetene til containere – ved å bruke capsh- og proc-kommandoene.