paint-brush
काफ्का के माध्यम से एंड-टू-एंड एन्क्रिप्टेड डेटा को कैसे स्थानांतरित करेंद्वारा@ockam
9,545 रीडिंग
9,545 रीडिंग

काफ्का के माध्यम से एंड-टू-एंड एन्क्रिप्टेड डेटा को कैसे स्थानांतरित करें

द्वारा Ockam8m2023/04/19
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

ओकम ऑर्केस्ट्रेटर के लिए कंफ्लुएंट ऐड-ऑन, कंफ्लुएंट क्लाउड के माध्यम से टैम्पर-प्रूफ और एंड-टू-एंड एन्क्रिप्टेड मैसेज स्ट्रीम को सक्षम बनाता है। ड्रॉप-इन समाधान कंपनियों को महंगी पुनर्रचना या विकास कार्य की आवश्यकता के बिना सामान्य सुरक्षा और अनुपालन आवश्यकताओं को पार करने में सक्षम बनाता है।
featured image - काफ्का के माध्यम से एंड-टू-एंड एन्क्रिप्टेड डेटा को कैसे स्थानांतरित करें
Ockam HackerNoon profile picture

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


काफ्का परिनियोजन आमतौर पर काफ्का विषयों में और बाहर जाने वाले डेटा की सुरक्षा के लिए प्रमाणीकरण टोकन और ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) को जोड़ती है। हालांकि यह इंटरनेट पर ट्रांज़िट के दौरान डेटा को सुरक्षित करता है, लेकिन यह काफ्का के माध्यम से यात्रा करते समय डेटा को सुरक्षित करने का पूर्ण समाधान प्रदान नहीं करता है। काफ्का ब्रोकर प्लेनटेक्स्ट डेटा को अस्थायी रूप से देखने में सक्षम होगा।


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

अपने डेटा-इन-मोशन पर भरोसा करें


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


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


  1. ट्रांज़िट के दौरान किसी तीसरे पक्ष के डेटा को पढ़ने की कोई संभावना नहीं है
  2. ट्रांज़िट के दौरान कोई तृतीय-पक्ष डेटा को संशोधित नहीं कर सकता है
  3. केवल प्रमाणित और अधिकृत पक्ष ही डेटा का उत्पादन कर सकते हैं


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

बिना किसी कोड परिवर्तन के एकीकृत करें

मैं आपको एक पूर्ण कामकाजी उदाहरण के माध्यम से ले चलता हूं कि कैसे, कुछ ही मिनटों में, आप संपूर्ण एंड-टू-एंड समाधान को कॉन्फ़िगर और एकीकृत कर सकते हैं जो यह सुनिश्चित करता है कि काफ्का और कंफ्लुएंट के माध्यम से गति के दौरान आपका डेटा हमेशा एन्क्रिप्टेड और छेड़छाड़-रोधी हो। .


नोट: नीचे दिए गए कोड उदाहरण बदल सकते हैं क्योंकि हम डेवलपर अनुभव में सुधार करना जारी रखते हैं। सबसे अद्यतित दस्तावेज़ीकरण के लिए कृपया https://docs.ockam.io/ देखें।

ओकाम का प्रारंभिक सेटअप

यदि आपने पहले ओकम को सेट किया है तो आप इस अनुभाग को छोड़ सकते हैं और सीधे नीचे दिए गए दो उदाहरणों पर जा सकते हैं।


 brew install build-trust/ockam/ockam

(यदि आप हमारे पास पैकेज प्रबंधन के लिए काढ़ा का उपयोग नहीं कर रहे हैं अन्य प्रणालियों के लिए स्थापना निर्देश हमारे दस्तावेज़ में)


एक बार इंस्टॉल हो जाने के बाद आपको ओकाम ऑर्केस्ट्रेटर के साथ अपनी स्थानीय पहचान को नामांकित करने की आवश्यकता है, नीचे दिए गए आदेश को चलाएं और दिए गए निर्देशों का पालन करें:


 ockam enroll

कंफ्लुएंट ऐड-ऑन कॉन्फ़िगर करें

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


 ockam project addon configure confluent \ --bootstrap-server YOUR_CONFLUENT_CLOUD_BOOTSTRAP_SERVER_ADDRESS


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


 ockam project information default --output json > project.json


ओकाम परियोजना के व्यवस्थापक के रूप में, आप अद्वितीय एक बार उपयोग नामांकन टोकन जारी करके यह नियंत्रित करने में सक्षम हैं कि किन अन्य पहचानों को आपकी परियोजना में खुद को नामांकित करने की अनुमति है। हम अपने उपभोक्ता के लिए एक बनाकर शुरुआत करेंगे:


 ockam project enroll --project-path project.json --attribute role=member > consumer.token


... और फिर पहले निर्माता के लिए:


 ockam project enroll --project-path project.json --attribute role=member > producer1.token


अंतिम कॉन्फ़िगरेशन फ़ाइल जिसे हमें जनरेट करने की आवश्यकता है, kafka.config है, जहाँ आप उपयोगकर्ता नाम और पासवर्ड संग्रहीत करते हैं, जिसका उपयोग आप कंफ्लुएंट क्लाउड पर अपने क्लस्टर तक पहुँचने के लिए करते हैं:


 cat > kafka.config <<EOF request.timeout.ms=30000 security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="YOUR_CONFLUENT_CLOUD_USER_NAME" \ password="YOUR_CONFLUENT_CLOUD_PASSWORD"; EOF

उपभोक्ताओं को एन्क्रिप्टेड संदेश प्राप्त करने के लिए कॉन्फ़िगर करें

अपने उपभोक्ता नोड पर आप एक नई पहचान बनाकर शुरू करेंगे (आपको ओकाम कमांड स्थापित करने की आवश्यकता होगी, इसलिए यदि आप इसे एक अलग होस्ट पर कर रहे हैं तो इंस्टॉल निर्देश दोहराएं):


 ockam identity create consumer


पिछले अनुभाग से project.json और consumer.token फ़ाइलों की प्रतिलिपि बनाएँ, और फिर उनका उपयोग अपने ओकाम प्रोजेक्ट में इस पहचान को प्रमाणित करने और नामांकित करने के लिए करें:


 ockam project authenticate \ --project-path project.json \ --identity consumer \ --token $(cat consumer.token)


ओकाम नोड विभिन्न सेवाओं को एक दूसरे से सुरक्षित रूप से जोड़ने का एक तरीका है, इसलिए हम यहां एक नोड बनाएंगे जिसका उपयोग हम अभी बनाई गई पहचान का उपयोग करके कंफ्लुएंट क्लाउड क्लस्टर के माध्यम से संचार करने के लिए करेंगे:


 ockam node create consumer \ --project project.json --identity consumer


एक बार जब यह पूरा हो जाता है तो हम अपने काफ्का बूटस्ट्रैप सर्वर को उजागर कर सकते हैं। यह रिमोट काफ्का बूटस्ट्रैप सर्वर की तरह है और ब्रोकर localhost:4000 पर वस्तुतः निकट हो गए हैं:


 ockam service start kafka-consumer \ --node consumer \ --project-route /project/default \ --bootstrap-server-ip 127.0.0.1 \ --bootstrap-server-port 4000 \ --brokers-port-range 4001-4100


kafka.config फ़ाइल की प्रतिलिपि बनाएँ, और इसका उपयोग एक नया विषय बनाने के लिए करें जिसका उपयोग हम इस डेमो में निर्माता और उपभोक्ता के बीच संदेश भेजने के लिए करेंगे (इस मामले में हमने विषय को demo-topic कहा है)


 kafka-topics.sh \ --bootstrap-server localhost:4000 \ --command-config kafka.config \ --create \ --topic demo-topic \ --partitions 3


अंतिम चरण हमारी उपभोक्ता स्क्रिप्ट को शुरू करना है, इसे localhost:4000 हमारे बूटस्ट्रैप सर्वर के रूप में:


 kafka-console-consumer.sh \ --topic demo-topic \ --bootstrap-server localhost:4000 \ --consumer.config kafka.config


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

एकाधिक उत्पादकों से एन्क्रिप्टेड संदेश भेजें

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


 ockam identity create producer1


पिछले अनुभाग से project.json और producer1.token फ़ाइलों की प्रतिलिपि बनाएँ और इसे प्रमाणित करने और हमारे ओकाम प्रोजेक्ट में नामांकित करने के लिए इसका उपयोग करें:


 ockam project authenticate \ --project-path project.json \ --identity producer1 \ --token $(cat producer1.token)


एक नोड बनाएँ और इसे हमारे द्वारा बनाए गए प्रोजेक्ट और पहचान दोनों से लिंक करें:


 ockam node create producer1 \ --project project.json \ --identity producer1


और हमारे काफ्का बूटस्ट्रैप सर्वर को पोर्ट 5000 पर प्रदर्शित करें ताकि हम कंफ्लुएंट क्लाउड के माध्यम से संदेश भेजना शुरू कर सकें:


 ockam service start kafka-producer \ --node producer1 \ --project-route /project/default \ --bootstrap-server-ip 127.0.0.1 \ --bootstrap-server-port 5000 \ --brokers-port-range 5001-5100


kafka.config फ़ाइल को कॉपी करना सुनिश्चित करें, और अपना निर्माता शुरू करें:


 kafka-console-producer.sh \ --topic demo-topic \ --bootstrap-server localhost:5000 \ --producer.config kafka.config


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


इस उदाहरण को और आगे ले जाने के लिए आप प्रत्येक के लिए एक नया नामांकन टोकन उत्पन्न करके और फिर इस खंड में चरणों को दोहराकर N संख्या के उत्पादकों के लिए इस चरण को दोहरा सकते हैं।


यदि आप कॉन्फ्लुएंट क्लाउड के अंदर एन्क्रिप्टेड संदेशों को देखते हैं, तो वे निम्न स्क्रीन कैप्चर की तरह पहचानने योग्य वर्णों के रूप में प्रस्तुत होंगे:

कॉन्फ्लुएंट क्लाउड में काफ्का में डेमो-विषय पर लिखे गए एंड-टू-एंड एन्क्रिप्टेड संदेश बिंग

एंड-टू-एंड एन्क्रिप्टेड संदेश स्ट्रीम

एक उदाहरण जिसे लागू करने में केवल कुछ मिनट लगते हैं, इसका अर्थ है कि इस दृष्टिकोण से आने वाली सुरक्षा और अखंडता में कई महत्वपूर्ण सुधार आसानी से छूट सकते हैं:


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


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


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


ये सभी लाभ आज संभव हैं, बिना किसी कोड परिवर्तन और मौजूदा परिनियोजन में न्यूनतम कॉन्फ़िगरेशन परिवर्तन के साथ।

अगले कदम

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


यहाँ भी प्रकाशित हुआ।