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 privilegier som blir gitt til hver pod og beholder i en Kubernetes -beholder. Vi kan bruke Kubernetes SecurityContext -muligheter for å legge til eller slette Linux -funksjonene fra pod og container for å øke containerens sikkerhet. Denne artikkelen fokuserer på å bruke SecurityContext for å implementere et enkelt eksempel på å legge til og slette evner. Konfigurasjonen av en YAML -fil for å slette alle muligheter og legge til bare en mulighet til en beholder er gitt i eksempleteksemplet. I denne artikkelen brukes PROC- og CAPSH -kommandoene til å vise beholderens evner.

Trinn 1: Start Minikube -serveren

Først må du starte Minikube -serveren slik at du kan kjøre applikasjonen og bruke KUBECTL -instruksjonene. Du kan distribuere nodene, belgene og til og med klyngen ved hjelp av Minikube -serveren i Kubernetes -miljøet. Følgende kommando må brukes til å opprettholde Minikube i aktiv modus:

> Minikube Start

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

Steg 2: Lag en Kubernetes YAML -fil

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

Følg trinnene for å opprette en YAML -fil ved hjelp av Nano:

  • Gå til katalogstien 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 som heter “Nano Podsample.yaml ”.

> nano podsample.Yaml

La oss gå videre til neste trinn som hjelper deg å vite hvordan du konfigurerer en podsample.YAML -fil.

Trinn 3: Konfigurer YAML -filen

Vi legger til CAPSH -verktøyet i foregående trinn, slik at vi kan se mulighetene til containeren vår.

Merk at ingen av disse parametrene er konfigurert for en SecurityContext -seksjon for denne beholderen. Dermed er de alle innstilt på systemmåler. Tenk på at denne beholderen fungerer som standardbruker som leveres i Dockerfile som den er konstruert hvis ingen bruker er definert for den i Kubernetes. For mange containere er denne standardbrukeren roten.

Trinn 4: Lag en pod

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

> Kubectl Bruk -f PodSample.Yaml

Trinn 5: Sjekk for muligheter

I forrige trinn opprettes og løper en pod.

Nå som vi har et skall inne i det, kan vi bruke CAPSH for å bekrefte mulighetene ved å bruke følgende kommando:

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

Ved hjelp av CAPSH -kommandoen er det mulig å se standardkapasitetene 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 ved kjøretid.

Trinn 6: Dropper Enkelt Capability I Kubernetes SecurityContext

I dette trinnet slipper vi beholderens enkelt evne.

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

> Nano Dropod.Yaml

Etter det, flytt for å konfigurere droppod.YAML -fil ved å bruke følgende gitt kommando:

> Kubectl gjelder -f Droppod.Yaml

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

Åpne YAML -filen i dette trinnet (droppet.yaml) som ble opprettet i trinn 6. Sett deretter beholderen slik at den ikke lenger har tilgang til CAP_MKNOD -evnen, som fjerner muligheten til å lage de nye filsystemnodene.

Den konfigurerte filen er som vist:

Steg 8: Sjekk for muligheter

YAML -filen er konfigurert til å slippe cap_mknod -evnen.

I dette trinnet, kjør og kjør dropcaps.YAML -fil for å sjekke mulighetene 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 pod.

Steg 9: Slipp alle muligheter i Kubernetes SecurityContext

Siden Kubernetes kan slippe en enkelt mulighet, kan det også slippe alle mulighetene gjennom SecurityContext. I dette trinnet, slipp alle mulighetene til beholderen ved å antyde den gitte kommandoen:

> nano samplenocap.Yaml

Konfigurer samplenocap etter det.YAML -fil ved hjelp av følgende kommando:

> KUBECTL CREATE -F SAMPLENOCAP.Yaml

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

Trinn 10: Konfigurer alle mulighetene i YAML -filen

I dette trinnet åpner du YAML -filen som ble opprettet i trinn 9. Konfigurer deretter inne i beholderen.SecurityContext og slipper alle funksjonene til beholderen.

Den konfigurerte filen er som vist:

Steg 11: Sjekk for muligheter

Kjør noCaps i Capsh for å se informasjonen om evner. I dette trinnet bruker du følgende kommando og viser alle mulighetene til beholderen:

> Kubectl exec - -stdin - -tty nocaps - - aske

Kapasitetene kan sjekkes i følgende illustrasjon ved å kjøre SampleNocaps YAML -filen i CAPSH:

># capsh - -print

Den forrige utgangen viser at gjeldende = ”” og avgrensningssett = ”” er tomt nå. Funksjonene blir droppet med suksess.

Trinn 12: Installer basen

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

> # apk legg til bash

Trinn 13: Sjekk informasjonsinformasjonen

Det er flere måter å se mulighetene til containeren vår, for eksempel å bruke CAPSH- og PROC -kommandoer. I dette trinnet viser vi beholderkapasitetene ved å bruke PROC -kommandoen og PROC viser kapasiteter som et bitmapp. Selv om det ikke er 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 funksjoner; Alle disse verdiene er null.

Trinn 14: Legge til en enkelt mulighet i Kubernetes SecurityContext

I de foregående trinnene droppet vi en enkelt mulighet som er cap_mknod og droppet alle evner. Men i dette trinnet kan vi legge til mulighetene tilbake.

Utfør følgende kommando for å opprette YAML -filen:

> nano sampleadd.Yaml

Etter det, konfigurer sampleadd.YAML -fil.

> Kubectl Create -f Sampleadd.Yaml

La oss nå prøve sampleadd.YAML -fil og legg til en enkelt kapasitet i våre sikkerhetskontekstinnstillinger.

Trinn 15: Konfigurer enkeltkapasiteten i YAML -filen

La oss nå konfigurere filen ved å legge til muligheten i spesifikasjonen.container.SecurityContext til evner.Legg til [“mknod”].

Muligheten vises i YAML -filen.

Steg 16: Sjekk for muligheter

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

> Kubectl exec - -stdin - -tty addcaps - - som

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

Nåværende = cap_mknod+ep

Avgrensningssett = cap_mknod

> # capsh - -print

Konklusjon

Du lærte først fra det implementerte eksemplet om standardfunksjonene til beholderen som er tildelt ved kjøretid som vises med CAPSH -kommandoen. Deretter lærte du å slippe en enkelt mulighet i en beholder som heter cap_mknod. Deretter lærte du også hvordan du slipper alle funksjonene til beholderen ved hjelp av // Drop: -all konfigurasjon. Deretter brukte vi to måter å vise mulighetene til containere - ved hjelp av CAPSH- og PROC -kommandoene.