Hashicorp Vault और Apache APISIX: अपनी API सुरक्षा को मजबूत करें

Chao Zhang

Chao Zhang

November 15, 2022

Products

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

डेटा दर्शाता है कि API अब वेब एप्लिकेशन के हमले की सतह का 90% प्रतिनिधित्व करते हैं, जिसका अर्थ है कि API अब प्राथमिक हमले के वेक्टर में से एक है। तो, हम API जोखिमों को कैसे कम कर सकते हैं?

लोग आधुनिक सॉफ्टवेयर आर्किटेक्चर में API गेटवे पैटर्न का चयन कर सकते हैं ताकि API हमलों से बचाव किया जा सके। एक API गेटवे सॉफ्टवेयर सेवा का प्रवेश बिंदु है, जो लोड बैलेंसिंग, सेवा खोज, और API प्रमाणीकरण जैसी सुविधाएं प्रदान करता है। Apache APISIX सर्वश्रेष्ठ API गेटवे में से एक है, जो प्रमाणीकरण, अधिकार प्रबंधन, ACL (एक्सेस कंट्रोल लिस्ट), और IP डिनाय/अलाउ लिस्ट जैसी सुविधाओं के माध्यम से उपयोगकर्ताओं को उनकी API सुरक्षा को मजबूत करने में मदद करता है। उदाहरण के लिए, JWT प्रमाणीकरण API को सुरक्षित करने का एक लोकप्रिय तरीका है। यह API उपभोक्ताओं से JSON वेब टोकन के माध्यम से अपनी पहचान साबित करने के लिए कहता है। ऐसे मामले में, Apache APISIX द्वारा क्रेडेंशियल के बिना या गलत क्रेडेंशियल वाले API अनुरोधों को अस्वीकार कर दिया जाएगा।

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

दुर्भाग्य से, etcd संवेदनशील डेटा की सुरक्षा के लिए डिज़ाइन नहीं किया गया है। एक बार जब कोई अनैतिक व्यक्ति etcd क्लस्टर तक पहुंच प्राप्त कर लेता है, तो उसके अंदर का सभी डेटा उजागर हो जाएगा। यह एक APISIX रूट ऑब्जेक्ट के लिए कोई बड़ी बात नहीं है, लेकिन यह सीक्रेट या X509 प्रमाणपत्रों के प्राइवेट की के लिए घातक हो सकता है। संवेदनशील डेटा की बेहतर सुरक्षा के लिए, Apache APISIX ने संस्करण 2.12.0 से Hashicorp Vault को एकीकृत किया है। तो Hashicorp Vault क्या है?

Hashicorp Vault क्या है?

Hashicorp Vault उपयोगकर्ताओं के सीक्रेट (जैसे डेटाबेस क्रेडेंशियल, पासवर्ड, API कुंजी) को सुरक्षित रूप से सहेजने के लिए एक स्टोरेज इंफ्रास्ट्रक्चर है। यह Amazon Key Management Service और Google Cloud Key Management जैसे कई बाहरी सिस्टम को एकीकृत करने का समर्थन करता है। तकनीकी रूप से, Hashicorp Vault Raft सहमति प्रोटोकॉल के साथ एक वितरित सिस्टम है। आपका डेटा कई बैकअप के साथ सहेजा जाएगा, और आपको डेटा के सिंगल पॉइंट ऑफ फेल्योर की चिंता करने की आवश्यकता नहीं है।

assets.png

लेकिन Hashicorp Vault विशेष क्यों है? एक बार जब आप Hashicorp Vault सर्वर शुरू करते हैं, तो यह सील की गई स्थिति में होता है। आप किसी भी डेटा तक पहुंच नहीं सकते जब तक कि आप इस सर्वर को अनसील नहीं करते। Hashicorp Vault सर्वर को अनसील करने के लिए, आपको कुंजी शेयर (जो आप Hashicorp Vault सर्वर को Shamir Secret Sharing एल्गोरिदम के साथ इनिशियलाइज़ करते समय उत्पन्न होते हैं) का उपयोग करके अनसील ऑपरेशन को बार-बार निष्पादित करने की आवश्यकता होती है। समय कुंजी शेयर की संख्या पर निर्भर करता है ((X/2)+1 यदि कुंजी शेयर की संख्या X है)। इसके अलावा, यदि आप किसी भी संदिग्ध संकेत को देखते हैं कि यह किसी हमले का शिकार हो रहा है, तो आप रनटाइम में Hashicorp Vault सर्वर को फिर से सील कर सकते हैं।

Apache APISIX Hashicorp Vault का उपयोग कैसे करता है?

वर्तमान में, Apache APISIX ने Hashicorp Vault को अपने jwt-auth प्लगइन में एकीकृत किया है। jwt-auth प्लगइन का उपयोग JWT प्रमाणीकरण करने के लिए किया जाता है।

APISIX-Vault-Communication.png

Hashicorp Vault और Apache APISIX के बीच बुनियादी इंटरैक्शन लॉजिक हैं:

  1. एक API अनुरोध आता है
  2. JWT Auth प्लगइन चलता है
  3. Apache APISIX Hashicorp Vault से सीक्रेट प्राप्त करने का प्रयास करता है
  4. Hashicorp Vault सीक्रेट लौटाता है, और Apache APISIX इसे कैश करता है
  5. Apache APISIX JSON वेब टोकन को वैलिडेट करने के लिए सीक्रेट का उपयोग करता है
  6. प्रमाणीकरण पास हो जाता है, और API अनुरोध बैकएंड सेवा को फॉरवर्ड किया जाता है
  7. API प्रतिक्रिया वापस भेजें

आप Apache APISIX कंज्यूमर ऑब्जेक्ट में jwt-auth प्लगइन को vault विकल्प के साथ कॉन्फ़िगर कर सकते हैं ताकि Apache APISIX को Hashicorp Vault से सीक्रेट स्टोर/फ़ेच करने के लिए कहा जा सके। Apache APISIX कंज्यूमर API कंज्यूमर का एक एब्स्ट्रक्शन है। API क्रेडेंशियल को कंज्यूमर स्तर पर कॉन्फ़िगर किया जा सकता है।

curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "jack", "plugins": { "jwt-auth": { "key": "your-api-key", "vault": {} } } }'

Hashicorp Vault कॉन्फ़िगरेशन Apache APISIX config.yaml में सेट किया जा सकता है।

vault: host: 'http://0.0.0.0:8200' timeout: 10 token: 's.KUWFVhIXgoRuQbbp3j1eMVGa' prefix: 'kv/apisix'

यहां ध्यान देना चाहिए कि टोकन को पथ kv/apisix/consumer के लिए पढ़ने की अनुमति होनी चाहिए, जो Apache APISIX Admin API द्वारा सीक्रेट सहेजने का स्थान है।

path "kv/apisix/consumer/*" { capabilities = ["read"] }

जब उस कंज्यूमर से API अनुरोध आते हैं, तो Apache APISIX कॉन्फ़िगर किए गए Hashicorp Vault सर्वर से सीक्रेट प्राप्त करने का प्रयास करेगा (और परिणाम को मेमोरी में कैश करेगा) और इस सीक्रेट का उपयोग JSON वेब टोकन को वैलिडेट करने के लिए करेगा।

Apache APISIX और Hashicorp Vault के बीच एकीकरण का भविष्य

Apache APISIX में कई प्रकार के संवेदनशील डेटा हैं, लेकिन अभी केवल JSON वेब टोकन सीक्रेट को Hashicorp Vault में सहेजा जा सकता है। हालांकि, भविष्य में, सभी API क्रेडेंशियल, जैसे API कुंजी, और उपयोगकर्ता पासवर्ड, को Hashicorp Vault में सहेजा जा सकता है। इसके अलावा, प्रमाणपत्र की प्राइवेट कुंजी और Admin API कुंजी को भी वहां सहेजा जा सकता है। यह सभी डेटा कॉन्फ़िगरेशन से अलग हो जाएगा। इस तरह, आपकी API सुरक्षा न केवल इसलिए मजबूत होती है क्योंकि आप API प्रमाणीकरण का उपयोग करते हैं, बल्कि इसलिए भी क्योंकि API क्रेडेंशियल को उचित रूप से सुरक्षित किया जाता है।

Tags: