प्रतिनिधि इंटरव्यू विषय

बैकएंड इंटरव्यू: कैश्ड Kubernetes इमेजेस के लिए पुल क्रेडेंशियल्स सत्यापित क्यों करें?

बैकएंडकठिन
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

जब एक प्राइवेट इमेज पहले से ही किसी नोड पर मौजूद हो, तो क्या Kubernetes को फिर भी imagePullSecrets सत्यापित करना चाहिए? आप एक पॉलिसी कैसे चुनेंगे और इसे सुरक्षित रूप से कैसे रोल आउट करेंगे?

प्रॉम्प्ट और उपयोग के मामले

जब एक प्राइवेट इमेज पहले से ही किसी नोड पर मौजूद हो, तो क्या Kubernetes को फिर भी imagePullSecrets सत्यापित करना चाहिए? आप एक पॉलिसी कैसे चुनेंगे और इसे सुरक्षित रूप से कैसे रोल आउट करेंगे? यह बैकएंड प्रॉम्प्ट कंटेनर-रनटाइम व्यवहार, क्रेडेंशियल जीवन चक्र और टेनेंट आइसोलेशन का परीक्षण करता है। IfNotPresent, संभावित रूप से साझा किए गए नोड्स, अल्पकालिक क्रेडेंशियल्स का समर्थन करने वाली एक रजिस्ट्री, और सुरक्षा परिवर्तन को पूरे फ्लीट के आउटेज में बदलने से बचने की आवश्यकता को मानकर चलें।

इंटरव्यूअर्स क्या मूल्यांकन करते हैं

  • क्या आप “बाइट्स इस नोड पर हैं” को “यह वर्कलोड उनका उपयोग करने के लिए अधिकृत है” से अलग करते हैं।
  • क्या आप समझाते हैं कि kubelet सफल पुल्स और क्रेडेंशियल्स को कैसे रिकॉर्ड करता है, और प्रीलोडेड इमेजेस को एक अलग व्यवहार की आवश्यकता क्यों होती है।
  • क्या आप जोखिम और लागत के आधार पर NeverVerify, NeverVerifyPreloadedImages, एक अनुमति सूची (allowlist), और AlwaysVerify की तुलना करते हैं।
  • क्या आप रोटेशन, नोड रीबूट, मिसिंग कैश रिकॉर्ड्स, रजिस्ट्री विफलता और रोलबैक को संभालते हैं।

उत्तर देने से पहले स्पष्ट करने योग्य प्रश्न

थ्रेट मॉडल से शुरुआत करें: क्या नोड्स मल्टी-टेनेंट हैं, क्या इमेजेस में संवेदनशील कोड है, और क्या कोई हमलावर Pod बना सकता है? पूछें कि क्या इमेजेस kubelet द्वारा खींची (pull) गई हैं या नोड शुरू होने से पहले प्रीलोड की गई हैं, और क्या क्रेडेंशियल्स Pod Secret, नोड पहचान या सर्विस-अकाउंट टोकन से आते हैं। स्पष्ट करें कि क्या रोटेशन को पुराने एक्सेस को तुरंत निरस्त करना चाहिए, क्या ऑफलाइन सत्यापन स्वीकार्य है, और रजिस्ट्री कितना रिपुल (repull) ट्रैफ़िक संभाल सकती है। अंत में, तय करें कि लक्ष्य बैकवर्ड कम्पैटिबिलिटी है, मजबूत आइसोलेशन है, या संवेदनशील नेमस्पेस के लिए सख्त पॉलिसी है।

30-सेकंड उत्तर का फ्रेमवर्क

“मैं इमेज-कैश हिट्स को ऑथराइजेशन से अलग रखूँगा। एक मल्टी-टेनेंट नोड या संवेदनशील इमेज को सिर्फ इसलिए imagePullSecrets को बायपास नहीं करना चाहिए क्योंकि बाइट्स मौजूद हैं। मैं पुल रिकॉर्ड्स सक्षम करूँगा, प्रीलोडेड-इमेज अपवाद के साथ शुरुआत करूँगा, फिर नोड पूल और नेमस्पेस के आधार पर AlwaysVerify की ओर रोल आउट करूँगा। गार्डरेल्स में स्टार्टअप सफलता, रिपुल दर, रजिस्ट्री लेटेंसी, रोटेशन प्रभावशीलता और क्रॉस-टेनेंट अस्वीकृति शामिल होगी। रोलआउट के लिए कैश-रिकॉर्ड माइग्रेशन, रजिस्ट्री-आउटेज व्यवहार और एक फीचर-गेट रोलबैक की आवश्यकता होती है।”

चरण-दर-चरण गहन उत्तर

  1. निर्णयों को अलग करें: कैश यह उत्तर देता है कि बाइट्स मौजूद हैं या नहीं; क्रेडेंशियल सत्यापन यह उत्तर देता है कि क्या यह अनुरोध उनका उपयोग कर सकता है। IfNotPresent कोई ऑथराइजेशन पॉलिसी नहीं है।
  2. सफल संबंधों को रिकॉर्ड करें: Kubelet उन क्रेडेंशियल्स को रिकॉर्ड करता है जिन्होंने किसी इमेज को सफलतापूर्वक पुल किया था। उन्हीं क्रेडेंशियल्स को स्थानीय रूप से जाँचा जा सकता है; अज्ञात या रोटेट किए गए क्रेडेंशियल्स के लिए रजिस्ट्री पुल और ऑथराइजेशन की आवश्यकता होती है।
  3. प्रीलोडेड इमेजेस को संभालें: Kubelet के बाहर लोड की गई इमेजेस का कोई पुल रिकॉर्ड नहीं होता है। NeverVerifyPreloadedImages कम्पैटिबिलिटी बनाए रखता है, NeverVerifyAllowListedImages अपवाद को संकुचित करता है, और AlwaysVerify सभी इमेजेस की जाँच करता है।
  4. रोटेशन डिज़ाइन करें: पिछला सफल क्रेडेंशियल रिकॉर्ड यह साबित नहीं करता कि नया क्रेडेंशियल काम करता है। रोटेशन के कारण रिपुल या स्पष्ट अमान्यीकरण होना चाहिए, साथ ही रजिस्ट्री थ्रॉटलिंग और स्टार्टअप लेटेंसी की निगरानी की जानी चाहिए।
  5. अपग्रेड जोखिम प्रबंधित करें: पहले इनेबलमेंट पर, मौजूदा इमेजेस को प्रीलोडेड माना जा सकता है। उन कैश प्रविष्टियों को हटा दें जिन पर अब भरोसा नहीं किया जाना चाहिए और kubelet रीस्टार्ट तथा कैश-फ़ाइल माइग्रेशन का ध्यान रखें।
  6. चरणबद्ध रूप से लागू करें और रोलबैक करें: नोड पूल, वर्कलोड लेबल या कम जोखिम वाले नेमस्पेस द्वारा सक्षम करें; अस्वीकृति और रजिस्ट्री लोड पर नज़र रखें। NeverVerify या फीचर गेट को तेज़ रोलबैक पथ के रूप में रखें।

उच्च-गुणवत्ता वाला नमूना उत्तर

मैं सत्यापित करूँगा, लेकिन पॉलिसी थ्रेट मॉडल पर निर्भर करती है। कैश हिट केवल यह साबित करता है कि नोड में इमेज बाइट्स हैं; यह यह साबित नहीं करता कि वर्तमान Pod किसी प्राइवेट इमेज का उपयोग कर सकता है। मल्टी-टेनेंट नोड पर, सत्यापन को बायपास करने से विभिन्न क्रेडेंशियल्स वाले वर्कलोड्स को कैश्ड इमेज का पुन: उपयोग करने की अनुमति मिल जाती है। Kubernetes का डिज़ाइन kubelet को एक इमेज और उन क्रेडेंशियल्स के बीच संबंध रिकॉर्ड करने देता है जिन्होंने इसे सफलतापूर्वक पुल किया था: उन्हीं क्रेडेंशियल्स को स्थानीय रूप से जाँचा जा सकता है, जबकि अज्ञात या रोटेट किए गए क्रेडेंशियल्स के लिए रजिस्ट्री एक्सेस की आवश्यकता होती है। प्रीलोडेड इमेजेस में वे रिकॉर्ड्स नहीं होते हैं, इसलिए मैं कम्पैटिबिलिटी के लिए NeverVerifyPreloadedImages से शुरुआत करूँगा और संवेदनशील नोड पूल्स को AlwaysVerify की ओर ले जाऊँगा; यदि अपवाद आवश्यक हैं, तो कंट्रोल को विश्व स्तर पर अक्षम करने के बजाय एक स्पष्ट प्रीलोडेड-इमेज अनुमति सूची का उपयोग करें। इसे सक्षम करने से पहले, उन कैशे को साफ़ करें जिन पर अब भरोसा नहीं किया जाना चाहिए और kubelet रीस्टार्ट, रिकॉर्ड माइग्रेशन, रजिस्ट्री थ्रॉटलिंग और क्रेडेंशियल रोटेशन का रिहर्सल करें। कैनरी के दौरान, Pod स्टार्टअप सफलता, रिपुल दर, रजिस्ट्री P95 लेटेंसी, ऑथराइजेशन अस्वीकृति और क्रॉस-टेनेंट पुन: उपयोग के प्रयासों की तुलना करें। यदि रजिस्ट्री आउटेज के कारण व्यापक कोल्ड-स्टार्ट विफलताएं होती हैं, तो अलर्ट और ऑडिट रिकॉर्ड बनाए रखते हुए गेट या पॉलिसी को रोलबैक करें। यह सुरक्षा सीमाओं, कम्पैटिबिलिटी और क्षमता जोखिम को एक ही रिलीज़ निर्णय में रखता है।

सामान्य गलतियाँ

  • इमेज डाइजेस्ट को इस बात के प्रमाण के रूप में मानना कि प्रत्येक नेमस्पेस को इमेज का उपयोग करने के लिए अधिकृत किया गया है।
  • प्रीलोडेड इमेजेस, नोड रीबूट या रजिस्ट्री विफलता पर चर्चा किए बिना “AlwaysVerify सक्षम करें” कहना।
  • पुराने सफलता रिकॉर्ड और रिपुल व्यवहार की अनदेखी करते हुए क्रेडेंशियल रोटेशन को केवल Secret अपडेट के रूप में मानना।
  • नोड-पूल कैनरी, रजिस्ट्री क्षमता और रोलबैक स्विच के बिना पूरे फ्लीट में पॉलिसी बदलना।
  • प्रीलोड स्रोत और अनुमति सूची को सत्यापित किए बिना NeverVerifyPreloadedImages को सुरक्षा गारंटी कहना।

फॉलो-अप प्रश्न और उत्तर

दूसरे रजिस्ट्री अनुरोध के बिना उसी क्रेडेंशियल की जाँच क्यों की जा सकती है?

एक सफल पुल यह साबित करता है कि रजिस्ट्री ने इमेज के लिए उस क्रेडेंशियल को स्वीकार कर लिया है, इसलिए kubelet ज्ञात संबंध को स्थानीय रूप से मान्य कर सकता है। बदले हुए क्रेडेंशियल, अनुपलब्ध रिकॉर्ड या सख्त पॉलिसी के लिए एक नए पुल या रजिस्ट्री जाँच की आवश्यकता होती है।

यदि नोड रीबूट के बाद कैश रिकॉर्ड गायब हो जाए तो क्या होगा?

रिकॉर्ड्स को kubelet डायरेक्टरी में बनाए रखें (persist करें) और उन्हें वर्शन के अनुसार माइग्रेट करें। यदि कोई रिकॉर्ड अपठनीय है, तो कैश्ड इमेज को चुपचाप किसी के लिए भी उपलब्ध कराने के बजाय सख्त रास्ता चुनें और फिर से पुल (repull) करें।

क्या रजिस्ट्री अस्थायी रूप से अनुपलब्ध होने पर कैश्ड इमेज की अनुमति दी जानी चाहिए?

कम जोखिम वाले वातावरण में संकीर्ण रूप से परिभाषित, अवलोकन योग्य और समय-सीमित निम्नीकरण (degradation) हो सकता है। संवेदनशील वर्कलोड्स को ऑथराइजेशन को बायपास नहीं करना चाहिए। रिकॉर्ड करें कि किन अनुरोधों को ऑफ़लाइन अनुमति दी गई थी ताकि कोई घटना स्थायी अत्यधिक-अनुमति (over-permission) न बन जाए।

आप कैसे साबित करेंगे कि रोटेशन वास्तव में काम करता है?

उसी प्राइवेट इमेज को पुराने Secret, नए Secret, बिना Secret और विभिन्न नेमस्पेस की पहचानों के साथ शुरू करें। Kubelet इवेंट्स, रजिस्ट्री एक्सेस, कैश रिकॉर्ड्स और Pod परिणामों की जाँच करें। सत्यापित करें कि पुराने क्रेडेंशियल्स विफल होते हैं, नए क्रेडेंशियल्स सफल होते हैं, और थ्रॉटलिंग नियोजित रोलबैक व्यवहार को ट्रिगर करती है।

सार्वजनिक स्रोत

संबंधित प्रश्न