ब्लॉग

एक मल्टी-टेनेंट डॉकर आर्किटेक्चर डिज़ाइन करना: सही आइसोलेशन स्तर चुनना

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

सारांश

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

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

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

चरण 1: टेनेंट विश्वास और संवेदनशीलता का आकलन करें

सभी टेनेंट समान नहीं हैं। फ्री-टियर उपयोगकर्ता शेयर्ड इंफ्रास्ट्रक्चर के साथ ठीक हो सकते हैं, जबकि एंटरप्राइज़ ग्राहक मजबूत गारंटी की मांग करते हैं। टेनेंट को तीन स्तरों में वर्गीकृत करें:

  • निम्न विश्वास (जैसे, अनाम परीक्षण उपयोगकर्ता): न्यूनतम आइसोलेशन स्वीकार्य, दुरुपयोग का उच्चतम जोखिम।
  • मध्यम विश्वास (जैसे, सत्यापित ग्राहक): आकस्मिक हस्तक्षेप को रोकने के लिए मध्यम आइसोलेशन आवश्यक।
  • उच्च विश्वास (जैसे, एसएलए वाले हस्ताक्षरित अनुबंध): मजबूत आइसोलेशन आवश्यक – संभवतः अलग-अलग वीएम।

डेटा संवेदनशीलता पर भी विचार करें: यदि टेनेंट पीआईआई या वित्तीय डेटा संग्रहीत करते हैं, तो मजबूत आइसोलेशन की ओर झुकें। यह वर्गीकरण हर बाद के निर्णय को चलाता है।

चरण 2: अपना आइसोलेशन आर्किटेक्चर चुनें

विकल्प ए: लिनक्स नेमस्पेसेज़ के साथ शेयर्ड डॉकर डेमन (सबसे सस्ता, सबसे कमजोर आइसोलेशन)

सभी टेनेंट एक ही होस्ट और एक ही डॉकर डेमन पर कंटेनर के रूप में चलते हैं। आइसोलेशन पूरी तरह से कर्नेल नेमस्पेसेज़ और सीग्रुप्स पर निर्भर करता है। यह डिफ़ॉल्ट डॉकर मॉडल है।

लाभ: सबसे कम ओवरहेड, प्रबंधन में आसान, किसी अतिरिक्त टूलिंग की आवश्यकता नहीं। आंतरिक टूल्स या गैर-महत्वपूर्ण मल्टी-टेनेंसी के लिए बढ़िया।

नुकसान: एक कर्नेल भेद्यता आइसोलेशन को तोड़ सकती है। एक दुर्भावनापूर्ण टेनेंट कंटेनर एस्केप का प्रयास कर सकता है। संसाधन प्रतिस्पर्धा वास्तविक है – एक शोर पड़ोसी दूसरों को भूखा कर सकता है।

कब उपयोग करें: क्षणिक डेटा वाले निम्न-विश्वास टेनेंट, जैसे डेमो वातावरण या सीआई/सीडी रनर।

विकल्प बी: प्रति-टेनेंट डॉकर-इन-डॉकर (मध्यम आइसोलेशन, मध्यम लागत)

प्रत्येक टेनेंट को एक कंटेनर के अंदर अपना स्वयं का डॉकर डेमन मिलता है (डॉकर-इन-डॉकर – DinD)। यह एक अलग कंटेनर जीवनचक्र प्रदान करता है और एक टेनेंट को दूसरे के कंटेनर देखने से रोकता है।

लाभ: शेयर्ड डेमन से बेहतर आइसोलेशन; प्रत्येक टेनेंट अपना स्वयं का डॉकर कम्पोज़ स्टैक चला सकता है। उपयोगी जब टेनेंट को अपने स्वयं के कंटेनर बनाने और प्रबंधित करने की आवश्यकता हो।

नुकसान: DinD में ज्ञात खामियाँ हैं – नेस्टेड स्टोरेज ड्राइवर समस्या पैदा कर सकते हैं, और आप अभी भी होस्ट कर्नेल साझा करते हैं। नेस्टेड परतों के कारण प्रदर्शन ओवरहेड 10-20% हो सकता है। सुरक्षा सही नहीं है; DinD कंटेनर से कंटेनर एस्केप फिर भी होस्ट तक ले जाता है।

कब उपयोग करें: मध्यम-विश्वास टेनेंट जिन्हें अपनी सेवाएँ संयोजित करने की आवश्यकता है, जैसे एक प्लेटफ़ॉर्म जो उपयोगकर्ताओं को कस्टम वेब ऐप डिप्लॉय करने देता है।

विकल्प सी: प्रति टेनेंट अलग-अलग वीएम (सबसे मजबूत आइसोलेशन, उच्चतम लागत)

प्रत्येक टेनेंट एक समर्पित वर्चुअल मशीन पर चलता है, जिसमें उस वीएम के अंदर डॉकर होता है। हाइपरवाइजर हार्डवेयर-स्तरीय आइसोलेशन प्रदान करता है – बिल्कुल भी कर्नेल साझा नहीं।

लाभ: सबसे मजबूत आइसोलेशन – कंटेनर एस्केप केवल वीएम तक पहुँचता है, दूसरे टेनेंट तक नहीं। पीसीआई-डीएसएस और एचआईपीएए जैसी अनुपालन आवश्यकताओं को पूरा करता है। प्रदर्शन आइसोलेशन लगभग पूर्ण है।

नुकसान: उच्च ओवरहेड (प्रति टेनेंट पूर्ण ओएस), धीमी प्रावधानिंग, अधिक प्रबंधन जटिलता। आप कंटेनरों का घनत्व लाभ खो देते हैं।

कब उपयोग करें: संवेदनशील डेटा वाले उच्च-विश्वास टेनेंट, या कोई भी टेनेंट जहाँ उल्लंघन विनाशकारी होगा।

चरण 3: सभी आर्किटेक्चर में कंटेनरों को सख्त बनाएं

आप जो भी आर्किटेक्चर चुनें, ये सुरक्षा अभ्यास सार्वभौमिक रूप से लागू करें:

  • विश्वसनीय, न्यूनतम बेस इमेज (जैसे, अल्पाइन, डिस्ट्रोलेस) का उपयोग करके हमले की सतह कम करें।
  • कंटेनरों को नॉन-रूट के रूप में चलाएं – कंटेनर के अंदर कभी भी रूट के रूप में न चलाएं। अपने डॉकरफ़ाइल में USER सेट करें।
  • कंटेनर स्पेक में रीड-ओनली रूट फ़ाइलसिस्टम सक्षम करें; केवल डेटा के लिए राइटेबल डायरेक्टरी माउंट करें।
  • --memory, --cpus के साथ संसाधन सीमाएँ सेट करके शोर-पड़ोसी समस्याओं को रोकें।
  • नेटवर्किंग को सीमित करें: उपयोगकर्ता-परिभाषित ब्रिज नेटवर्क का उपयोग करें और केवल आवश्यक पोर्ट उजागर करें।

मल्टी-टेनेंट परिदृश्यों के लिए, ये भी लागू करें:

  • गेटवे पर प्रति-टेनेंट एपीआई रेट लिमिटिंग
  • सभी कंटेनर क्रियाओं की ऑडिट लॉगिंग

कंटेनर एस्केप को रोकने के गहन अध्ययन के लिए, हमारी मार्गदर्शिका देखें: कंटेनर एस्केप के खिलाफ बचाव.

चरण 4: मल्टी-टेनेंट डिप्लॉयमेंट को ऑर्केस्ट्रेट करें

कई कंटेनरों का मैन्युअल प्रबंधन जल्दी ही अप्रबंधनीय हो जाता है। एक ऑर्केस्ट्रेटर का उपयोग करें:

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

प्रोडक्शन-रेडी ऑर्केस्ट्रेशन सेटअप के लिए, पढ़ें बियॉन्ड डॉकर कम्पोज़: ऑर्केस्ट्रेटिंग प्रोडक्शन-रेडी कंटेनराइज़्ड एप्लिकेशन्स.

चेतावनियाँ और ट्रेड-ऑफ़

  • प्रदर्शन ओवरहेड: DinD 10-15% CPU/मेमोरी ओवरहेड जोड़ सकता है। वीएम बेयर-मेटल की तुलना में 5-10% जोड़ते हैं लेकिन कंटेनरों से अधिक। यथार्थवादी लोड के तहत परीक्षण करें।
  • परिचालन जटिलता: अलग-अलग वीएम के लिए OS अपडेट, हाइपरवाइजर पैच, और वीएम जीवनचक्र प्रबंधन की आवश्यकता होती है। DinD स्टोरेज ड्राइवरों के साथ समस्याएँ लाता है (overlay2 के अंदर overlay2 समर्थित नहीं है; --storage-driver vfs का उपयोग करें लेकिन यह धीमा है)।
  • अनुपालन: यदि आपको PCI-DSS की आवश्यकता है, तो शेयर्ड कर्नेल आर्किटेक्चर आमतौर पर स्वीकार नहीं किए जाते हैं। उचित विभाजन के साथ वीएम का उपयोग करें।
  • लागत: शेयर्ड डॉकर डेमन की लगभग कोई अतिरिक्त लागत नहीं है। DinD की थोड़ी अधिक CPU/मेमोरी लागत आती है। लाइसेंसिंग और संसाधनों के कारण वीएम प्रति टेनेंट 2-5 गुना अधिक महंगे हो सकते हैं।

निष्कर्ष: आपका निर्णय ढाँचा

| विश्वास स्तर | अनुशंसित आर्किटेक्चर | मुख्य चेतावनियाँ | |--------------|------------------------|-------------------| | निम्न | शेयर्ड डॉकर डेमन | कंटेनर एस्केप जोखिम स्वीकार करें; रेट लिमिटिंग और ऑडिटिंग लागू करें। | | मध्यम | प्रति-टेनेंट DinD | नेस्टेड स्टोरेज संभालें; प्रति टेनेंट सुरक्षा समूहों पर विचार करें। | | उच्च | डॉकर के साथ अलग-अलग वीएम | अतिरिक्त कंप्यूट के लिए बजट रखें; वीएम प्रावधानिंग स्वचालित करें (जैसे, Terraform)। |

कई सास कंपनियों के लिए, एक हाइब्रिड दृष्टिकोण काम करता है: मुफ्त टियर के लिए शेयर्ड डेमन, भुगतान करने वाले ग्राहकों के लिए DinD, और एंटरप्राइज़ ग्राहकों के लिए वीएम का उपयोग करें। यह आपको वहाँ लागत दक्षता देता है जहाँ जोखिम कम है और जहाँ मायने रखता है वहाँ मजबूत आइसोलेशन।

याद रखें: आइसोलेशन एक स्पेक्ट्रम है, कोई द्विआधारी विकल्प नहीं। लक्ष्य सुरक्षा के स्तर को डेटा के मूल्य और टेनेंट की विश्वसनीयता से मेल करना है। उस सरलतम विकल्प से शुरू करें जो आपकी सुरक्षा आवश्यकताओं को पूरा करता है, फिर आवश्यकतानुसार विकसित करें।

कंटेनर कॉन्फ़िगरेशन को लॉक डाउन करने की अतिरिक्त सर्वोत्तम प्रथाओं के लिए, देखें डॉकर के साथ अपने वेब एप्लिकेशन को सुरक्षित करना: आइसोलेशन और सर्वोत्तम प्रथाओं के लिए एक व्यावहारिक मार्गदर्शिका.

Sources (5)