Magdagdag o Mag-alis ng Mga Kakayahang Linux sa Kubernetes SecurityContext

Magdagdag O Mag Alis Ng Mga Kakayahang Linux Sa Kubernetes Securitycontext



Maaaring mahirap pamahalaan ang antas ng mga pribilehiyong ibinibigay sa bawat Pod at container sa isang container ng Kubernetes. Maaari naming gamitin ang mga kakayahan ng Kubernetes SecurityContext upang magdagdag o magtanggal ng mga kakayahan ng Linux mula sa Pod at Container upang mapataas ang seguridad ng container. Nakatuon ang artikulong ito sa paggamit ng securityContext upang ipatupad ang isang simpleng halimbawa ng pagdaragdag at pagtanggal ng mga kakayahan. Ang pagsasaayos ng isang yaml file upang tanggalin ang lahat ng mga kakayahan at magdagdag lamang ng isang kakayahan sa isang lalagyan ay ibinigay sa halimbawang halimbawa. Sa artikulong ito, ginagamit ang mga proc at capsh na command upang ipakita ang mga kakayahan ng container.

Hakbang 1: Simulan ang Minikube Server







Una, simulan ang minikube server upang mapatakbo mo ang iyong aplikasyon at magamit ang mga tagubilin sa kubectl. Maaari mong i-deploy ang iyong mga node, pod, at kahit cluster gamit ang minikube server sa kapaligiran ng Kubernetes. Ang sumusunod na command ay dapat gamitin upang mapanatili ang minikube sa aktibong mode:



> simulan ang minikube



Sa paggawa nito, naka-on ang minikube server at handa nang gamitin ang kapaligiran ng Kubernetes.





Hakbang 2: Gumawa ng Kubernetes YAML File



Sa pangalawang hakbang, gumawa ng YAML file para mag-deploy ng pod.

Sundin ang mga hakbang upang lumikha ng yaml file gamit ang nano:

  • Pumunta sa path ng direktoryo kung saan mo gustong likhain ang file o baguhin ang isang umiiral na file.
  • I-type ang nano command na sinusundan ng pangalan ng file.

Patakbuhin ang sumusunod na command na nano. Lumilikha ito ng YAML configuration file na pinangalanang 'nano podsample.yaml'.

> nano podsample.yaml

Lumipat tayo sa susunod na hakbang na tulungan kang malaman kung paano mag-configure ng podsample.yaml file.

Hakbang 3: I-configure ang YAML File

Idinaragdag namin ang capsh tool sa naunang hakbang para makita namin ang mga kakayahan ng aming container.

Tandaan na wala sa mga parameter na iyon ang naka-configure para sa isang securityContext na seksyon para sa container na ito. Kaya, lahat sila ay nakatakda sa mga default ng system. Isaalang-alang ang katotohanan na ang container na ito ay gumagana bilang ang default na user na ibinibigay sa Dockerfile kung saan ito binuo kung walang user na tinukoy para dito sa Kubernetes. Para sa maraming container, ang default na user na ito ay ang ugat.

Hakbang 4: Gumawa ng Pod

Sa hakbang na ito, gumawa tayo ng podsample.yaml gamit ang sumusunod na naka-attach na command:

> kubectl apply -f podsample.yaml

Hakbang 5: Suriin ang mga Kakayahan

Sa nakaraang hakbang, ang isang pod ay nilikha at tumatakbo.

Ngayon na mayroon kaming isang shell sa loob nito, maaari naming gamitin ang capsh upang i-verify ang mga kakayahan nito gamit ang sumusunod na command:

> $ kubectl exec - -stdin - -tty takip-- abo

Gamit ang capsh command, posibleng makita ang mga default na kapasidad ng container na nakalista tulad ng sumusunod:

Maaari naming obserbahan mula sa ibinigay na output na ang lalagyan ay may maraming mga default na kakayahan na ibinibigay sa lalagyan sa runtime.

Hakbang 6: Ihulog ang Walang asawa Kakayahan Y sa Kubernetes SecurityContext

Sa hakbang na ito, ibinabagsak namin ang nag-iisang kakayahan ng lalagyan.

I-configure natin ang yaml file gamit ang sumusunod na command:

> nano dropod.yaml

Pagkatapos nito, ilipat upang i-configure ang droppod.yaml file gamit ang sumusunod na ibinigay na command:

> kubectl apply -f droppod.yaml

Hakbang 7 : I-configure para Idagdag ang Single Capability sa YAML File

Sa hakbang na ito, buksan ang yaml file (dropped.yaml) na ginawa sa Hakbang 6. Pagkatapos, itakda ang container upang wala na itong access sa CAP_MKNOD na kakayahan, na nag-aalis ng kakayahang gumawa ng mga bagong file system node.

Ang na-configure na file ay tulad ng ipinapakita:

Hakbang 8 : Suriin ang mga Kakayahan

Ang yaml file ay na-configure upang i-drop ang CAP_MKNOD kakayahan.

Sa hakbang na ito, isagawa at patakbuhin ang dropcaps.yaml file upang suriin ang mga kakayahan ng container gamit ang sumusunod na command:

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

Maaaring suriin ang mga kapasidad sa pamamagitan ng pagpapatakbo ng dropcaps file:

> # capsh - -print

Mapapansin natin na ang pod na ito ay bumaba sa CAP_MKNOD na kakayahan kumpara sa unang pod.

Hakbang 9 : I-drop ang Lahat ng Kakayahan sa Kubernetes SecurityContext

Dahil ang Kubernetes ay maaaring mag-drop ng isang solong kakayahan, maaari rin nitong i-drop ang lahat ng mga kakayahan sa pamamagitan ng securityContext. Sa hakbang na ito, i-drop ang lahat ng mga kakayahan ng container sa pamamagitan ng pagpapahiwatig ng ibinigay na command:

> nano samplenocap.yaml

Pagkatapos nito, i-configure ang samplenocap.yaml file gamit ang sumusunod na command:

> lumikha ng kubectl -f samplenocap.yaml

Ngayon, lumipat tayo sa susunod na hakbang upang i-drop ang lahat ng mga kapasidad sa aming mga setting ng securityContext.

Hakbang 10: I-configure ang Lahat ng Mga Kakayahan sa YAML File

Sa hakbang na ito, buksan ang yaml file na ginawa sa Hakbang 9. Pagkatapos, i-configure sa loob ng container.securityContext  at i-drop ang lahat ng kakayahan ng container.

Ang na-configure na file ay tulad ng ipinapakita:

Hakbang labing-isa : Suriin ang mga Kakayahan

Patakbuhin ang nocaps sa capsh upang makita ang impormasyon tungkol sa mga kakayahan. Sa hakbang na ito, gamitin ang sumusunod na command at ipakita ang lahat ng mga kakayahan ng container:

> kubectl exec - -stdin - -tty walang sumbrero - - abo

Maaaring suriin ang mga kapasidad sa sumusunod na paglalarawan sa pamamagitan ng pagpapatakbo ng samplenocaps yaml file sa capsh:

> # capsh - -print

Ang nakaraang output ay nagpapakita na ang kasalukuyang='' at bounding set='' ay walang laman ngayon. Matagumpay na natanggal ang mga kakayahan.

Hakbang 1 2 : I-install ang Bash

Sa hakbang na ito, i-install ang Bash sa pamamagitan ng apk dahil hindi gagana ang ilang function ng system kung wala kaming anumang mga kakayahan. Kahit na ang aming lalagyan ay gumagana bilang isang ugat, ang pag-install ng Bash package ay nabigo.

> # apk magdagdag ng bash

Hakbang 1 3 : Suriin ang Impormasyon ng Mga Kakayahan

Mayroong ilang mga paraan upang tingnan ang mga kakayahan ng aming lalagyan tulad ng paggamit ng capsh at proc command. Sa hakbang na ito, ipinapakita namin ang mga kapasidad ng lalagyan gamit ang proc command at ipinapakita ng proc ang mga kapasidad bilang bitmap. Bagama't hindi ito gaanong nababasa gaya ng resulta mula sa capsh, ang bawat bit na tinukoy dito ay kumakatawan sa isang tiyak na kakayahan.

> # cd /proc/1/

Dito, makikita natin na ang partikular na lalagyang ito ay walang pinaganang mga kakayahan; lahat ng mga halagang ito ay zero.

Hakbang 1 4 : Pagdaragdag ng Isang Kakayahan sa Kubernetes SecurityContext

Sa mga nakaraang hakbang, ibinaba namin ang isang kakayahan na CAP_MKNOD at ibinaba ang lahat ng kakayahan. Ngunit, sa hakbang na ito, maaari naming idagdag ang mga kakayahan pabalik.

Isagawa ang sumusunod na utos upang lumikha ng yAML file:

> nano sampleadd.yaml

Pagkatapos nito, i-configure ang sampleadd.yaml file.

> lumikha ng kubectl -f sampleadd.yaml

Ngayon, subukan natin ang sampleadd.yaml file at magdagdag ng isang kapasidad sa aming mga setting ng securityContext.

Hakbang 1 5 : I-configure ang Single Capability sa YAML File

Ngayon, i-configure natin ang file sa pamamagitan ng pagdaragdag ng kakayahan sa spec.container.securityContext sa capabilities.add [“MKNOD”].

Ang kakayahan ay ipinapakita sa YAML file.

Hakbang 16 : Suriin ang mga Kakayahan

Sa hakbang na ito, patakbuhin ang addcaps upang suriin ang mga kakayahan gamit ang sumusunod na command:

> kubectl exec - -stdin - -tty addcaps - - bilang

Ang karagdagang kapasidad ay makikita sa sumusunod na ibinigay na output:

kasalukuyang = cap_mknod+ep

Bounding set = cap_mknod

> # capsh - -print

Konklusyon

Una mong natutunan mula sa ipinatupad na halimbawa ang tungkol sa mga default na kakayahan ng container na itinalaga sa oras ng pagtakbo na ipinapakita gamit ang capsh command. Susunod, natutunan mong mag-drop ng isang kakayahan sa isang container na may pangalang CAP_MKNOD. Pagkatapos, natutunan mo rin kung paano i-drop ang lahat ng kakayahan ng container gamit ang //drop: –all configuration. Pagkatapos, gumamit kami ng dalawang paraan upang ipakita ang mga kakayahan ng mga lalagyan – gamit ang capsh at proc command.