Saattaa olla vaikeaa hallita Kubernetes-säilön kullekin Podille ja säilölle annettujen oikeuksien määrää. Saatamme käyttää Kubernetes SecurityContext-ominaisuuksia lisätäksemme tai poistaaksemme Linux-ominaisuuksia Podista ja Säilystä lisätäksemme säilön turvallisuutta. Tässä artikkelissa keskitytään securityContextin käyttämiseen yksinkertaisen esimerkin ominaisuuksien lisäämisestä ja poistamisesta. Esimerkkiesimerkissä on yaml-tiedoston määritys kaikkien ominaisuuksien poistamiseksi ja vain yhden ominaisuuden lisäämiseksi säilöön. Tässä artikkelissa proc- ja capsh-komentoja käytetään näyttämään säilön ominaisuudet.
Vaihe 1: Käynnistä Minikube-palvelin
Käynnistä ensin minikube-palvelin, jotta voit suorittaa sovelluksesi ja käyttää kubectl-ohjeita. Voit ottaa käyttöön solmut, poddit ja jopa klusterin käyttämällä minikube-palvelinta Kubernetes-ympäristössä. Seuraavaa komentoa on käytettävä pitämään minikube aktiivisessa tilassa:
> aloita minikube
Näin minikube-palvelin kytketään päälle ja Kubernetes-ympäristö on valmis käytettäväksi.
Vaihe 2: Luo Kubernetes YAML -tiedosto
Luo toisessa vaiheessa YAML-tiedosto podin käyttöönottoa varten.
Luo yaml-tiedosto nanolla seuraavasti:
- Siirry hakemistopolkuun, johon haluat luoda tiedoston tai muokata olemassa olevaa tiedostoa.
- Kirjoita nanokomento ja tiedoston nimi.
Suorita seuraava nanokomento. Se luo YAML-määritystiedoston nimeltä 'nano podsample.yaml'.
> nano podsample.yamlSiirrytään seuraavaan vaiheeseen, joka auttaa sinua määrittämään podsample.yaml-tiedoston.
Vaihe 3: Määritä YAML-tiedosto
Lisäämme capsh-työkalun edellisessä vaiheessa, jotta voimme nähdä säilömme ominaisuudet.
Huomaa, että mitään näistä parametreista ei ole määritetty tämän säilön securityContext-osiolle. Siten ne kaikki on asetettu järjestelmän oletusasetuksiin. Ota huomioon, että tämä säilö toimii oletuskäyttäjänä, joka toimitetaan Docker-tiedostossa, josta se on muodostettu, jos sille ei ole määritetty käyttäjää Kubernetesissa. Monissa säilöissä tämä oletuskäyttäjä on pääkäyttäjä.
Vaihe 4: Luo pod
Tässä vaiheessa luodaan podsample.yaml seuraavalla komennolla:
> kubectl soveltaa -f podsample.yaml
Vaihe 5: Tarkista ominaisuudet
Edellisessä vaiheessa pod on luotu ja käynnissä.
Nyt kun meillä on kuori sen sisällä, voimme käyttää capshia varmistaaksemme sen ominaisuudet seuraavalla komennolla:
> $ kubectl exec - -stdin - -tty lippikset - - tuhkaCapsh-komennolla on mahdollista nähdä säilön oletuskapasiteetit, jotka on lueteltu seuraavasti:
Voimme havaita annetusta lähdöstä, että säiliöllä on monia oletusominaisuuksia, jotka annetaan säilölle suorituksen aikana.
Vaihe 6: Pudota Yksittäinen Kyky Y Kubernetes SecurityContextissa
Tässä vaiheessa hylkäämme säiliön yksittäisen kyvyn.
Määritetään yaml-tiedosto seuraavalla komennolla:
> nano dropod.yamlTämän jälkeen siirry määrittämään droppod.yaml-tiedosto käyttämällä seuraavaa annettua komentoa:
> kubectl soveltaa -f droppod.yaml
Vaihe 7 : Määritä lisäämään yksi ominaisuus YAML-tiedostoon
Avaa tässä vaiheessa vaiheessa 6 luotu yaml-tiedosto (dropped.yaml). Aseta sitten säilö sellaiseksi, että sillä ei enää ole pääsyä CAP_MKNOD-ominaisuuteen, mikä poistaa mahdollisuuden luoda uusia tiedostojärjestelmäsolmuja.
Määritetty tiedosto on seuraavanlainen:
Vaihe 8 : Tarkista ominaisuudet
Yaml-tiedosto on määritetty poistamaan CAP_MKNOD-ominaisuus.
Suorita ja suorita tässä vaiheessa dropcaps.yaml-tiedosto tarkistaaksesi säilön ominaisuudet käyttämällä seuraavaa komentoa:
> $ kubectl exec - -stdin - -tty drop caps - - tuhkaKapasiteetit voidaan tarkistaa suorittamalla dropcaps-tiedosto:
> # capsh - -print
Voimme havaita, että tämä pod pudotti CAP_MKNOD-ominaisuuden ensimmäiseen podiin verrattuna.
Vaihe 9 : Pudota kaikki ominaisuudet Kubernetes SecurityContextissa
Koska Kubernetes voi pudottaa yhden ominaisuuden, se voi myös pudottaa kaikki ominaisuudet securityContextin kautta. Tässä vaiheessa hylkää kaikki säilön ominaisuudet antamalla annettu komento:
> nano samplenocap.yamlTämän jälkeen määritä samplenocap.yaml-tiedosto käyttämällä seuraavaa komentoa:
> kubectl luoda -f samplenocap.yaml
Siirrytään nyt seuraavaan vaiheeseen ja pudotamme kaikki kapasiteetit securityContext-asetuksistamme.
Vaihe 10: Määritä kaikki YAML-tiedoston ominaisuudet
Avaa tässä vaiheessa vaiheessa 9 luotu yaml-tiedosto. Määritä sitten asetukset konteinerin container.securityContext sisällä ja hylkää kaikki säilön ominaisuudet.
Määritetty tiedosto on seuraavanlainen:
Vaihe yksitoista : Tarkista ominaisuudet
Suorita nocaps in capsh nähdäksesi tiedot ominaisuuksista. Käytä tässä vaiheessa seuraavaa komentoa ja näytä kaikki säilön ominaisuudet:
> kubectl exec - -stdin - -tty nocaps - - tuhkaKapasiteetit voidaan tarkistaa seuraavassa kuvassa suorittamalla samplenocaps yaml-tiedosto capsh-muodossa:
> # capsh - -print
Edellinen tulos osoittaa, että nykyinen =”” ja rajausjoukko=”” ovat nyt tyhjiä. Valmiudet pudotetaan onnistuneesti.
Vaihe 1 2 : Asenna Bash
Asenna tässä vaiheessa Bash apk:n kautta, koska jotkin järjestelmätoiminnot eivät toimi, jos meillä ei ole lainkaan ominaisuuksia. Vaikka konttimme toimii pääkäyttäjänä, Bash-paketin asennus epäonnistuu.
> # apk lisää bash
Vaihe 1 3 : Tarkista ominaisuustiedot
On olemassa useita tapoja tarkastella säilömme ominaisuuksia, kuten käyttämällä capsh- ja proc-komentoja. Tässä vaiheessa näytämme säilön kapasiteetit käyttämällä proc-komentoa ja proc näyttää kapasiteetit bittikarttana. Vaikka se ei ole aivan yhtä luettavissa kuin capsh:n tulos, jokainen tässä määritelty bitti edustaa tiettyä ominaisuutta.
> # cd /proc/1/
Tässä voimme nähdä, että tällä tietyllä säilölle ei ole otettu käyttöön ominaisuuksia; kaikki nämä arvot ovat nollia.
Vaihe 1 4 : Yhden ominaisuuden lisääminen Kubernetes SecurityContextiin
Edellisissä vaiheissa hylkäsimme yhden ominaisuuden, joka on CAP_MKNOD, ja hylkäsimme kaikki ominaisuudet. Mutta tässä vaiheessa voimme lisätä ominaisuudet takaisin.
Luo yAML-tiedosto suorittamalla seuraava komento:
> nano sampleadd.yamlTämän jälkeen määritä sampleadd.yaml-tiedosto.
> kubectl luoda -f sampleadd.yaml
Kokeillaan nyt sampleadd.yaml-tiedostoa ja lisätään yksi kapasiteetti securityContext-asetuksiin.
Vaihe 1 5 : Määritä yksi ominaisuus YAML-tiedostossa
Määritetään nyt tiedosto lisäämällä spec.container.securityContext-ominaisuus kohtaan capabilities.add ['MKNOD'].
Ominaisuus näkyy YAML-tiedostossa.
Vaihe 16 : Tarkista ominaisuudet
Suorita tässä vaiheessa addcaps tarkistaaksesi ominaisuudet käyttämällä seuraavaa komentoa:
> kubectl exec - -stdin - -tty addcaps - - kutenLisätty kapasiteetti näkyy seuraavassa annetussa lähdössä:
nykyinen = cap_mknod+ep
Rajoitusjoukko = cap_mknod
> # capsh - -print
Johtopäätös
Opit ensin toteutetusta esimerkistä säilön oletusominaisuuksista, jotka määritetään suoritusaikana, joka näytetään capsh-komennolla. Seuraavaksi opit pudottamaan yhden ominaisuuden säilöön nimeltä CAP_MKNOD. Sitten opit myös pudottamaan kaikki säilön ominaisuudet //drop: –all -kokoonpanon avulla. Sitten käytimme kahta tapaa näyttää säiliöiden ominaisuudet - käyttämällä capsh- ja proc-komentoja.