কুবারনেটস সিকিউরিটি কনটেক্সটে লিনাক্স ক্ষমতা যোগ করুন বা সরান

Kubaranetasa Siki Uriti Kanateksate Linaksa Ksamata Yoga Karuna Ba Sarana



একটি Kubernetes পাত্রে প্রতিটি Pod এবং কন্টেইনারে যে সুবিধাগুলি প্রদান করা হয় তার ডিগ্রী পরিচালনা করা কঠিন হতে পারে। আমরা কন্টেইনারের নিরাপত্তা বাড়ানোর জন্য পড এবং কন্টেইনার থেকে লিনাক্স ক্ষমতা যোগ বা মুছে ফেলার জন্য Kubernetes SecurityContext ক্ষমতা ব্যবহার করতে পারি। এই নিবন্ধটি ক্ষমতা যোগ এবং মুছে ফেলার একটি সহজ উদাহরণ বাস্তবায়ন করতে securityContext ব্যবহার করার উপর ফোকাস করে। সমস্ত ক্ষমতা মুছে ফেলার জন্য একটি yaml ফাইলের কনফিগারেশন এবং একটি পাত্রে শুধুমাত্র একটি ক্ষমতা যোগ করার নমুনা উদাহরণে প্রদান করা হয়েছে। এই নিবন্ধে, proc এবং capsh কমান্ডগুলি কন্টেইনারের ক্ষমতা প্রদর্শন করতে ব্যবহৃত হয়।

ধাপ 1: Minikube সার্ভার শুরু করুন







প্রথমে, minikube সার্ভার শুরু করুন যাতে আপনি আপনার অ্যাপ্লিকেশন চালাতে পারেন এবং kubectl নির্দেশাবলী ব্যবহার করতে পারেন। আপনি Kubernetes পরিবেশে minikube সার্ভার ব্যবহার করে আপনার নোড, পড এবং এমনকি ক্লাস্টার স্থাপন করতে পারেন। সক্রিয় মোডে minikube বজায় রাখতে নিম্নলিখিত কমান্ড ব্যবহার করা আবশ্যক:



> মিনিকুব শুরু করুন



এটি করার মাধ্যমে, মিনিকুব সার্ভারটি চালু হয় এবং কুবারনেটস পরিবেশ ব্যবহারের জন্য প্রস্তুত।





ধাপ ২: একটি Kubernetes YAML ফাইল তৈরি করুন



দ্বিতীয় ধাপে, একটি পড স্থাপন করতে একটি YAML ফাইল তৈরি করুন।

ন্যানো ব্যবহার করে একটি yaml ফাইল তৈরি করতে পদক্ষেপগুলি অনুসরণ করুন:

  • ডিরেক্টরির পাথে যান যেখানে আপনি ফাইল তৈরি করতে চান বা একটি বিদ্যমান ফাইল পরিবর্তন করতে চান।
  • ফাইলের নাম অনুসরণ করে ন্যানো কমান্ড টাইপ করুন।

নিম্নলিখিত ন্যানো কমান্ড চালান। এটি 'nano podsample.yaml' নামে একটি YAML কনফিগারেশন ফাইল তৈরি করে।

> ন্যানো podsample.yaml

আসুন পরবর্তী ধাপে এগিয়ে যাই যা আপনাকে একটি podsample.yaml ফাইল কনফিগার করতে জানতে সাহায্য করবে।

ধাপ 3: YAML ফাইল কনফিগার করুন

আমরা আগের ধাপে ক্যাপশ টুল যোগ করি যাতে আমরা আমাদের কন্টেইনারের ক্ষমতা দেখতে পারি।

মনে রাখবেন যে এই কন্টেইনারের নিরাপত্তা কনটেক্সট বিভাগের জন্য এই প্যারামিটারগুলির কোনটিই কনফিগার করা নেই। এইভাবে, তারা সব সিস্টেম ডিফল্ট সেট করা হয়. এই বিষয়টি বিবেচনা করুন যে এই ধারকটি ডিফল্ট ব্যবহারকারী হিসাবে কাজ করে যা Dockerfile-এ সরবরাহ করা হয় যেখান থেকে এটি নির্মাণ করা হয় যদি Kubernetes-এ এটির জন্য কোন ব্যবহারকারীকে সংজ্ঞায়িত করা না হয়। অনেক কন্টেইনারের জন্য, এই ডিফল্ট ব্যবহারকারী হল রুট।

ধাপ 4: একটি পড তৈরি করুন

এই ধাপে, আসুন নিম্নলিখিত সংযুক্ত কমান্ড দিয়ে podsample.yaml তৈরি করি:

> kubectl প্রয়োগ করুন -চ podsample.yaml

ধাপ 5: ক্ষমতা পরীক্ষা করুন

পূর্ববর্তী ধাপে, একটি পড তৈরি এবং চলমান হয়।

এখন যেহেতু আমাদের এটির ভিতরে একটি শেল রয়েছে, আমরা নিম্নলিখিত কমান্ডটি ব্যবহার করে এর ক্ষমতা যাচাই করতে capsh ব্যবহার করতে পারি:

> $ kubectl exec - -stdin - -tty ক্যাপ - - ছাই

ক্যাপশ কমান্ড ব্যবহার করে, ধারকটির ডিফল্ট ক্ষমতাগুলি দেখা সম্ভব যা নিম্নরূপ তালিকাভুক্ত করা হয়েছে:

আমরা প্রদত্ত আউটপুট থেকে লক্ষ্য করতে পারি যে কন্টেইনারটিতে অনেকগুলি ডিফল্ট ক্ষমতা রয়েছে যা রানটাইমে কন্টেইনারকে দেওয়া হয়।

ধাপ 6: ঝরা একক সক্ষমতা Y Kubernetes Security Context-এ

এই ধাপে, আমরা ধারকটির একক ক্ষমতা ফেলে দিই।

আসুন নিম্নলিখিত কমান্ডটি ব্যবহার করে yaml ফাইলটি কনফিগার করি:

> ন্যানো dropod.yaml

এর পরে, নিম্নলিখিত কমান্ডটি ব্যবহার করে droppod.yaml ফাইলটি কনফিগার করতে যান:

> kubectl প্রয়োগ করুন -চ droppod.yaml

ধাপ 7 : YAML ফাইলে একক ক্ষমতা যোগ করতে কনফিগার করুন

এই ধাপে, ধাপ 6 এ তৈরি করা yaml ফাইল (dropped.yaml) খুলুন। তারপর, কন্টেইনারটি এমনভাবে সেট করুন যাতে এটি আর CAP_MKNOD সক্ষমতায় অ্যাক্সেস না পায়, যা নতুন ফাইল সিস্টেম নোড তৈরি করার ক্ষমতা সরিয়ে দেয়।

কনফিগার করা ফাইলটি দেখানো হয়েছে:

ধাপ 8 : ক্ষমতা পরীক্ষা করুন

yaml ফাইলটি CAP_MKNOD ক্ষমতা ড্রপ করার জন্য কনফিগার করা হয়েছে।

এই ধাপে, নিম্নোক্ত কমান্ড ব্যবহার করে ধারকটির ক্ষমতা পরীক্ষা করতে dropcaps.yaml ফাইলটি চালান এবং চালান:

> $ kubectl exec - -stdin - -tty ড্রপক্যাপস - - ছাই

ড্রপক্যাপস ফাইলটি চালিয়ে ক্ষমতাগুলি পরীক্ষা করা যেতে পারে:

> # ক্যাপশ - -প্রিন্ট

আমরা লক্ষ্য করতে পারি যে এই পডটি প্রথম পডের তুলনায় CAP_MKNOD ক্ষমতা হ্রাস করেছে।

ধাপ 9 : Kubernetes Security Context-এ সমস্ত ক্ষমতা বাদ দিন

যেহেতু Kubernetes একটি একক ক্ষমতা ড্রপ করতে পারে, তাই এটি securityContext এর মাধ্যমে সমস্ত ক্ষমতা বাদ দিতে পারে। এই ধাপে, প্রদত্ত কমান্ডটি বোঝানোর মাধ্যমে ধারকটির সমস্ত ক্ষমতা বাদ দিন:

> ন্যানো samplenocap.yaml

এর পরে, নিম্নলিখিত কমান্ডটি ব্যবহার করে samplenocap.yaml ফাইলটি কনফিগার করুন:

> kubectl তৈরি করুন -চ samplenocap.yaml

এখন, আমাদের সিকিউরিটি কনটেক্সট সেটিংসের সমস্ত ক্যাপাসিটি ড্রপ করার জন্য পরবর্তী ধাপে যাওয়া যাক।

ধাপ 10: YAML ফাইলের সমস্ত ক্ষমতা কনফিগার করুন

এই ধাপে, ধাপ 9 এ তৈরি করা yaml ফাইলটি খুলুন। তারপর, container.securityContext এর ভিতরে কনফিগার করুন এবং কন্টেইনারের সমস্ত ক্ষমতা বাদ দিন।

কনফিগার করা ফাইলটি দেখানো হয়েছে:

ধাপ এগারো : ক্ষমতা পরীক্ষা করুন

ক্ষমতা সম্পর্কে তথ্য দেখতে capsh-এ nocaps চালান। এই ধাপে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন এবং ধারকটির সমস্ত ক্ষমতা প্রদর্শন করুন:

> kubectl exec - -stdin - -tty কোন ক্যাপ - - ছাই

ক্যাপশে স্যাম্পলনোক্যাপস ইয়াএমএল ফাইলটি চালানোর মাধ্যমে নিম্নলিখিত চিত্রে ক্ষমতাগুলি পরীক্ষা করা যেতে পারে:

> # ক্যাপশ - -প্রিন্ট

পূর্ববর্তী আউটপুট দেখায় যে বর্তমান ='' এবং বাউন্ডিং সেট ='' এখন খালি। ক্ষমতা সফলভাবে বাদ দেওয়া হয়.

ধাপ 1 2 : ব্যাশ ইনস্টল করুন

এই ধাপে, apk-এর মাধ্যমে Bash ইনস্টল করুন যেহেতু কিছু সিস্টেম ফাংশন কাজ করবে না যদি আমাদের কোনো ক্ষমতা না থাকে। যদিও আমাদের কন্টেইনার রুট হিসাবে কাজ করছে, ব্যাশ প্যাকেজ ইনস্টলেশন ব্যর্থ হয়েছে।

> # apk অ্যাড ব্যাশ

ধাপ 1 3 : ক্ষমতা তথ্য পরীক্ষা করুন

আমাদের কন্টেইনারের ক্ষমতা দেখার বিভিন্ন উপায় আছে যেমন capsh এবং proc কমান্ড ব্যবহার করা। এই ধাপে, আমরা proc কমান্ড ব্যবহার করে কন্টেইনার ক্যাপাসিটি প্রদর্শন করি এবং proc বিটম্যাপ হিসেবে ক্যাপাসিটি প্রদর্শন করি। যদিও এটি ক্যাপশের ফলাফলের মতো পাঠযোগ্য নয়, এখানে সংজ্ঞায়িত প্রতিটি বিট একটি নির্দিষ্ট ক্ষমতার জন্য দাঁড়িয়েছে।

> # cd/proc/1/

এখানে, আমরা দেখতে পাচ্ছি যে এই নির্দিষ্ট ধারকটির কোন সক্ষম ক্ষমতা নেই; এই মান সব শূন্য.

ধাপ 1 4 : কুবারনেটস সিকিউরিটি কনটেক্সটে একটি একক ক্ষমতা যুক্ত করা হচ্ছে

পূর্ববর্তী ধাপে, আমরা একটি একক ক্ষমতা বাদ দিয়েছি যা হল CAP_MKNOD এবং সমস্ত ক্ষমতা বাদ দিয়েছি। কিন্তু, এই ধাপে, আমরা আবার ক্ষমতা যোগ করতে পারি।

yAML ফাইল তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

> ন্যানো sampleadd.yaml

এর পরে, sampleadd.yaml ফাইলটি কনফিগার করুন।

> kubectl তৈরি করুন -চ sampleadd.yaml

এখন, আসুন sampleadd.yaml ফাইলটি চেষ্টা করি এবং আমাদের securityContext সেটিংসে একটি একক ক্ষমতা যোগ করি।

ধাপ 1 5 : YAML ফাইলে একক ক্ষমতা কনফিগার করুন

এখন, spec.container.securityContext-এ capabilities.add [“MKNOD”]-এ ক্যাপাবিলিটি যোগ করে ফাইলটি কনফিগার করি।

ক্ষমতা YAML ফাইলে প্রদর্শিত হয়।

ধাপ 16 : ক্ষমতা পরীক্ষা করুন

এই ধাপে, নিম্নলিখিত কমান্ড ব্যবহার করে ক্ষমতা পরীক্ষা করতে addcaps চালান:

> kubectl exec - -stdin - -tty addcaps - - হিসাবে

অতিরিক্ত ক্ষমতা নিম্নলিখিত প্রদত্ত আউটপুটে দেখা যেতে পারে:

বর্তমান = cap_mknod+ep

বাউন্ডিং সেট = cap_mknod

> # ক্যাপশ - -প্রিন্ট

উপসংহার

আপনি প্রথমে বাস্তবায়িত উদাহরণ থেকে ধারকটির ডিফল্ট ক্ষমতা সম্পর্কে শিখেছেন যা রান টাইমে নির্ধারিত হয় যা capsh কমান্ডের সাথে প্রদর্শিত হয়। এর পরে, আপনি CAP_MKNOD নামের একটি পাত্রে একটি একক ক্ষমতা ফেলে দিতে শিখেছেন। তারপর, আপনি কীভাবে //drop: –all কনফিগারেশন ব্যবহার করে কন্টেইনারের সমস্ত ক্ষমতা ড্রপ করবেন তাও শিখেছেন। তারপর, আমরা কন্টেইনারগুলির ক্ষমতা প্রদর্শনের জন্য দুটি উপায় ব্যবহার করেছি - ক্যাপশ এবং প্রোক কমান্ড ব্যবহার করে।