API Gateway के साथ Secret Manager का उपयोग कैसे करें

Shirui Zhao

January 13, 2023

Technology

सीक्रेट क्या है?

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

सामान्य प्रकार के सीक्रेट में शामिल हैं:

  • एन्क्रिप्शन कुंजियाँ
  • क्लाउड सेवा एक्सेस क्रेडेंशियल्स
  • एप्लिकेशन प्रोग्रामिंग इंटरफेस (API) कुंजियाँ
  • एक्सेस टोकन
  • SSH (सुरक्षित शेल) कुंजियाँ

सीक्रेट मैनेजर

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

सीक्रेट मैनेजर

HashiCorp Vault के अलावा, AWS, Google, और Azure जैसे क्लाउड प्रदाता भी सीक्रेट मैनेजर सेवाएं प्रदान करते हैं।

सीक्रेट मैनेजर का उपयोग करके एप्लिकेशन बनाने से न केवल सुरक्षा बढ़ती है बल्कि निम्नलिखित कार्य भी प्रदान किए जाते हैं:

  • सीक्रेट को आसानी से कई मशीनों पर अपडेट करने की अनुमति देता है जिससे एप्लिकेशन प्रभावित नहीं होता।
  • डेवलपर्स को सीक्रेट के संग्रहण पर अधिक ध्यान देने की आवश्यकता नहीं होती और वे व्यापार तर्क पर अधिक ध्यान केंद्रित कर सकते हैं।
  • सीक्रेट रोटेशन और रद्दीकरण को एप्लिकेशन को पुनर्स्थापित या बाधित किए बिना किया जा सकता है।
  • सीक्रेट मैनेजर लचीली और विस्तृत ऑडिट लॉग प्रदान करता है जो सभी उपयोगकर्ता एक्सेस के इतिहास को ट्रैक कर सकता है और ऑडिट और अनुपालन आवश्यकताओं को आसानी से पूरा कर सकता है।

API गेटवे में सीक्रेट मैनेजर का उपयोग

व्यापार ट्रैफ़िक के प्रवेश द्वार के रूप में, API गेटवे में अक्सर बड़ी मात्रा में सीक्रेट जानकारी होती है, जैसे कि प्रमाणीकरण के लिए API कुंजियाँ और टोकन। इसलिए API गेटवे में सीक्रेट मैनेजर को एकीकृत करना अत्यंत महत्वपूर्ण है

API गेटवे में सीक्रेट का उपयोग करने के परिदृश्य

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

API गेटवे में सीक्रेट मैनेजर को एकीकृत करें

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

API गेटवे सीक्रेट मैनेजर

हम नीचे Apache APISIX का उदाहरण के रूप में उपयोग करेंगे ताकि दिखाया जा सके कि API गेटवे में Key Auth के लिए पूर्वनिर्धारित कुंजी को सीक्रेट मैनेजर में कैसे संग्रहीत किया जाए।

Apache APISIX में सीक्रेट मैनेजर का उपयोग करने का उदाहरण

Apache APISIX एक गतिशील, वास्तविक समय, उच्च प्रदर्शन वाला API गेटवे है जो लोड बैलेंसिंग, डायनामिक अपस्ट्रीम, कैनरी रिलीज़, सूक्ष्म रूटिंग, दर सीमित करना, सेवा डिग्रेडेशन, सर्किट ब्रेकर, प्रमाणीकरण और प्रेक्षणीयता जैसी सैकड़ों कार्यक्षमताएं प्रदान करता है।

संस्करण 3.1.0 में, Apache APISIX ने विभिन्न सीक्रेट मैनेजर सेवाओं को एकीकृत करने के लिए APISIX Secret पेश किया। इसका कार्य अनुक्रम निम्नलिखित है:

APISIX सीक्रेट मैनेजर

नीचे, हम Vault को सीक्रेट मैनेजर सेवा के रूप में उपयोग करेंगे। हम Key Auth प्रमाणीकरण का उपयोग करके दिखाएंगे कि Apache APISIX में कुंजियों को सीक्रेट मैनेजर में कैसे सहेजा जाए।

Vault में कुंजियाँ बनाएँ

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

Vault में संबंधित कुंजी बनाने के लिए, आप निम्नलिखित कमांड का उपयोग कर सकते हैं:

vault secrets enable -version=1 -path=apisix kv vault kv put apisix/jack auth-key=secret-key

उपरोक्त कमांड को निष्पादित करने के बाद, आपको apisix/jack पथ के तहत auth-key नामक एक कुंजी मिलेगी, जिसका मूल्य secret-key है।

APISIX में कॉन्फ़िगरेशन

सबसे पहले, Admin API के माध्यम से सीक्रेट संसाधन जोड़ें और Vault के लिए पता और अन्य कनेक्शन जानकारी कॉन्फ़िगर करें:

  1. APISIX सीक्रेट संसाधन आईडी "gateway" है, संदर्भ https://apisix.apache.org/docs/apisix/terminology/secret/#usage-1
  2. prefix फ़ील्ड Vault में कुंजी का पथ है, और token फ़ील्ड Vault टोकन है।
curl http://127.0.0.1:9180/apisix/admin/secrets/vault/gateway \ -H 'X-API-KEY: Your-API-KEY' -X PUT -d ' { "uri": "https://127.0.0.1:8200", "prefix": "apisix", "token": "hvs.chjDFWvZRcihoq2vpSsVenmR" }'

फिर, key-auth प्लगइन का उपयोग करके एक उपभोक्ता बनाएं और संबंधित रूट या सेवा के लिए Key Auth प्रमाणीकरण करें। कुंजी फ़ील्ड APISIX सीक्रेट संसाधन को संदर्भित करती है:

curl http://127.0.0.1:9180/apisix/admin/consumers \ -H 'X-API-KEY: Your-API-KEY' -X PUT -d ' { "username": "jack", "plugins": { "key-auth": { "key": "$secret://vault/gateway/jack/auth-key" } } }'

उपरोक्त दो चरणों के माध्यम से, जब उपयोगकर्ता का अनुरोध key-auth प्लगइन से टकराता है, तो Secret घटक उपयोगकर्ता-कॉन्फ़िगर किए गए सीक्रेट मैनेजर को प्रदान किए गए इंटरफ़ेस के माध्यम से Vault में कुंजी का वास्तविक मूल्य प्राप्त करेगा। यदि कुंजी का मूल्य नहीं मिलता है, तो प्लगइन त्रुटि रिकॉर्ड करेगा और Key Auth सत्यापन करने में विफल होगा।

फिर Key Auth प्रमाणीकरण करने के लिए एक रूट बनाएं:

curl -i "http://127.0.0.1:9180/apisix/admin/routes" -H 'X-API-KEY: Your-API-KEY' -X PUT -d ' { "id": "getting-started-ip", "uri": "/ip", "plugins": { "key-auth": {} }, "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }'

अंत में, API गेटवे को बिना कुंजी के अनुरोध भेजें और परिणाम सत्यापित करें:

curl -i "http://127.0.0.1:9080/ip"

परिणाम निम्नलिखित है:

HTTP/1.1 401 Unauthorized ... {"message":"Missing API key found in request"}

और फिर, कुंजी के साथ अनुरोध भेजें और परिणाम सत्यापित करें:

curl -i "http://127.0.0.1:9080/ip" -H 'apikey: secret-key'

परिणाम निम्नलिखित के समान होगा:

HTTP/1.1 200 OK ... { "origin": "127.0.0.1, 59.172.90.243" }

इसके अलावा, Apache APISIX ने पर्यावरण चर को एक सरल सीक्रेट मैनेजर सेवा में विस्तारित किया है, और Vault से कनेक्ट करने के लिए APISIX टोकन को भी पर्यावरण चर में संग्रहीत किया जा सकता है। इसलिए, APISIX शुरू करने से पहले, आप निम्नलिखित कमांड के साथ पर्यावरण चर सेट कर सकते हैं:

export VAULT_TOKEN="root"

Secret संसाधन जोड़ते समय पर्यावरण चर का संदर्भ लें:

curl http://127.0.0.1:9180/apisix/admin/secrets/vault/1 -H 'X-API-KEY: Your-API-KEY' -X PUT -d ' { "uri": "https://127.0.0.1:8200", "prefix": "apisix", "token": "$ENV://VAULT_TOKEN" }'

उपरोक्त चरणों के माध्यम से, आप Key Auth प्रमाणीकरण के लिए आवश्यक कुंजी को Vault में संग्रहीत कर सकते हैं, जबकि प्लगइन को कॉन्फ़िगर करते समय इसे सादे पाठ में प्रदर्शित नहीं करना पड़ता है।

निष्कर्ष

API गेटवे में, बड़ी मात्रा में सीक्रेट जानकारी होती है। सीक्रेट मैनेजर का उपयोग करके सीक्रेट को प्रबंधित करने से यह सुनिश्चित होता है कि API गेटवे में कोई सादे पाठ में सीक्रेट जानकारी नहीं होती है, जिससे API गेटवे की सुरक्षा और स्थिरता प्रभावी ढंग से बढ़ती है। दुनिया के सबसे सक्रिय ओपन-सोर्स API गेटवे के रूप में, Apache APISIX भी सीक्रेट मैनेजर का बहुत अच्छा समर्थन करता है। इस लेख में Key Auth प्रमाणीकरण का उपयोग करके दिखाया गया है कि APISIX में कुंजी जानकारी को प्रबंधित करने के लिए सीक्रेट मैनेजर का उपयोग कैसे किया जाए।

API गेटवे के बारे में अधिक जानकारी के लिए, कृपया हमारे ब्लॉग पर जाएं या हमसे संपर्क करें

Tags: