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

बैकएंड इंटरव्यू: इमेज सिग्नेचर और SBOM के लिए आप OCI Referrers का उपयोग कैसे करेंगे?

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

प्रश्न

एक ऐसी बैकएंड सेवा डिज़ाइन करें जो कंटेनर इमेज से जुड़े सिग्नेचर, SBOM, और स्कैन रिपोर्ट ढूंढती हो, और OCI Referrers कम्पैटिबिलिटी व सुरक्षा सीमाओं की व्याख्या करें।

प्रॉम्प्ट और संदर्भ

आपका प्लेटफ़ॉर्म OCI रजिस्ट्री में इमेज स्टोर करता है, जबकि रिलीज़ पाइपलाइन को सिग्नेचर, SBOM, और भेद्यता (vulnerability) रिपोर्ट जोड़नी होती हैं। एक डिस्कवरी और वेरिफिकेशन सेवा डिज़ाइन करें: रिपॉजिटरी और इमेज डाइजेस्ट दिए जाने पर, जुड़े हुए आर्टिफ़ैक्ट्स लौटाएं, artifactType द्वारा फ़िल्टर करें, उन रजिस्ट्रियों का समर्थन करें जिनमें Referrers API नहीं है, और डिप्लॉयमेंट से पहले असत्यापित इमेज को ब्लॉक करें। बैकएंड या प्लेटफ़ॉर्म इंजीनियर को लक्षित करें; किसी एक क्लाउड SDK के बजाय रजिस्ट्री प्रोटोकॉल और सेवा सीमाओं पर ध्यान केंद्रित करें।

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

एक मजबूत उत्तर इमेज डाइजेस्ट को इम्यूटेबल (अपरिवर्तनीय) subject मानता है, न कि टैग को। यह समझता है कि subject एसोसिएशन बनाता है, artifactType उद्देश्य का वर्णन करता है, और Referrers API एक OCI Index लौटाता है। यह लेगेसी फ़ॉलबैक टैग, पेजिनेशन, कैश निरंतरता, और इस तथ्य को भी कवर करता है कि किसी आर्टिफ़ैक्ट को खोजना सिग्नेचर को सत्यापित करने से अलग है। "इमेज टैग पढ़ें" या "एक SBOM विश्वास साबित करता है" एक अधूरा सुरक्षा मॉडल दर्शाता है।

पहले पूछे जाने वाले स्पष्टीकरण

  1. क्या इनपुट एक टैग है या डाइजेस्ट? यदि यह एक टैग है, तो वेरिफिकेशन से पहले इसे रिज़ॉल्व करें और डाइजेस्ट को पिन करें।
  2. क्या 404 लौटाने वाली रजिस्ट्रियों का समर्थन किया जाना चाहिए? यदि हाँ, तो OCI फ़ॉलबैक टैग लागू करें और समवर्ती (concurrent) अपडेट को संभालें।
  3. क्या परिणाम डिप्लॉयमेंट को नियंत्रित (gate) करेगा? यदि हाँ, तो ट्रस्ट बाउंड्री के भीतर सिग्नेचर, पब्लिशर पहचान और डाइजेस्ट को सत्यापित करें।
  4. क्या एसोसिएशन सूची एक पेज से अधिक हो सकती है? यदि हाँ, तो अपारदर्शी (opaque) nextToken को व्याख्यायित किए बिना पास करें।

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

"मैं पहले एक टैग को डाइजेस्ट में रिज़ॉल्व करता हूँ और उस डाइजेस्ट को प्रत्येक एसोसिएशन के लिए subject के रूप में उपयोग करता हूँ। मैं /v2/{name}/referrers/{digest} को कॉल करता हूँ और आर्टिफ़ैक्ट प्रकार के अनुसार सिग्नेचर, SBOM, या रिपोर्ट को फ़िल्टर करता हूँ। एक पुरानी रजिस्ट्री से 404 आने पर डाइजेस्ट-व्युत्पन्न फ़ॉलबैक टैग ट्रिगर होता है। डिस्कवरी के बाद सिग्नेचर और पब्लिशर वेरिफिकेशन होता है, इससे पहले कि कोई पॉलिसी यह तय करे कि डिप्लॉयमेंट की अनुमति है या नहीं। लिस्ट API पेजिनेटेड है और डाइजेस्ट व फ़िल्टर वाली की (key) के साथ शॉर्ट-TTL कैश्ड है।"

चरण-दर-चरण विस्तृत विश्लेषण

OCI 1.1 संदर्भित किए जा रहे मैनिफ़ेस्ट को इंगित करने के लिए एक मैनिफ़ेस्ट subject का उपयोग करता है, जबकि artifactType संलग्न आर्टिफ़ैक्ट का वर्णन करता है। Referrers API एक OCI Index लौटाता है जिसके डिस्क्रिप्टर में डाइजेस्ट, मीडिया प्रकार और आर्टिफ़ैक्ट प्रकार शामिल होते हैं:

text
GET /v2/{name}/referrers/{subject-digest}?artifactType={type}

डाइजेस्ट के बिना वेरिफिकेशन अनुरोधों को अस्वीकार करें। टैग एक म्यूटेबल (परिवर्तनीय) पॉइंटर है और सिग्नेचर वेरिफिकेशन के लिए प्राइमरी की नहीं हो सकता। इसे एक बार रिज़ॉल्व करें, परिणामी डाइजेस्ट को रिकॉर्ड करें, और उस डाइजेस्ट को डिस्कवरी, कैशिंग और एडमिशन के माध्यम से पास करें।

API का समर्थन करने वाली रजिस्ट्री के साथ, खाली Index वाला 200 रिस्पॉन्स का अर्थ है कि कोई संलग्न आर्टिफ़ैक्ट नहीं है। 404 लौटाने वाले पुराने कार्यान्वयन के साथ, क्लाइंट sha256: को sha256- से बदलकर बनाए गए फ़ॉलबैक टैग को पढ़ता है। क्लाइंट उस फ़ॉलबैक टैग को बनाए रखते हैं, इसलिए एक नया रेफ़रर जोड़ना एक रीड-मॉडिफ़ाई-राइट (read-modify-write) रेस कंडीशन है। राइटर्स को सशर्त राइट्स, ऑप्टिमिस्टिक रीट्राइज़, या सिंगल-राइटर कतार की आवश्यकता होती है; रीडर्स को फ़ॉलबैक को दृढ़ता से सुसंगत (strongly consistent) नहीं मानना चाहिए।

खोजे गए सिग्नेचर, SBOM, और स्कैन रिपोर्ट को तीन चरणों में प्रोसेस करें: artifactType और पॉलिसी द्वारा फ़िल्टर करें; संदर्भित मैनिफ़ेस्ट और सामग्री प्राप्त करें; सत्यापित करें कि सिग्नेचर लक्षित डाइजेस्ट को कवर करता है, पब्लिशर विश्वसनीय है, और आर्टिफ़ैक्ट स्थिति की अनुमति है। Microsoft का मार्गदर्शन उपभोग से पहले अखंडता (integrity), प्रामाणिकता (authenticity), और ब्लॉकिंग को अलग करता है, इसलिए "एक सिग्नेचर मिला" का अर्थ "इमेज विश्वसनीय है" के समान नहीं है।

API पेजिनेट कर सकता है। अपारदर्शी nextToken को संरक्षित करें और पास करें, पेज का आकार सीमित करें, और कैश की में रजिस्ट्री, रिपॉजिटरी, subject डाइजेस्ट, आर्टिफ़ैक्ट प्रकार और प्राधिकरण संदर्भ शामिल करें। चूंकि एक डाइजेस्ट अपरिवर्तनीय है, डिस्कवरी परिणामों को संक्षेप में कैश किया जा सकता है; निरस्तीकरण (revocation) और स्थिति परिवर्तनों के लिए अभी भी एक स्पष्ट TTL और पुनः सत्यापन पॉलिसी की आवश्यकता होती है। एडमिशन पाथ पर, कैश डिस्कवरी को तेज़ कर सकता है लेकिन अंतिम सत्यापन को छोड़ना नहीं चाहिए।

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

मैं डाइजेस्ट को एकमात्र subject पहचान बनाऊंगा। क्लाइंट एक टैग को रिज़ॉल्व करता है, OCI Referrers API को कॉल करता है, और सिग्नेचर, SBOM, और स्कैन रिपोर्ट को अलग करने के लिए artifactType का उपयोग करता है। एक सहायक रजिस्ट्री एक OCI Index लौटाती है; किसी पुरानी रजिस्ट्री से 404 आने पर समवर्ती अपडेट के लिए रीट्राइज़ के साथ डाइजेस्ट-व्युत्पन्न फ़ॉलबैक टैग ट्रिगर होता है। केवल डिस्कवरी कभी भी डिप्लॉयमेंट की अनुमति नहीं देती है। एडमिशन सेवा सिग्नेचर के लक्षित डाइजेस्ट, पब्लिशर पहचान और ट्रस्ट रूट को सत्यापित करती है, फिर पॉलिसी लागू करती है। एंडपॉइंट अपारदर्शी पेजिनेशन टोकन पास करता है और डाइजेस्ट व फ़िल्टर द्वारा कैश करता है, जबकि प्रत्येक डिप्लॉयमेंट कैश प्रविष्टि को विश्वास निर्णय मानने के बजाय पुनः सत्यापित करता है।

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

  • गलती → टैग को सिग्नेचर की के रूप में उपयोग करना → यह क्यों विफल होता है: टैग को पुनः लक्षित किया जा सकता है → समाधान: पहले डाइजेस्ट को रिज़ॉल्व और पिन करें।
  • गलती → प्रत्येक 404 को "कोई संलग्न आर्टिफ़ैक्ट नहीं" के रूप में मानना → यह क्यों विफल होता है: एक पुरानी रजिस्ट्री Referrers को लागू नहीं कर सकती है → समाधान: स्पेसिफिकेशन के फ़ॉलबैक टैग को पढ़ें।
  • गलती → सिग्नेचर मिलते ही डिप्लॉयमेंट की अनुमति देना → यह क्यों विफल होता है: पब्लिशर की पहचान, कवरेज, और लक्षित डाइजेस्ट असत्यापित रहते हैं → समाधान: डिस्कवरी को क्रिप्टोग्राफ़िक वेरिफिकेशन से अलग करें।
  • गलती → nextToken को पार्स या निर्मित करना → यह क्यों विफल होता है: टोकन एक अपारदर्शी सर्वर कर्सर है → समाधान: इसे अपरिवर्तित पास करें और पेज आकार व टाइमआउट को सीमित करें।

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

फ़ॉलो-अप 1: दो बिल्ड समवर्ती रूप से फ़ॉलबैक टैग को अपडेट करते हैं। आप क्या करते हैं?

फ़ॉलबैक Index को रीड-मॉडिफ़ाई-राइट ट्रांज़ैक्शन के रूप में मानें। रजिस्ट्री कंडीशनल राइट, ऑप्टिमिस्टिक रीट्राई, या सिंगल-राइटर कतार का उपयोग करें। विरोध होने पर, नवीनतम Index पढ़ें और नए डिस्क्रिप्टर को मर्ज करें; कभी भी किसी अन्य बिल्ड के एसोसिएशन को ओवरराइट न करें।

फ़ॉलो-अप 2: सिग्नेचर मौजूद है, लेकिन SBOM पुराने डाइजेस्ट को संदर्भित करता है। क्या होता है?

वर्तमान subject डाइजेस्ट के विरुद्ध निरंतरता की जाँच करें। सिग्नेचर, SBOM, और रिपोर्ट में से प्रत्येक को समान डाइजेस्ट को संदर्भित करना चाहिए। एक पुराने संदर्भ को गैर-लागू के रूप में चिह्नित करें और एडमिशन को ब्लॉक करें; केवल इमेज टैग का मिलान करना असुरक्षित है।

फ़ॉलो-अप 3: रजिस्ट्री हजारों रेफ़रर्स लौटाती है। आप सेवा की सुरक्षा कैसे करते हैं?

maxResults को सीमित करें, अपारदर्शी टोकन को पास करें, और डाइजेस्ट व आर्टिफ़ैक्ट प्रकार द्वारा कीड (keyed) शॉर्ट-TTL कैश का उपयोग करें। एडमिशन पाथ पर केवल पॉलिसी-आवश्यक प्रकारों को क्वेरी करें। बैकग्राउंड इंडेक्सिंग परिणामों को वॉर्म कर सकती है, लेकिन डिप्लॉयमेंट अभी भी लौटाए गए मैनिफ़ेस्ट डाइजेस्ट और ट्रस्ट स्थिति की पुष्टि करता है।

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

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