Kubernetes SecurityContextలో Linux సామర్థ్యాలను జోడించండి లేదా తీసివేయండి

Kubernetes Securitycontextlo Linux Samarthyalanu Jodincandi Leda Tisiveyandi



Kubernetes కంటైనర్‌లో ప్రతి పాడ్ మరియు కంటైనర్‌కు అందించబడిన అధికారాల స్థాయిని నిర్వహించడం కష్టంగా ఉండవచ్చు. కంటైనర్ యొక్క భద్రతను పెంచడానికి పాడ్ మరియు కంటైనర్ నుండి Linux సామర్థ్యాలను జోడించడానికి లేదా తొలగించడానికి మేము Kubernetes SecurityContext సామర్థ్యాలను ఉపయోగించుకోవచ్చు. ఈ కథనం సామర్థ్యాలను జోడించడం మరియు తొలగించడం యొక్క సాధారణ ఉదాహరణను అమలు చేయడానికి భద్రతా సందర్భాన్ని ఉపయోగించడంపై దృష్టి పెడుతుంది. అన్ని సామర్థ్యాలను తొలగించడానికి మరియు కంటైనర్‌కు కేవలం ఒక సామర్థ్యాన్ని జోడించడానికి yaml ఫైల్ యొక్క కాన్ఫిగరేషన్ నమూనా ఉదాహరణలో అందించబడింది. ఈ కథనంలో, కంటైనర్ సామర్థ్యాలను ప్రదర్శించడానికి proc మరియు capsh ఆదేశాలు ఉపయోగించబడతాయి.

దశ 1: మినీక్యూబ్ సర్వర్‌ను ప్రారంభించండి







ముందుగా, minikube సర్వర్‌ని ప్రారంభించండి, తద్వారా మీరు మీ అప్లికేషన్‌ను అమలు చేయవచ్చు మరియు kubectl సూచనలను ఉపయోగించవచ్చు. మీరు Kubernetes వాతావరణంలో minikube సర్వర్‌ని ఉపయోగించి మీ నోడ్‌లు, పాడ్‌లు మరియు క్లస్టర్‌ను కూడా అమర్చవచ్చు. మినీక్యూబ్‌ను సక్రియ మోడ్‌లో నిర్వహించడానికి కింది ఆదేశాన్ని తప్పనిసరిగా ఉపయోగించాలి:



> minikube ప్రారంభించండి



అలా చేయడం ద్వారా, minikube సర్వర్ ఆన్ చేయబడింది మరియు Kubernetes పర్యావరణం ఉపయోగం కోసం సిద్ధంగా ఉంది.





దశ 2: Kubernetes YAML ఫైల్‌ను సృష్టించండి



రెండవ దశలో, పాడ్‌ని అమలు చేయడానికి YAML ఫైల్‌ను సృష్టించండి.

నానోను ఉపయోగించి yaml ఫైల్‌ను సృష్టించడానికి దశలను అనుసరించండి:

  • మీరు ఫైల్‌ను సృష్టించాలనుకుంటున్న డైరెక్టరీ పాత్‌కు వెళ్లండి లేదా ఇప్పటికే ఉన్న ఫైల్‌ను సవరించండి.
  • ఫైల్ పేరు తర్వాత నానో కమాండ్‌ని టైప్ చేయండి.

కింది నానో ఆదేశాన్ని అమలు చేయండి. ఇది 'nano podsample.yaml' పేరుతో YAML కాన్ఫిగరేషన్ ఫైల్‌ను సృష్టిస్తుంది.

> నానో podsample.yaml

podsample.yaml ఫైల్‌ను ఎలా కాన్ఫిగర్ చేయాలో తెలుసుకోవడంలో మీకు సహాయపడే తదుపరి దశకు వెళ్దాం.

దశ 3: YAML ఫైల్‌ను కాన్ఫిగర్ చేయండి

మేము మునుపటి దశలో క్యాప్ష్ సాధనాన్ని జోడిస్తాము, తద్వారా మన కంటైనర్ సామర్థ్యాలను చూడవచ్చు.

ఈ కంటైనర్ కోసం సెక్యూరిటీ కాంటెక్స్ట్ విభాగం కోసం ఆ పారామితులు ఏవీ కాన్ఫిగర్ చేయలేదని గమనించండి. అందువలన, అవన్నీ సిస్టమ్ డిఫాల్ట్‌లకు సెట్ చేయబడ్డాయి. ఈ కంటైనర్ డిఫాల్ట్ యూజర్‌గా పనిచేస్తుందనే వాస్తవాన్ని పరిగణించండి, ఇది డాకర్‌ఫైల్‌లో సరఫరా చేయబడుతుంది, అది కుబెర్నెట్స్‌లో వినియోగదారుని నిర్వచించకపోతే. చాలా కంటైనర్‌లకు, ఈ డిఫాల్ట్ యూజర్ రూట్.

దశ 4: ఒక పాడ్ సృష్టించండి

ఈ దశలో, కింది జోడించిన ఆదేశంతో podsample.yamlని సృష్టిద్దాం:

> kubectl వర్తిస్తాయి -ఎఫ్ podsample.yaml

దశ 5: సామర్థ్యాల కోసం తనిఖీ చేయండి

మునుపటి దశలో, ఒక పాడ్ సృష్టించబడుతుంది మరియు రన్ అవుతుంది.

ఇప్పుడు మనకు దాని లోపల షెల్ ఉంది, కింది ఆదేశాన్ని ఉపయోగించి దాని సామర్థ్యాలను ధృవీకరించడానికి మనం capshని ఉపయోగించవచ్చు:

> $ kubectl కార్యనిర్వాహకుడు - -స్టిడిన్ - -tty టోపీలు - - బూడిద

capsh ఆదేశాన్ని ఉపయోగించి, కింది విధంగా జాబితా చేయబడిన కంటైనర్ యొక్క డిఫాల్ట్ సామర్థ్యాలను చూడటం సాధ్యమవుతుంది:

రన్‌టైమ్‌లో కంటైనర్‌కు ఇవ్వబడిన అనేక డిఫాల్ట్ సామర్థ్యాలను కంటైనర్ కలిగి ఉందని మేము ఇచ్చిన అవుట్‌పుట్ నుండి గమనించవచ్చు.

దశ 6: డ్రాప్ ది సింగిల్ సామర్థ్యం వై కుబెర్నెటెస్ సెక్యూరిటీ కాంటెక్స్ట్‌లో

ఈ దశలో, మేము కంటైనర్ యొక్క ఒకే సామర్థ్యాన్ని వదిలివేస్తాము.

కింది ఆదేశాన్ని ఉపయోగించి yaml ఫైల్‌ను కాన్ఫిగర్ చేద్దాం:

> నానో dropod.yaml

ఆ తర్వాత, కింది ఇచ్చిన ఆదేశాన్ని ఉపయోగించి droppod.yaml ఫైల్‌ను కాన్ఫిగర్ చేయడానికి తరలించండి:

> kubectl వర్తిస్తాయి -ఎఫ్ droppod.yaml

దశ 7 : YAML ఫైల్‌లో ఒకే సామర్ధ్యాన్ని జోడించడానికి కాన్ఫిగర్ చేయండి

ఈ దశలో, దశ 6లో సృష్టించబడిన yaml ఫైల్ (dropped.yaml)ని తెరవండి. ఆపై, కొత్త ఫైల్ సిస్టమ్ నోడ్‌లను సృష్టించే సామర్థ్యాన్ని తీసివేసే CAP_MKNOD సామర్థ్యానికి ఇకపై యాక్సెస్ లేని విధంగా కంటైనర్‌ను సెట్ చేయండి.

కాన్ఫిగర్ చేయబడిన ఫైల్ చూపిన విధంగా ఉంది:

దశ 8 : సామర్థ్యాల కోసం తనిఖీ చేయండి

yaml ఫైల్ CAP_MKNOD సామర్థ్యాన్ని వదలడానికి కాన్ఫిగర్ చేయబడింది.

ఈ దశలో, కింది ఆదేశాన్ని ఉపయోగించి కంటైనర్ సామర్థ్యాలను తనిఖీ చేయడానికి dropcaps.yaml ఫైల్‌ను అమలు చేయండి మరియు అమలు చేయండి:

> $ kubectl కార్యనిర్వాహకుడు - -స్టిడిన్ - -tty డ్రాప్‌క్యాప్స్ -- బూడిద

డ్రాప్‌క్యాప్స్ ఫైల్‌ను అమలు చేయడం ద్వారా సామర్థ్యాలను తనిఖీ చేయవచ్చు:

> # క్యాప్ష్ - -ప్రింట్

మొదటి పాడ్‌తో పోలిస్తే ఈ పాడ్ CAP_MKNOD సామర్థ్యాన్ని తగ్గించడాన్ని మనం గమనించవచ్చు.

దశ 9 : కుబెర్నెట్స్ సెక్యూరిటీ కాంటెక్స్ట్‌లో అన్ని సామర్థ్యాలను వదలండి

కుబెర్నెటెస్ ఒకే సామర్థ్యాన్ని వదులుకోగలదు కాబట్టి, ఇది సెక్యూరిటీ కాంటెక్స్ట్ ద్వారా అన్ని సామర్థ్యాలను కూడా వదులుతుంది. ఈ దశలో, ఇచ్చిన ఆదేశాన్ని సూచించడం ద్వారా కంటైనర్ యొక్క అన్ని సామర్థ్యాలను వదలండి:

> నానో నమూనా

ఆ తర్వాత, కింది ఆదేశాన్ని ఉపయోగించి samplenocap.yaml ఫైల్‌ను కాన్ఫిగర్ చేయండి:

> kubectl సృష్టించు -ఎఫ్ నమూనా

ఇప్పుడు, మన సెక్యూరిటీ కాంటెక్స్ట్ సెట్టింగ్‌లలోని అన్ని సామర్థ్యాలను వదలడానికి తదుపరి దశకు వెళ్దాం.

దశ 10: YAML ఫైల్‌లోని అన్ని సామర్థ్యాలను కాన్ఫిగర్ చేయండి

ఈ దశలో, దశ 9లో సృష్టించబడిన yaml ఫైల్‌ని తెరవండి. ఆపై, కంటైనర్.securityContext లోపల కాన్ఫిగర్ చేయండి మరియు కంటైనర్ యొక్క అన్ని సామర్థ్యాలను వదలండి.

కాన్ఫిగర్ చేయబడిన ఫైల్ చూపిన విధంగా ఉంది:

దశ పదకొండు : సామర్థ్యాల కోసం తనిఖీ చేయండి

సామర్థ్యాల గురించిన సమాచారాన్ని చూడటానికి నోక్యాప్‌లను క్యాప్ష్‌లో అమలు చేయండి. ఈ దశలో, కింది ఆదేశాన్ని ఉపయోగించండి మరియు కంటైనర్ యొక్క అన్ని సామర్థ్యాలను ప్రదర్శించండి:

> kubectl కార్యనిర్వాహకుడు - -స్టిడిన్ - -tty నోక్యాప్స్ -- బూడిద

క్యాప్ష్‌లో సాంపిల్‌నోకాప్స్ yaml ఫైల్‌ను అమలు చేయడం ద్వారా సామర్థ్యాలను క్రింది ఉదాహరణలో తనిఖీ చేయవచ్చు:

> # క్యాప్ష్ - -ప్రింట్

కరెంట్=”” మరియు బౌండింగ్ సెట్=”” ఇప్పుడు ఖాళీగా ఉన్నాయని మునుపటి అవుట్‌పుట్ చూపిస్తుంది. సామర్థ్యాలు విజయవంతంగా తొలగించబడ్డాయి.

దశ 1 2 : బాష్‌ను ఇన్‌స్టాల్ చేయండి

ఈ దశలో, apk ద్వారా Bashని ఇన్‌స్టాల్ చేయండి, ఎందుకంటే మనకు ఎటువంటి సామర్థ్యాలు లేకుంటే కొన్ని సిస్టమ్ ఫంక్షన్‌లు పని చేయవు. మా కంటైనర్ రూట్‌గా పనిచేస్తున్నప్పటికీ, బాష్ ప్యాకేజీ యొక్క ఇన్‌స్టాలేషన్ విఫలమవుతుంది.

> # apk యాడ్ బాష్

దశ 1 3 : సామర్థ్యాల సమాచారాన్ని తనిఖీ చేయండి

capsh మరియు proc ఆదేశాలను ఉపయోగించడం వంటి మా కంటైనర్ సామర్థ్యాలను వీక్షించడానికి అనేక మార్గాలు ఉన్నాయి. ఈ దశలో, మేము proc కమాండ్‌ని ఉపయోగించి కంటైనర్ సామర్థ్యాలను ప్రదర్శిస్తాము మరియు proc సామర్థ్యాలను బిట్‌మ్యాప్‌గా ప్రదర్శిస్తాము. ఇది క్యాప్ష్ ఫలితంగా రీడబుల్ కానప్పటికీ, ఇక్కడ నిర్వచించబడిన ప్రతి బిట్ నిర్దిష్ట సామర్థ్యాన్ని సూచిస్తుంది.

> # cd /proc/1/

ఇక్కడ, ఈ ప్రత్యేక కంటైనర్‌కు ప్రారంభించబడిన సామర్థ్యాలు లేవని మనం చూడవచ్చు; ఈ విలువలన్నీ సున్నా.

దశ 1 4 : కుబెర్నెట్స్ సెక్యూరిటీ కాంటెక్స్ట్‌లో ఒకే సామర్ధ్యాన్ని జోడిస్తోంది

మునుపటి దశల్లో, మేము CAP_MKNOD అనే ఒకే సామర్థ్యాన్ని వదిలివేసాము మరియు అన్ని సామర్థ్యాలను వదిలివేసాము. కానీ, ఈ దశలో, మేము సామర్థ్యాలను తిరిగి జోడించవచ్చు.

yAML ఫైల్‌ను సృష్టించడానికి కింది ఆదేశాన్ని అమలు చేయండి:

> నానో నమూనా

ఆ తర్వాత, sampleadd.yaml ఫైల్‌ను కాన్ఫిగర్ చేయండి.

> kubectl సృష్టించు -ఎఫ్ నమూనా

ఇప్పుడు, Samsung.yaml ఫైల్‌ని ప్రయత్నించండి మరియు మా సెక్యూరిటీ కాంటెక్స్ట్ సెట్టింగ్‌లలో ఒకే సామర్థ్యాన్ని జోడించండి.

దశ 1 5 : YAML ఫైల్‌లో ఒకే సామర్ధ్యాన్ని కాన్ఫిగర్ చేయండి

ఇప్పుడు, spec.container.securityContextలో సామర్థ్యాలను capabilities.add [“MKNOD”]కి జోడించడం ద్వారా ఫైల్‌ను కాన్ఫిగర్ చేద్దాం.

సామర్థ్యం YAML ఫైల్‌లో ప్రదర్శించబడుతుంది.

దశ 16 : సామర్థ్యాల కోసం తనిఖీ చేయండి

ఈ దశలో, కింది ఆదేశాన్ని ఉపయోగించి సామర్థ్యాలను తనిఖీ చేయడానికి addcapsని అమలు చేయండి:

> kubectl కార్యనిర్వాహకుడు - -స్టిడిన్ - -tty addcaps -- వంటి

అదనపు సామర్థ్యం క్రింది ఇచ్చిన అవుట్‌పుట్‌లో చూడవచ్చు:

ప్రస్తుత = cap_mknod+ep

బౌండింగ్ సెట్ = cap_mknod

> # క్యాప్ష్ - -ప్రింట్

ముగింపు

మీరు మొదట క్యాప్ష్ కమాండ్‌తో ప్రదర్శించబడే రన్ టైమ్‌లో కేటాయించిన కంటైనర్ యొక్క డిఫాల్ట్ సామర్థ్యాల గురించి అమలు చేయబడిన ఉదాహరణ నుండి తెలుసుకున్నారు. తర్వాత, మీరు CAP_MKNOD అనే కంటైనర్‌లో ఒకే సామర్థ్యాన్ని వదలడం నేర్చుకున్నారు. అప్పుడు, మీరు //drop: –all కాన్ఫిగరేషన్‌ని ఉపయోగించి కంటైనర్ యొక్క అన్ని సామర్థ్యాలను ఎలా వదలాలో కూడా నేర్చుకున్నారు. అప్పుడు, మేము కంటైనర్ల సామర్థ్యాలను ప్రదర్శించడానికి రెండు మార్గాలను ఉపయోగించాము - capsh మరియు proc ఆదేశాలను ఉపయోగించి.