Apigee mTLS के बारे में जानकारी

Apigee की mTLS सुविधा, आपके Edge for Private Cloud क्लस्टर में मौजूद कॉम्पोनेंट के बीच होने वाले कम्यूनिकेशन को सुरक्षित बनाती है. यह सर्विस मेश को कॉन्फ़िगर और इंस्टॉल करने का इंडस्ट्री स्टैंडर्ड तरीका है. यह पैकेज मैनेजमेंट और कॉन्फ़िगरेशन ऑटोमेशन की सुविधा देता है.

आर्किटेक्चर की खास जानकारी

Apigee mTLS, कॉम्पोनेंट के बीच सुरक्षित कम्यूनिकेशन के लिए सर्विस मेश का इस्तेमाल करता है. यह कॉम्पोनेंट के बीच सुरक्षित और पुष्टि किए गए टीएलएस कनेक्शन बनाता है.

इस इमेज में, Apigee के उन कॉम्पोनेंट के बीच कनेक्शन दिखाए गए हैं जिन्हें Apigee mTLS सुरक्षित करता है (in red). इमेज में दिखाए गए पोर्ट उदाहरण हैं. हर कॉम्पोनेंट के लिए इस्तेमाल की जा सकने वाली रेंज की सूची देखने के लिए, पोर्ट का इस्तेमाल लेख पढ़ें.

(ध्यान दें कि "M" से दिखाए गए पोर्ट का इस्तेमाल कॉम्पोनेंट को मैनेज करने के लिए किया जाता है. साथ ही, मैनेजमेंट सर्वर से ऐक्सेस करने के लिए, कॉम्पोनेंट पर ये पोर्ट खुले होने चाहिए.)

ऊपर दिए गए डायग्राम में दिखाया गया है कि Apigee mTLS, क्लस्टर में मौजूद ज़्यादातर कॉम्पोनेंट के बीच कनेक्शन को सुरक्षित बनाता है. इनमें ये शामिल हैं:

स्रोत मंज़िल
मैनेजमेंट सर्वर राउटर, एमपी, क्यूपिड, एलडीएपी, पोस्टग्रेस, ज़ूकीपर, और कैसेंड्रा नोड
राऊटर लूपबैक; Qpid, Zookeeper, और Cassandra नोड
मैसेज प्रोसेसर लूपबैक; Qpid, Zookeeper, और Cassandra नोड
ZooKeeper और Cassandra Zookeeper और Cassandra के अन्य नोड
Edge UI एसएमटीपी (सिर्फ़ बाहरी आईडीपी के लिए)
Postgres Postgres, Zookeeper, और Cassandra के अन्य नोड

मैसेज को एन्क्रिप्ट (सुरक्षित) करना/डिक्रिप्ट करना

Apigee mTLS सेवा मेश में Consul सर्वर होते हैं. ये आपके क्लस्टर में हर ZooKeeper नोड पर चलते हैं. साथ ही, क्लस्टर में हर नोड पर ये Consul सेवाएं चलती हैं:

  • एक इग्रेस प्रॉक्सी, जो होस्ट नोड पर भेजे जाने वाले मैसेज को इंटरसेप्ट करती है. यह सेवा, भेजे जाने वाले ईमेल को मंज़िल तक पहुंचाने से पहले एन्क्रिप्ट (सुरक्षित) करती है.
  • एक इनग्रेस प्रॉक्सी, जो होस्ट नोड पर आने वाले मैसेज को इंटरसेप्ट करती है. यह सेवा, ईमेल पाने वाले व्यक्ति को ईमेल भेजने से पहले, आने वाले ईमेल को डिक्रिप्ट करती है.

उदाहरण के लिए, जब मैनेजमेंट सर्वर, राउटर को कोई मैसेज भेजता है, तो इग्रेस प्रॉक्सी सेवा, भेजे जा रहे मैसेज को इंटरसेप्ट करती है, उसे एन्क्रिप्ट (सुरक्षित) करती है, और फिर उसे राउटर को भेजती है. जब राउटर के नोड को मैसेज मिलता है, तो इनग्रेस प्रॉक्सी सेवा मैसेज को डिक्रिप्ट करती है. इसके बाद, इसे प्रोसेस करने के लिए राउटर कॉम्पोनेंट को भेज देती है.

यह सब Edge कॉम्पोनेंट के लिए पारदर्शी तरीके से होता है: उन्हें Consul प्रॉक्सी सेवाओं के ज़रिए की जाने वाली एन्क्रिप्शन और डिक्रिप्शन प्रोसेस के बारे में पता नहीं होता.

इसके अलावा, Apigee mTLS, iptables यूटिलिटी का इस्तेमाल करता है. यह Linux फ़ायरवॉल सेवा है, जो ट्रैफ़िक रीडायरेक्ट करने की सुविधा को मैनेज करती है.

ज़रूरी शर्तें

Apigee mTLS इंस्टॉल करने से पहले, आपके एनवायरमेंट को ये ज़रूरी शर्तें पूरी करनी होंगी:

यहां दिए गए सेक्शन में, इन सभी ज़रूरी शर्तों के बारे में ज़्यादा जानकारी दी गई है.

टपॉलजी से जुड़ी ज़रूरी शर्तें

Apigee mTLS के लिए, आपके एनवायरमेंट की टोपोलॉजी में कम से कम तीन Zookeeper नोड होने चाहिए. इसलिए, Apigee mTLS को सिर्फ़ उन टोपोलॉजी पर इंस्टॉल किया जा सकता है जिनमें 5, 9, 12 (एक से ज़्यादा डेटा सेंटर) या 13 नोड इस्तेमाल किए जाते हैं. ज़्यादा जानकारी के लिए, इंस्टॉलेशन टोपोलॉजी देखें.

सुविधाएं/पैकेज

Apigee mTLS के लिए, यह ज़रूरी है कि आपके क्लस्टर में मौजूद हर मशीन पर ये पैकेज इंस्टॉल और चालू हों. इनमें आपकी एडमिन मशीन भी शामिल है. ऐसा आपको इंस्टॉलेशन प्रोसेस शुरू करने से पहले करना होगा:

सुविधा/पैकेज ब्यौरा क्या इंस्टॉल करने के बाद इसे हटाया जा सकता है?
base64 यह कुकी, इंस्टॉलेशन स्क्रिप्ट में मौजूद डेटा की पुष्टि करती है.
gnu-bash
gnu-sed
gnu-grep
इसका इस्तेमाल इंस्टॉलेशन स्क्रिप्ट और अन्य सामान्य टूल करते हैं.
iptables यह डिफ़ॉल्ट फ़ायरवॉल, firewalld को बदल देता है.
iptables-services यह iptables यूटिलिटी को फ़ंक्शन उपलब्ध कराता है.
lsof इस कुकी का इस्तेमाल, इंस्टॉलेशन स्क्रिप्ट करती है.
nc यह कुकी, iptables रूट की पुष्टि करती है.
openssl यह कुकी, बूटस्ट्रैपिंग की शुरुआती प्रोसेस के दौरान, सर्टिफ़िकेट पर स्थानीय तौर पर हस्ताक्षर करती है.

इंस्टॉल करने के दौरान, आपको एडमिनिस्ट्रेशन मशीन पर Consul पैकेज भी इंस्टॉल करना होगा, ताकि क्रेडेंशियल और एन्क्रिप्शन कुंजी जनरेट की जा सके.

apigee-mtls पैकेज, Consul सर्वर को इंस्टॉल और कॉन्फ़िगर करता है. इसमें क्लस्टर में ZooKeeper नोड पर इनग्रेस और इग्रेस प्रॉक्सी शामिल हैं.

उपयोगकर्ता खाते की अनुमतियां

इंस्टॉल करने से पहले, नया उपयोगकर्ता खाता बनाएं या पक्का करें कि आपके पास ऐसे खाते का ऐक्सेस हो जिसके पास ज़्यादा सुविधाएं हों.

क्लस्टर के हर नोड पर Apigee mTLS इंस्टॉल करने वाले खाते के पास ये अनुमतियां होनी चाहिए:

  • Apigee कॉम्पोनेंट को शुरू, बंद, रीस्टार्ट, और शुरू करना
  • फ़ायरवॉल के नियम सेट करना
  • ओएस/सिस्टम का नया उपयोगकर्ता खाता बनाना
  • systemctl की मदद से, सेवाओं को चालू, बंद, शुरू, रोका जा सकता है. साथ ही, उन्हें छिपाया जा सकता है

एडमिनिस्ट्रेशन मशीन (सुझाया गया)

Apigee का सुझाव है कि आपके क्लस्टर में एक ऐसा नोड होना चाहिए जिस पर इस दस्तावेज़ में बताए गए कई एडमिन टास्क किए जा सकें. इनमें ये टास्क शामिल हैं:

  1. HashiCorp Consul 1.6.2 इंस्टॉल करें.
  2. सर्टिफ़िकेट/कुंजी का जोड़ा और गॉसिप एन्क्रिप्शन कुंजी जनरेट और डिस्ट्रिब्यूट करता है.
  3. कॉन्फ़िगरेशन फ़ाइल को अपडेट करें और उसे डिस्ट्रिब्यूट करें.

एडमिनिस्ट्रेशन मशीन सेट अप करते समय:

  • पक्का करें कि आपके पास इसका रूट ऐक्सेस हो.
  • apigee-service और apigee-setup यूटिलिटी को डाउनलोड और इंस्टॉल करें. इसके लिए, Edge apigee-setup यूटिलिटी इंस्टॉल करना लेख पढ़ें.
  • पक्का करें कि एडमिन मशीन से, क्लस्टर के सभी नोड को ऐक्सेस करने के लिए scp/ssh का इस्तेमाल किया जा सकता हो. यह इसलिए ज़रूरी है, ताकि कॉन्फ़िगरेशन फ़ाइल और क्रेडेंशियल शेयर किए जा सकें.

पोर्ट का इस्तेमाल और असाइनमेंट

इस सेक्शन में, पोर्ट के इस्तेमाल और Apigee mTLS के साथ Consul के कम्यूनिकेशन को सपोर्ट करने के लिए पोर्ट असाइनमेंट के बारे में बताया गया है.

पोर्ट का इस्तेमाल: apigee-mtls चलाने वाले सभी नोड

क्लस्टर में मौजूद उन सभी नोड को लोकल होस्ट (127.0.0.1) पर मौजूद सेवाओं से कनेक्शन की अनुमति देनी होगी जो apigee-mtls सेवा का इस्तेमाल करते हैं. इससे Consul प्रॉक्सी, आने वाले और भेजे जाने वाले मैसेज को प्रोसेस करते समय, अन्य सेवाओं से कम्यूनिकेट कर पाती हैं.

पोर्ट का इस्तेमाल: Consul सर्वर नोड (ZooKeeper चलाने वाले नोड)

क्लस्टर के सभी नोड से अनुरोध स्वीकार करने के लिए, आपको Consul सर्वर नोड (ZooKeeper चलाने वाले नोड) पर इनमें से ज़्यादातर पोर्ट खोलने होंगे:

नोड Consul सर्वर पोर्ट ब्यौरा प्रोटोकॉल बाहरी mtls-agents को अनुमति दें
*
Consul Server (ZooKeeper नोड) 8300 यह क्लस्टर में मौजूद सभी Consul सर्वर को कनेक्ट करता है. RPC
8301 यह क्लस्टर में सदस्यता और ब्रॉडकास्ट किए गए मैसेज मैनेज करता है. यूडीपी/टीसीपी
8302 WAN पोर्ट, जो एक से ज़्यादा डेटा सेंटर वाले कॉन्फ़िगरेशन में सदस्यता और ब्रॉडकास्ट मैसेज मैनेज करता है. यूडीपी/टीसीपी
8500 यह एक ही नोड पर मौजूद प्रोसेस से, Consul Server API के एचटीटीपी कनेक्शन को मैनेज करता है.

इस पोर्ट का इस्तेमाल, रिमोट कम्यूनिकेशन या कोऑर्डिनेशन के लिए नहीं किया जाता. यह सिर्फ़ लोकलहोस्ट पर काम करता है.

HTTP
8502 यह क्लस्टर के अन्य नोड से, Consul Server API के gRPC+HTTPS कनेक्शन को मैनेज करता है. gRPC+HTTPS
8503 यह कुकी, क्लस्टर में मौजूद अन्य नोड से Consul Server API के एचटीटीपीएस कनेक्शन को मैनेज करती है. एचटीटीपीएस
8600 यह Consul सर्वर के डीएनएस को मैनेज करता है. यूडीपी/टीसीपी
* Apigee का सुझाव है कि क्लस्टर के सदस्यों के लिए ही इनबाउंड अनुरोधों को सीमित करें (इसमें क्रॉस-डेटास्टोर भी शामिल है). इसके लिए, iptables का इस्तेमाल करें.

इस टेबल से पता चलता है कि consul-server कॉम्पोनेंट (ZooKeeper नोड) चलाने वाले नोड को, क्लस्टर के सभी सदस्यों के लिए पोर्ट 8301, 8302, 8502, और 8503 खोलने होंगे. ये सदस्य, apigee-mtls सेवा चला रहे हैं. ऐसा डेटा सेंटर में भी करना होगा. ZooKeeper का इस्तेमाल नहीं करने वाले नोड को इन पोर्ट को खोलने की ज़रूरत नहीं है.

सभी Consul नोड के लिए पोर्ट असाइनमेंट (इनमें ZooKeeper चलाने वाले नोड भी शामिल हैं)

Consul कम्यूनिकेशन के लिए, Apigee के इन कॉम्पोनेंट को चलाने वाले नोड को, यहां दी गई रेंज के पोर्ट से बाहरी कनेक्शन की अनुमति देनी होगी:

Apigee कॉम्पोनेंट सीमा हर नोड के लिए ज़रूरी पोर्ट की संख्या
Apigee mTLS 10700 से 10799 1
Cassandra 10100 से 10199 2
मैसेज प्रोसेसर 10,500 से 10,599 2
SymasLDAP 10200 से 10299 1
Postgres 10300 से 10399 3
Qpid 10400 से 10499 2
राऊटर 10600 से 10699 2
ZooKeeper 10,000 से 10,099 3

Consul, पोर्ट को एक आसान तरीके से असाइन करता है. उदाहरण के लिए, अगर आपके क्लस्टर में दो Postgres नोड हैं, तो पहला नोड दो पोर्ट का इस्तेमाल करता है. इसलिए, Consul इसे 10300 और 10301 पोर्ट असाइन करता है. दूसरे नोड में भी दो पोर्ट इस्तेमाल होते हैं. इसलिए, Consol उस नोड को 10302 और 10303 असाइन करता है. यह सभी कॉम्पोनेंट टाइप पर लागू होता है.

जैसा कि आप देख सकते हैं, पोर्ट की असल संख्या टोपोलॉजी पर निर्भर करती है: अगर आपके क्लस्टर में दो Postgres नोड हैं, तो आपको चार पोर्ट खोलने होंगे (दो नोड में से हर एक के लिए दो पोर्ट).

निम्न पर ध्यान दें:

  • Consul प्रॉक्सी, Apigee सेवाओं के लिए इस्तेमाल किए जाने वाले पोर्ट पर नहीं सुन सकतीं.
  • Consul में सिर्फ़ एक पोर्ट पता स्पेस होता है. Consul प्रॉक्सी पोर्ट असाइनमेंट, पूरे क्लस्टर में यूनीक होने चाहिए. इसमें डेटा सेंटर भी शामिल हैं. इसका मतलब है कि अगर होस्ट A पर प्रॉक्सी A, पोर्ट 15000 पर सुनता है, तो होस्ट B पर प्रॉक्सी B, पोर्ट 15000 पर नहीं सुन सकता.
  • इस्तेमाल किए गए पोर्ट की संख्या, टोपोलॉजी के हिसाब से अलग-अलग होती है. इसके बारे में पहले बताया जा चुका है.

एक से ज़्यादा डेटा सेंटर वाले कॉन्फ़िगरेशन में, mTLS का इस्तेमाल करने वाले सभी होस्ट को पोर्ट 8302 भी खोलना होगा.

Apigee mTLS जिन डिफ़ॉल्ट पोर्ट का इस्तेमाल करता है उन्हें पसंद के मुताबिक बनाया जा सकता है. ऐसा करने के बारे में जानने के लिए, प्रॉक्सी पोर्ट रेंज को पसंद के मुताबिक बनाना लेख पढ़ें.

सीमाएं

Apigee mTLS की ये सीमाएं हैं:

  • यह नोड के बीच Cassandra कम्यूनिकेशन (पोर्ट 7000) को एन्क्रिप्ट (सुरक्षित) नहीं करता
  • कॉन्फ़िगरेशन और सेटअप, आइडेमपोटेंट नहीं है. इसका मतलब है कि अगर आपने किसी एक नोड में कोई बदलाव किया है, तो आपको सभी नोड में वही बदलाव करना होगा. सिस्टम, किसी अन्य नोड में आपके लिए वह बदलाव लागू नहीं करता है. ज़्यादा जानकारी के लिए, मौजूदा apigee-mtls कॉन्फ़िगरेशन में बदलाव करना लेख पढ़ें.

शब्दावली

इस सेक्शन में, इन शब्दों का इस्तेमाल किया गया है:

शब्द परिभाषा
क्लस्टर मशीनों का वह ग्रुप जो Private Cloud इंस्टॉलेशन के लिए Edge बनाता है.
Consul Apigee mTLS के लिए इस्तेमाल किया गया सर्विस मेश. Consul, आपके Private Cloud कम्यूनिकेशन को कैसे सुरक्षित करता है, इस बारे में जानने के लिए, Consul का सुरक्षा मॉडल देखें.
mTLS दोनों पक्षों की पुष्टि करने वाला टीएलएस.
सर्विस मेश ओवरले नेटवर्क (या नेटवर्क के अंदर नेटवर्क).
TLS ट्रांज़ैक्शन लेयर सिक्योरिटी. यह इंडस्ट्री स्टैंडर्ड वाला पुष्टि करने का प्रोटोकॉल है. इससे सुरक्षित तरीके से कम्यूनिकेशन किया जा सकता है.