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 का यूज़र इंटरफ़ेस (यूआई) एसएमटीपी (सिर्फ़ बाहरी आईडीपी के लिए)
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 सर्वर (ZooKeeper नोड) 8300 यह क्लस्टर में मौजूद सभी Consul सर्वर को कनेक्ट करता है. RPC
8301 यह क्लस्टर में सदस्यता और ब्रॉडकास्ट मैसेज को मैनेज करता है. यूडीपी/टीसीपी
8302 WAN पोर्ट, जो मल्टी-डेटा सेंटर कॉन्फ़िगरेशन में सदस्यता और ब्रॉडकास्ट मैसेज को मैनेज करता है. यूडीपी/टीसीपी
8500 यह एक ही नोड पर मौजूद प्रोसेस से, Consul Server के एपीआई के एचटीटीपी कनेक्शन को मैनेज करता है.

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

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

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

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

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

Apigee Component रेंज हर नोड के लिए ज़रूरी पोर्ट की संख्या
Apigee mTLS 10700 से 10799 1
Cassandra 10100 से 10199 2
मैसेज प्रोसेसर 10500 से 10599 2
OpenLDAP 10200 से 10299 1
Postgres 10300 से 10399 3
Qpid 10400 से 10499 2
राऊटर 10600 से 10699 2
ZooKeeper 10000 से 10099 3

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

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

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

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

मल्टी-डेटा सेंटर कॉन्फ़िगरेशन में, एमटीएलएस चलाने वाले सभी होस्ट को पोर्ट 8302 भी खोलना होगा.

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

सीमाएं

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

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

शब्दावली

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

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