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:
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
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.