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

सिस्टम डिज़ाइन साक्षात्कार: आप कैसे सत्यापित करेंगे कि ऑडिट लॉग के साथ कोई छेड़छाड़ नहीं की गई है?

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

प्रश्न

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

प्रॉम्प्ट और दायरा

एक मल्टी-टेनेंट प्लेटफ़ॉर्म पहले से ही ऑडिट इवेंट स्टोर करता है, लेकिन उसकी सुरक्षा टीम को यह निर्धारित करने के लिए एक स्वतंत्र तरीके की आवश्यकता है कि क्या प्राथमिक-डेटाबेस एक्सेस वाले किसी व्यक्ति द्वारा ऐतिहासिक रिकॉर्ड हटाए गए, पुन: व्यवस्थित किए गए, या पुनर्गणित किए गए थे। सत्यापन प्रोटोकॉल को डिज़ाइन करें, जिसमें कैनोनिकलाइज़ेशन, सेगमेंटेड हैश चेन, सिग्नेचर, बाहरी एंकर, सत्यापनकर्ता आउटपुट और असत्यापनीय अंतरालों के प्रबंधन पर ध्यान केंद्रित किया गया हो।

केवल-जोड़े जाने वाले (append-only) रिकॉर्ड और हैश चेन बाद के संपादनों को पता लगाने योग्य बनाते हैं, लेकिन वे यह साबित नहीं करते हैं कि कोई ईवेंट पहली बार लिखे जाने पर सत्य था। यह प्रश्न थ्रेट मॉडलिंग, साक्ष्य और संचालन का परीक्षण करता है; केवल अपरिवर्तनीय (immutable) ऑब्जेक्ट स्टोरेज अपने आप में एक संपूर्ण डिज़ाइन नहीं है।

साक्षात्कारकर्ता क्या मूल्यांकन करता है

अभिनेता (actor), लक्ष्य (target), क्रिया (action), समय, स्रोत और परिणाम के लिए ईवेंट फ़ील्ड; व्यावसायिक लेनदेन के साथ विश्वसनीय युग्मन; सेगमेंटेड और एंकर की गई हैश चेन; टेनेंट अलगाव, इंडेक्स, कुंजी अनुमतियाँ, अवधारण (retention), विलोपन और एक प्रयोग करने योग्य सत्यापनकर्ता का मूल्यांकन करें।

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

  • क्या थ्रेट एक्टर ईवेंट स्टोर, हैश कैटलॉग, साइनिंग कीज़ और एंकर माध्यम को संशोधित कर सकता है?
  • क्या सत्यापन को विलोपन, संशोधन और पुन: क्रमांकन का पता लगाना चाहिए, या ईवेंट स्रोत को भी प्रमाणित करना चाहिए?
  • क्या प्लेटफ़ॉर्म, सुरक्षा टीम, या कोई बाहरी लेखापरीक्षक (auditor) सत्यापनकर्ता को चलाएगा?
  • रिकॉर्ड कितने समय तक बिना एंकर किए रह सकते हैं, और अंतराल (gap) के बाद जांच वर्कफ़्लो को कैसे डिग्रेड होना चाहिए?

30-सेकंड का उत्तर ढांचा

"मैं एक अपरिवर्तनीय कैनोनिकल ईवेंट को परिभाषित करूँगा और व्यावसायिक लेनदेन कमिट होने के बाद इसे एक आउटबॉक्स के माध्यम से प्रकाशित करूँगा। एक पृथक राइटर टेनेंट और समय के अनुसार ईवेंट को समूहीकृत करता है, हैश चेन बनाता है, और समय-समय पर प्रत्येक चेन हेड को एक स्वतंत्र अपेंड-ओनली स्टोर या ट्रांसपेरेंसी लेज़र में एंकर करता है। क्वेरी पुनर्निर्माण योग्य इंडेक्स का उपयोग करती हैं, कभी भी साक्ष्य को संशोधित नहीं करती हैं। एक सत्यापनकर्ता चेन की पुनर्गणना करता है और एंकर की तुलना करता है। अखंडता (integrity) चेन से आती है; ईवेंट की सत्यता अभी भी व्यावसायिक प्राधिकरण और लेनदेन रिकॉर्ड से आती है।"

चरण-दर-चरण विस्तृत उत्तर

चरण 1: थ्रेट मॉडल और साक्ष्य लक्ष्य को परिभाषित करें

मान लें कि कोई एप्लिकेशन या डेटाबेस व्यवस्थापक रिकॉर्ड को हटा सकता है, पुन: व्यवस्थित कर सकता है या फिर से लिख सकता है, और एंकर सेवा अनुपलब्ध हो सकती है। तय करें कि लक्ष्य लापता, बदले हुए या पुन: व्यवस्थित ईवेंट का पता लगाना है, या यह साबित करना है कि किसी विषय ने कार्रवाई की थी। एक ऑडिट लॉग एक्सेस नियंत्रण का स्थान नहीं लेता है।

चरण 2: कैनोनिकल ईवेंट डिज़ाइन करें

ईवेंट आईडी, टेनेंट, अभिनेता और पहचान स्रोत, कार्रवाई, संसाधन, पहले और बाद के डाइजेस्ट, अनुरोध आईडी, ईवेंट समय, सर्वर अनुक्रम, परिणाम और नीति संस्करण शामिल करें। JSON और समान फ़ील्ड को कैनोनिकलाइज़ करें ताकि सीरियलाइज़ेशन क्रम हैश को न बदले। संवेदनशील मानों के लिए केवल डाइजेस्ट या नियंत्रित संदर्भ संग्रहीत करें।

चरण 3: व्यावसायिक और ऑडिट राइट्स को युग्मित करें

व्यावसायिक लेनदेन एक आउटबॉक्स लिखता है; एक विश्वसनीय उपभोक्ता कमिट के बाद ईवेंट उत्सर्जित करता है। व्यावसायिक लेखन के बाद सर्वोत्तम-प्रयास (best-effort) लॉगिंग पर निर्भर न रहें। ईवेंट आईडी द्वारा पुन: प्रयास इडेम्पोटेंट होते हैं; विफलताएं एक पृथक कतार और अलर्ट में जाती हैं। ऑडिट विलंबता सीमित हो सकती है, लेकिन नुकसान मूक (silent) नहीं हो सकता।

चरण 4: सेगमेंटेड हैश चेन बनाएं

पिछला हैश, कैनोनिकल ईवेंट और वर्तमान हैश स्टोर करें, जैसे कि H(previous || event || metadata)। टेनेंट, दिनांक या आकार के अनुसार सेगमेंट को रोल करें और सेगमेंट प्रारंभ, अंत और अनुक्रम रिकॉर्ड करें। क्रॉस-शार्ड क्रम केवल क्लाइंट घड़ियों के बजाय सर्वर अनुक्रम और प्राप्त समय का उपयोग करता है।

चरण 5: बाह्य रूप से एंकर करें और कुंजियों का प्रबंधन करें

एंकर समय, सेगमेंट आईडी और सिग्नेचर के साथ समय-समय पर प्रत्येक सेगमेंट हेड को एक पृथक अपेंड-ओनली माध्यम में लिखें। एक नियंत्रित कुंजी सेवा में साइनिंग कुंजियाँ रखें; रोटेशन और निरसन का स्वयं ऑडिट किया जाता है। एक स्वतंत्र एंकर डेटाबेस राइटर को अदृश्य रूप से पूरी चेन की पुनर्गणना करने और उसे बदलने से रोकता है।

चरण 6: क्वेरी और अनुमतियों को अलग करें

खोज इंडेक्स या रीड रेप्लिकेट में अभिनेता, संसाधन, कार्रवाई और समय इंडेक्स बनाएं। इंडेक्स पुनर्निर्माण योग्य हैं; साक्ष्य अपडेट करने योग्य नहीं है। टेनेंट, भूमिका और उद्देश्य जांच लागू करें, और निर्यात में एक सत्यापन डाइजेस्ट शामिल करें। प्रत्येक रीड, निर्यात या सत्यापन एक नया ऑडिट ईवेंट है।

चरण 7: अवधारण, विलोपन और गोपनीयता को संभालें

विनियमन द्वारा अवधारण, WORM, या ऑब्जेक्ट-लॉक नीतियां सेट करें। व्यक्तिगत डेटा विलोपन के लिए, विलोपन होने का प्रमाण बनाए रखते हुए क्रिप्टोग्राफ़िक इरेज़र, फ़ील्ड रिडक्शन, या अपरिवर्तनीय डाइजेस्ट का उपयोग करें; कभी भी चुपचाप इतिहास को फिर से न लिखें। बैकअप, कैश और एंकर अवधारण को संरेखित करें।

चरण 8: सत्यापित करें, पुनर्प्राप्त करें और मॉनिटर करें

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

गहरे ट्रेड-ऑफ़ और सीमाएं

#### एक चेन बनाम सेगमेंटेड चेन

एक एकल चेन क्वेरी को सरल बनाती है लेकिन पुनर्प्राप्ति और समवर्ती लेखन को जटिल बनाती है। सेगमेंट, सेगमेंट एंकर और ऑर्डरिंग मेटाडेटा की लागत पर टेनेंट अलगाव, समानांतर सत्यापन और अवधारण प्रबंधन को सक्षम करते हैं।

#### हैश चेन बनाम हस्ताक्षरित लॉग

हैश चेन सस्ती हैं और संपादनों का पता लगाती हैं; सिग्नेचर क्रॉस-ऑर्गनाइज़ेशन सत्यापन और कुंजी-प्रबंधन लागत जोड़ते हैं। जब बाहरी प्रमाण की आवश्यकता हो तो उन्हें संयोजित करें।

#### अखंडता बनाम सत्यता

एक चेन रिकॉर्ड और एंकर स्थिरता के बीच संबंधों को साबित करती है, न कि यह कि ईवेंट सामग्री सत्य थी। सत्यता अभी भी पहचान, प्राधिकरण, लेनदेन और स्वतंत्र साक्ष्य पर निर्भर करती है।

विफलता अभ्यास और विकास

#### एक मध्य रिकॉर्ड हटा दिया जाता है

एक सेगमेंट से एक ऑब्जेक्ट हटाएं और सत्यापित करें कि सेगमेंट और एंकर स्थान के साथ एक अनुक्रम अंतराल और चेन टूटने की सूचना दी गई है।

#### एक डेटाबेस व्यवस्थापक हैश की पुनर्गणना करता है

एक सेगमेंट को फिर से लिखें और उसके हेड को बदलें; स्वतंत्र एंकर को नई चेन को अस्वीकार करना चाहिए जबकि पुरानी चेन जांच के लिए पुनर्प्राप्ति योग्य बनी रहनी चाहिए।

#### एंकर सेवा अनुपलब्ध है

इसे डिस्कनेक्ट करें और सत्यापित करें कि सेगमेंट लंबित-एंकर स्थिति में प्रवेश करते हैं, ईवेंट टिकाऊ रहते हैं, और अलर्ट के साथ पुनर्प्राप्ति के बाद एंकर क्रम में जोड़े जाते हैं।

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

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

एक स्वतंत्र सत्यापनकर्ता एक विश्वसनीय एंकर से शुरू होता है, कैनोनिकल हैश की पुनर्गणना करता है, और अनुक्रम निरंतरता, सेगमेंट के बीच लिंक, सिग्नेचर, एंकर समय और अवधारण नीति की जांच करता है। विलोपन एक अनुक्रम अंतराल बनाता है, संशोधन एक हैश बेमेल बनाता है, पुन: क्रमांकन पूर्ववर्ती लिंक को तोड़ता है, और एक व्यवस्थापक जो पूरे सेगमेंट की पुनर्गणना करता है, वह अभी भी बाहरी एंकर से मेल नहीं खा सकता है। परिणाम एक बूलियन के बजाय सत्यापित सीमा, पहली असफल स्थिति, अन-एंकर की गई विंडो और साक्ष्य संदर्भों की रिपोर्ट करता है। यदि किसी अंतराल को सत्यापित नहीं किया जा सकता है, तो मैं प्रभावित निर्यातों को फ़्रीज़ करता हूँ, मूल वस्तुओं को सुरक्षित रखता हूँ, और सुरक्षा को सूचित करता हूँ। चेन रिकॉर्ड अखंडता स्थापित करती है; ईवेंट की सत्यता स्थापित करने के लिए पहचान, प्राधिकरण और व्यावसायिक-लेनदेन साक्ष्य अभी भी आवश्यक हैं।"

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

  • यह परिभाषित किए बिना WORM स्टोरेज में डेटा डालना कि कौन लिख सकता है या अवधारण बदल सकता है।
  • फ़ील्ड क्रम, एन्कोडिंग और टाइमस्टैम्प को कैनोनिकलाइज़ किए बिना कच्चे JSON को हैश करना।
  • एक वैध हैश चेन को इस बात के प्रमाण के रूप में मानना ​​कि प्रत्येक ईवेंट सत्य था।
  • जांच साक्ष्य को नष्ट करते हुए, एक असफल चेन को स्वचालित रूप से पुनर्निर्मित करना और बदलना।

अनुवर्ती प्रश्न और प्रतिक्रियाएं

एक बाहरी एंकर क्या हल करता है?

यह प्राथमिक-स्टोर राइट एक्सेस वाले ऑपरेटर को चुपचाप पूरे सेगमेंट की पुनर्गणना करने और उसके चेन हेड को बदलने से रोकता है। एंकर को अलग अनुमतियों और अवधारण की आवश्यकता होती है।

सत्यापनकर्ता कैसे साबित कर सकता है कि कोई रिकॉर्ड हटा दिया गया था?

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

जब एंकर सेवा अनुपलब्ध हो तो क्या होता है?

क्रमबद्ध स्थानीय सेगमेंट लिखना जारी रखें और उन्हें लंबित चिह्नित करें। पुनर्प्राप्ति के बाद उन्हें क्रम में सबमिट करें। अन-एंकर की गई विंडो सत्यापनकर्ता आउटपुट और अलर्ट में दिखाई देनी चाहिए और इसे पूरी तरह से सत्यापित के रूप में वर्णित नहीं किया जा सकता है।

एक असत्यापनीय अंतराल को कैसे संभाला जाना चाहिए?

प्रभावित निर्यातों को क्वारंटाइन करें, मूल वस्तुओं, हस्ताक्षरों और एंकर साक्ष्यों को सुरक्षित रखें, सुरक्षा को सूचित करें और प्रतिक्रिया रिकॉर्ड करें। पुनर्प्राप्ति को किसी अज्ञात अंतराल को पूर्ण के रूप में पुनः लेबल नहीं करना चाहिए।

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

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

संबंधित इंटरव्यू टूल

सिस्टम डिज़ाइन उत्तर के लिए हल करें का उपयोग करें

पहले आवश्यकताओं को स्पष्ट करें, फिर स्केल, आर्किटेक्चर, कंपोनेंट चयन और ट्रेड-ऑफ की ओर बढ़ें।

टूल देखें