समस्या और दायरा
एक डेटा लेक एक ही Parquet फ़ाइलों में ईमेल पते, भुगतान पहचानकर्ता, क्षेत्र और सार्वजनिक समुच्चय (aggregates) संग्रहीत करता है। ऑब्जेक्ट स्टोरेज, मेटाडेटा सेवाएँ और कंप्यूट क्लस्टर विभिन्न टीमों के अंतर्गत आते हैं। अधिकृत जॉब्स को केवल आवश्यक कॉलम पढ़ने चाहिए; अनधिकृत पाठकों को संवेदनशील मान या पहचान उजागर करने वाला मेटाडेटा नहीं दिखना चाहिए। कॉलम-स्तरीय एन्क्रिप्शन और की-मैनेजमेंट डिज़ाइन करें, फिर फ़ुटर, इंडेक्स, प्रेडिकेट पुशडाउन, रोटेशन, लेगेसी रीडर और रिकवरी पर चर्चा करें।
Apache Parquet मॉड्यूलर एन्क्रिप्शन (Modular Encryption) अलग से सीरियलाइज़ किए गए मॉड्यूल जैसे पेज, पेज हेडर, कॉलम इंडेक्स, ऑफ़सेट इंडेक्स, ब्लूम फिल्टर और फ़ुटर को सुरक्षित करता है, जबकि सामान्य कॉलम प्रोजेक्शन, प्रेडिकेट पुशडाउन, एन्कोडिंग और कम्प्रेशन विकल्पों को बनाए रखता है। एक मजबूत उत्तर एन्क्रिप्टेड डेटा, संरक्षित मेटाडेटा, की ऑथराइजेशन और इस प्रमाण को अलग करता है कि पढ़ना और लिखना सही है।
इंटरव्यूअर क्या जांच रहा है
- क्या आप कॉलम कीज़, फ़ुटर की, डेटा एन्क्रिप्शन कीज़ (DEKs) और मास्टर कीज़ के बीच संबंध समझा सकते हैं?
- क्या आप जानते हैं कि केवल संवेदनशील कॉलम को एन्क्रिप्ट करने से भी स्कीमा, सांख्यिकी या पहचान के सुराग उजागर हो सकते हैं?
- क्या आप सुरक्षा, कम्पैटिबिलिटी और माइग्रेशन लागत के संदर्भ में एन्क्रिप्टेड और प्लेनटेक्स्ट फ़ुटर की तुलना कर सकते हैं?
- क्या आप AES-GCM इंटेग्रिटी और AAD बाइंडिंग के साथ-साथ CTR पेजों की सीमाओं को समझते हैं?
- क्या आप KMS, ऑथराइजेशन, रोटेशन, बैकअप, क्वेरी विफलता और ऑडिट को एक निष्पादन योग्य डिज़ाइन में जोड़ सकते हैं?
एक कमजोर उत्तर कहता है "फ़ाइल के लिए AES-256 का उपयोग करें।" एक मजबूत उत्तर यह साबित करता है कि कौन से Parquet मॉड्यूल सुरक्षित हैं, कौन सा जॉब कौन सी कुंजी प्राप्त कर सकता है, और लेगेसी रीडर्स तथा प्रेडिकेट पुशडाउन में क्या समझौता किया जाता है।
पहले पूछे जाने वाले स्पष्टीकरण प्रश्न
- क्या स्कीमा, पंक्ति संख्या और सांख्यिकी को छिपाना आवश्यक है, या केवल कॉलम मानों को? यह तय करता है कि फ़ुटर को एन्क्रिप्ट किया जाना चाहिए या नहीं।
- किन जॉब्स, टेनेंट्स और कॉलमों को एक साथ पढ़ा जा सकता है? यह कॉलम-की डोमेन और KMS पॉलिसी सीमाओं को परिभाषित करता है।
- क्या क्वेरी इंजन और उसकी PyArrow/Parquet लाइब्रेरी मॉड्यूलर एन्क्रिप्शन का समर्थन करते हैं? यदि नहीं, तो रीड/राइट पाथ सीधे स्विच नहीं हो सकता।
- क्या लेगेसी रीडर्स को अनएन्क्रिप्टेड कॉलम पढ़ना जारी रखना चाहिए? यह निर्धारित करता है कि प्लेनटेक्स्ट-फ़ुटर ट्रांज़िशन स्वीकार्य है या नहीं।
- क्या फ़ाइलें अपरिवर्तनीय (immutable) पार्टीशन हैं या उन्हें ओवरराइट, कॉपी और रीप्ले किया जाता है? यह AAD पहचान, रोटेशन और रीप्ले डिटेक्शन को निर्धारित करता है।
30-सेकंड का उत्तर
"मैं पहले यह तय करूँगा कि फ़ुटर और सांख्यिकी संवेदनशील हैं या नहीं, फिर कॉलम के आधार पर एक्सेस डोमेन परिभाषित करूँगा। प्रत्येक फ़ाइल या कॉलम को एक रैंडम DEK मिलता है जिसे KMS-प्रबंधित MEK या KEK द्वारा रैप किया जाता है; कॉलम पेज, हेडर, इंडेक्स और आवश्यक कॉलम मेटाडेटा कॉलम कीज़ का उपयोग करते हैं, जबकि फ़ुटर को अलग से सुरक्षित किया जाता है। मैं AES-GCM को प्राथमिकता दूँगा क्योंकि यह गोपनीयता और अखंडता (integrity) प्रदान करता है, और प्रतिस्थापन को रोकने के लिए AAD के माध्यम से टेबल, पार्टीशन, फ़ाइल वर्ज़न और मॉड्यूल पहचान को बाइंड करता है। यदि लेगेसी रीडर्स को सार्वजनिक कॉलम पढ़ने की आवश्यकता है, तो प्लेनटेक्स्ट फ़ुटर एक समयबद्ध ट्रांज़िशन हो सकता है, लेकिन यह कुछ मेटाडेटा को उजागर करता है; सख्त स्कीमा गोपनीयता वाले संवेदनशील डेटासेट को एन्क्रिप्टेड फ़ुटर का उपयोग करना चाहिए। रोलआउट से पहले मैं KMS ऑथराइजेशन, रोटेशन, प्रेडिकेट पुशडाउन, एरर रिकवरी, लेगेसी व्यवहार और छेड़छाड़ के मामलों को सत्यापित करूँगा।"
चरण-दर-चरण तर्क
1. उन Parquet मॉड्यूल की सूची बनाएं जिन्हें सुरक्षा की आवश्यकता है
Parquet केवल डेटा क्षेत्र वाला ब्लैक बॉक्स नहीं है। पेज और पेज हेडर मान ले जाते हैं; कॉलम इंडेक्स, ऑफ़सेट इंडेक्स और ब्लूम फिल्टर रेंज या वितरण को प्रकट कर सकते हैं; फ़ुटर में स्कीमा, पंक्ति संख्या, सॉर्ट जानकारी, सांख्यिकी और की-वैल्यू मेटाडेटा होता है। केवल कॉलम पेजों को एन्क्रिप्ट करने से भी ग्राहक श्रेणियां या समय सीमाएं उजागर हो सकती हैं।
file
├── row-group
│ └── column chunk
│ ├── dictionary/data pages
│ ├── page headers
│ ├── column index
│ ├── offset index
│ └── bloom-filter modules
└── footer / FileMetaDataसुरक्षा सेट चुनने के लिए थ्रेट मॉडल का उपयोग करें। कम-संवेदनशीलता वाले कॉलम लेगेसी टूल्स के लिए पठनीय रह सकते हैं; संवेदनशील कॉलम और उनकी सांख्यिकी, स्कीमा और फ़ाइल पहचान को मजबूत फ़ुटर और कॉलम-मेटाडेटा सुरक्षा की आवश्यकता होती है। यह निर्णय केवल अलग से AES की-लेंथ चुनने से अधिक महत्वपूर्ण है।
2. एन्वेलप एन्क्रिप्शन और एक्सेस सीमाएं डिज़ाइन करें
प्रत्येक फ़ाइल या कॉलम को एक रैंडम डेटा एन्क्रिप्शन की (DEK) दें, जिसे मास्टर एन्क्रिप्शन की (MEK) या की-एन्क्रिप्शन की (KEK) द्वारा रैप किया गया हो। MEK को संगठन के KMS में रखें। एक जॉब को अल्पकालिक पहचान (short-lived identity) के माध्यम से अनरैप अनुमति प्राप्त होती है; ऑब्जेक्ट स्टोरेज में सिफरटेक्स्ट और आवश्यक की-मेटाडेटा होता है, प्लेनटेक्स्ट मास्टर की नहीं।
authorized job -> KMS policy -> unwrap DEK -> decrypt footer/columns
object storage -> ciphertext + key metadata onlyकॉलम कीज़ को टेनेंट, डेटा डोमेन या संवेदनशीलता के आधार पर अलग करें ताकि एक जॉब को पूरी टेबल की अनुमति न मिले। की-मेटाडेटा एक KMS की-आईडी, रैप की गई सामग्री का पहचानकर्ता या बाहरी संदर्भ हो सकता है; यह स्वयं गुप्त नहीं है लेकिन ऑडिट और रोटेशन को प्रभावित करता है। मास्टर-की रोटेशन के दौरान, पहले DEKs को दोबारा रैप करें। केवल इसलिए सभी अपरिवर्तनीय डेटा पेजों को फिर से न लिखें क्योंकि MEK बदल गया है।
3. एन्क्रिप्टेड और प्लेनटेक्स्ट फ़ुटर के बीच चयन करें
एक एन्क्रिप्टेड फ़ुटर स्कीमा, पंक्ति संख्या, कॉलम नाम, सॉर्ट जानकारी और अधिक कॉलम मेटाडेटा को छुपाता है। यह एक मजबूत सीमा प्रदान करता है, लेकिन संवेदनशील फ़ाइलों के प्रत्येक रीडर को मॉड्यूलर एन्क्रिप्शन का समर्थन करना चाहिए। Parquet एन्क्रिप्टेड-फ़ुटर फ़ाइलों के लिए PARE मैजिक बाइट्स का उपयोग करता है, इसलिए PAR1 की अपेक्षा करने वाला लेगेसी रीडर प्रारूप को तुरंत अस्वीकार कर सकता है।
एक प्लेनटेक्स्ट फ़ुटर पुराने रीडर्स को कुछ मेटाडेटा देखने और अनएन्क्रिप्टेड कॉलम पढ़ने की अनुमति देता है। वे एन्क्रिप्टेड कॉलम डेटा नहीं पढ़ सकते हैं, जबकि अखंडता के लिए फ़ुटर पर हस्ताक्षर (sign) किए जाते हैं। यह एक समयबद्ध माइग्रेशन मोड हो सकता है, लेकिन जब सांख्यिकी संवेदनशील हो तो यह सुरक्षा का विकल्प नहीं है।
एक रीडर मैट्रिक्स का परीक्षण करें: क्या इंजन एन्क्रिप्टेड कॉलम खोज सकता है, क्या अनधिकृत पहुंच विफल होती है, क्या केवल-सार्वजनिक क्वेरी अभी भी प्रेडिकेट्स को पुश कर सकती है, और क्या लेगेसी रीडर फ़ाइल को करप्ट मानने के बजाय एक स्पष्ट अनसपोर्टेड-एन्क्रिप्शन एरर रिपोर्ट करता है?
4. एक एल्गोरिदम चुनें और AAD को बाइंड करें
AES-GCM एन्क्रिप्शन और एक प्रमाणीकरण टैग (authentication tag) प्रदान करता है। AAD टेबल, पार्टीशन, फ़ाइल वर्ज़न और मॉड्यूल स्थिति को सिफरटेक्स्ट से बाइंड करता है, जो हमलावर को उसी कुंजी के तहत वर्तमान फ़ाइल, किसी अन्य पार्टीशन या किसी अन्य पंक्ति समूह (row group) को बदलने से रोकता है। रैंडम नॉनसेस (nonces) एक कुंजी के लिए अद्वितीय रहने चाहिए, और राइटर्स के बीच की-इनवोकेशन बजट का प्रबंधन किया जाना चाहिए।
Parquet AESGCMCTRV1 को भी परिभाषित करता है: गैर-पेज मॉड्यूल GCM का उपयोग करते हैं जबकि डेटा पेज थ्रूपुट के लिए CTR का उपयोग करते हैं। CTR पेजों में GCM की प्रमाणीकृत अखंडता नहीं होती है। यदि थ्रेट मॉडल को पेज-छेड़छाड़ का पता लगाने की आवश्यकता है, तो केवल CPU गति के आधार पर चुनने के बजाय AESGCM_V1 को प्राथमिकता दें।
5. क्वेरी क्षमता सुरक्षित रखें और विफलता पथ परिभाषित करें
एन्क्रिप्शन कंप्रेस्ड पेजों और अन्य मॉड्यूल पर लागू होता है, इसलिए प्रारूप अभी भी प्रोजेक्शन, प्रेडिकेट पुशडाउन, एन्कोडिंग और कम्प्रेशन को व्यक्त कर सकता है। एक प्लानर एक दृश्यमान फ़ुटर या इंडेक्स पढ़ सकता है और केवल अधिकृत कॉलम का अनुरोध कर सकता है। यदि फ़ुटर या कॉलम इंडेक्स एन्क्रिप्टेड है, हालांकि, प्लानर को संबंधित डिक्रिप्ट अनुमति की आवश्यकता होती है; "मैं केवल सार्वजनिक कॉलम क्वेरी करता हूँ" का अर्थ स्वचालित रूप से "किसी कुंजी की आवश्यकता नहीं है" नहीं होता है।
डिक्रिप्ट विफलता, KMS टाइमआउट, रद्द की गई अनुमति, AAD मिसमैच और ऑथेंटिकेशन-टैग विफलता को अलग-अलग रिकॉर्ड करें। कभी भी चुपचाप प्लेनटेक्स्ट पर वापस न आएं और हर विफलता को करप्ट फ़ाइल के रूप में लेबल न करें। फ़ाइल आईडी, की-मेटाडेटा, एल्गोरिदम वर्ज़न और ऑडिट प्रिंसिपल रखें, लेकिन कभी भी DEKs, प्लेनटेक्स्ट मान या संपूर्ण की-सामग्री लॉग न करें।
6. रोटेशन, छेड़छाड़ और डिजास्टर रिकवरी सत्यापित करें
संवेदनशील कॉलम के अनधिकृत पढ़ने, अधिकृत सार्वजनिक-कॉलम पढ़ने, अधिकृत संवेदनशील पढ़ने, पुरानी-फ़ाइल प्रतिस्थापन, पंक्ति-समूह विनिमय, सिफरटेक्स्ट-पेज संपादन, KMS इनकार, रोटेशन के बाद पढ़ने और क्रॉस-रीजन रिकवरी का परीक्षण करें। प्रत्येक परीक्षण के लिए, अपेक्षित त्रुटि, क्या प्लेनटेक्स्ट वापस आया था, और ऑडिट इवेंट रिकॉर्ड करें।
रिकवरी के लिए एन्क्रिप्टेड फ़ाइलों, की-मेटाडेटा, KMS की-वर्ज़न मैपिंग और AAD फ़ाइल पहचान की आवश्यकता होती है। KMS अनुमति के बिना स्टोरेज को रीस्टोर करने से अपठनीय फ़ाइलें उत्पन्न होती हैं; AAD प्रीफ़िक्स के बिना KMS को रीस्टोर करने से फ़ाइल-पहचान सत्यापन रुक सकता है। विनाश से पहले स्नैपशॉट, रीप्ले और बैकअप सत्यापन विंडो के माध्यम से पुराने की-वर्ज़न बनाए रखें।
उच्च-गुणवत्ता वाला नमूना उत्तर
"मैं थ्रेट मॉडल को परिभाषित करके शुरुआत करूँगा: क्या स्कीमा, पंक्ति संख्या और सांख्यिकी को छिपाया जाना चाहिए, और कौन से जॉब्स कौन से कॉलम पढ़ सकते हैं? Parquet मॉड्यूलर एन्क्रिप्शन न केवल कॉलम पेजों बल्कि पेज हेडर, कॉलम इंडेक्स, ऑफ़सेट इंडेक्स, ब्लूम फिल्टर और फ़ुटर की भी सुरक्षा कर सकता है। मैं फ़ाइलों या कॉलमों के लिए रैंडम DEKs जनरेट करूँगा और उन्हें KMS में MEK/KEK के साथ रैप करूँगा। जॉब्स को अल्पकालिक पहचान के माध्यम से अनरैप अनुमति मिलती है, और फ़ाइलों में केवल ऑडिट योग्य की-मेटाडेटा होता है।
एक पूर्ण सीमा के लिए मैं एक एन्क्रिप्टेड फ़ुटर का उपयोग करूँगा। यदि लेगेसी रीडर्स को सार्वजनिक कॉलम तक पहुंचने की आवश्यकता है, तो मैं एक समयबद्ध प्लेनटेक्स्ट-फ़ुटर माइग्रेशन का उपयोग करूँगा और इसके द्वारा उजागर किए जाने वाले मेटाडेटा को प्रलेखित करूँगा। मैं टेबल, पार्टीशन, फ़ाइल वर्ज़न और मॉड्यूल पहचान को बाइंड करने वाले AAD के साथ AES-GCM को प्राथमिकता दूँगा, और केवल इसलिए पेज अखंडता से समझौता नहीं करूँगा क्योंकि CTR पेज तेज़ हैं। रोलआउट से पहले मैं प्रोजेक्शन और प्रेडिकेट पुशडाउन, KMS इनकार, AAD छेड़छाड़, की-रोटेशन, क्रॉस-रीजन रिकवरी और लेगेसी व्यवहार का परीक्षण करूँगा। लॉग से DEKs, प्लेनटेक्स्ट और की-सामग्री को बाहर रखा जाएगा। यह डिज़ाइन एन्क्रिप्शन, ऑथराइजेशन, क्वेरी व्यवहार और रिकवरी को स्वतंत्र रूप से परीक्षण योग्य बनाता है।"
सामान्य गलतियाँ
- केवल स्टोरेज-लेयर एन्क्रिप्शन का उपयोग करना → ऑब्जेक्ट एक्सेस वाला कोई भी व्यक्ति प्रत्येक कॉलम पढ़ सकता है → कॉलम, फ़ुटर और मॉड्यूल पर सीमाएं डिज़ाइन करें।
- संवेदनशील पेजों को एन्क्रिप्ट करना लेकिन फ़ुटर को नहीं → स्कीमा, सांख्यिकी और पंक्ति संख्या लीक हो सकती है → एक एन्क्रिप्टेड फ़ुटर चुनें या प्लेनटेक्स्ट-फ़ुटर एक्सपोज़र को स्पष्ट रूप से बताएं।
- DEK को दीर्घकालिक मास्टर की मानना → एक फ़ाइल लीक रोटेशन और निरस्तीकरण प्रभाव का विस्तार करती है → KMS MEK या KEK के साथ रैंडम DEKs को रैप करें।
- AAD की अनदेखी करना → उसी कुंजी के तहत पुरानी फ़ाइलों या अन्य पार्टीशनों को प्रतिस्थापित किया जा सकता है → फ़ाइल और मॉड्यूल पहचान को बाइंड करें और स्वैप का परीक्षण करें।
- AESGCMCTR_V1 को पूरी तरह से प्रमाणित कहना → CTR पेजों में GCM पेज प्रमाणीकरण की कमी हो सकती है → अखंडता आवश्यकताओं के आधार पर चुनें और छेड़छाड़ का परीक्षण करें।
- रोटेशन के तुरंत बाद पुरानी कुंजियों को हटाना → स्नैपशॉट, बैकअप और रीप्ले जॉब्स पुनर्प्राप्त नहीं हो सकते हैं → वर्ज़न मैपिंग और एक नियंत्रित पुरानी-कुंजी विंडो बनाए रखें।
अनुवर्ती प्रश्न और उत्तर
लेगेसी रीडर्स को सार्वजनिक कॉलम पढ़ना जारी रखना चाहिए। आप माइग्रेट कैसे करेंगे?
संवेदनशील कॉलम डेटा पेजों को एन्क्रिप्ट करते समय अस्थायी रूप से एक प्लेनटेक्स्ट फ़ुटर का उपयोग करें, और लेगेसी रीडर्स को केवल सार्वजनिक कॉलम तक पहुंचने दें। उजागर स्कीमा और सांख्यिकी को मापें, एक अपग्रेड समय सीमा निर्धारित करें, फिर नए-रीडर कवरेज और रीप्ले परीक्षण पास होने के बाद एक एन्क्रिप्टेड फ़ुटर पर जाएँ। एक रोलबैक फ़ाइल वर्ज़न रखें।
आप किसी अन्य पार्टीशन के पेज को इस फ़ाइल में कॉपी होने से कैसे रोकते हैं?
फ़ाइल, टेबल, पार्टीशन, पंक्ति समूह और मॉड्यूल से स्थिर AAD पहचान का निर्माण करें। बेमेल होने पर प्रमाणीकरण विफल होना चाहिए। उसी कुंजी के तहत पुराने-वर्ज़न, क्रॉस-पार्टीशन और क्रॉस-कॉलम स्वैप का परीक्षण करें और सत्यापित करें कि सभी अस्वीकार कर दिए गए हैं।
क्या प्रत्येक पेज पढ़ने के लिए KMS राउंड ट्रिप की आवश्यकता होती है?
नहीं। KMS के माध्यम से एक DEK या KEK को अनरैप करें, फिर एक नियंत्रित प्रक्रिया के अंदर अल्पकालिक सामग्री को कैश करें। कैश स्कोप और TTL को सीमित करें, रोटेशन या निरस्तीकरण पर इसे अमान्य करें, और KMS विफलताओं तथा कैश हिट्स की निगरानी करें। पेज हॉट पाथ पर KMS कॉल न लगाएं।
उच्च थ्रूपुट के लिए केवल AES-CTR का उपयोग क्यों न करें?
CTR अखंडता को प्रमाणित नहीं करता है, इसलिए एक संशोधित पेज का पता नहीं चल सकता है। जब थ्रेट मॉडल में छेड़छाड़ का पता लगाने की आवश्यकता हो तो AES-GCM का उपयोग करें। CTR पर केवल तभी विचार करें जब अखंडता समझौता स्पष्ट हो और एक बाहरी अखंडता तंत्र सत्यापित हो।
आप कैसे साबित करेंगे कि प्रेडिकेट पुशडाउन ऑथराइजेशन को बायपास नहीं करता है?
अधिकृत और अनधिकृत पहचान के तहत केवल-सार्वजनिक, संवेदनशील-फ़िल्टर और संवेदनशील-प्रोजेक्शन क्वेरी चलाएं। अनुरोधित मॉड्यूल और KMS अनुमतियों का निरीक्षण करें। ऑडिट रिकॉर्ड में क्वेरी, फ़ाइल, कॉलम, की-मेटाडेटा और इनकार का कारण जुड़ा होना चाहिए; एक अंतिम पंक्ति संख्या अपर्याप्त है।