API Gateway में सुरक्षित API

Zeping Bai

November 4, 2022

Technology

प्रस्तावना

जून 2021 में, लगभग 92% LinkedIn उपयोगकर्ताओं का डेटा सार्वजनिक APIs के माध्यम से लीक हो गया, जिनमें सुरक्षा नियंत्रणों की कमी थी। यह डेटा, जो ब्लैक मार्केट पर बेचा गया, इसमें 700 मिलियन उपयोगकर्ता नाम, व्यक्तिगत डेटा, ईमेल पते, फोन नंबर और अन्य विवरण शामिल थे। हालांकि LinkedIn इस घटना को सार्वजनिक डेटा की क्रॉलिंग के रूप में देखता है न कि अवैध पहुंच के रूप में, फिर भी यह API सुरक्षा उपायों के महत्व को उजागर करता है।

एप्लिकेशन सेवाएं प्रदान करने के लिए बाहरी इंटरफेस के रूप में, APIs लगातार बाहरी ट्रैफिक के संपर्क में रहते हैं, जहां वे दुर्भावनापूर्ण हमलावरों का सामना करते हैं जो सेवा से इनकार, इंजेक्शन और ज्ञात कमजोरियों का उपयोग करके हमला करते हैं। उदाहरण के लिए, दिसंबर 2020 में हमलावरों ने log4j 2 की कमजोरियों का उपयोग करके APIs के खिलाफ अनकॉन्फ़िगर्ड हमले किए। इसलिए, इन दुर्भावनापूर्ण हमलावरों को बाहर रखने के लिए API की क्षमता को मजबूत करना आवश्यक है। हालांकि, API को सुरक्षित करने के उपाय अपनाने से पहले, आइए पहले समझते हैं कि API क्या है।

API क्या है?

पारंपरिक API (एप्लिकेशन प्रोग्रामिंग इंटरफेस) सॉफ्टवेयर के स्थिर या गतिशील लिंक लाइब्रेरीज़ को उसके कार्यों को आमंत्रित करने के लिए प्रतिनिधित्व करता है। डेवलपर्स मौजूदा सॉफ्टवेयर द्वारा प्रदान किए गए कार्यों का पुन: उपयोग कर सकते हैं, जैसे कि ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए TCP/IP, उसके APIs के आधार पर।

सॉफ्टवेयर सिस्टम और नेटवर्क के विकास के साथ, "API" शब्द अब नेटवर्क के माध्यम से एक्सेस किए जाने वाले सिस्टम इंटरफेस को संदर्भित करता है। क्लाइंट HTTP जैसे प्रोटोकॉल का उपयोग करके इन इंटरफेस को कॉल करते हैं ताकि क्लाइंट कार्यों को पूरा किया जा सके, जैसे कि मौसम API से मौसम की जानकारी प्राप्त करना।

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

API सुरक्षा क्या है?

API के अवलोकन के बाद, अब हम API सुरक्षा का परिचय देंगे। API सुरक्षा में तीन मुख्य दृष्टिकोण शामिल हैं:

सूचना सुरक्षा (InfoSec): सूचना के दृष्टिकोण से, सुनिश्चित करें कि सूचना अपने पूरे जीवन चक्र के दौरान सुरक्षित रही है, जिसमें इसका निर्माण, प्रसारण, भंडारण और विनाश शामिल है।

नेटवर्क सुरक्षा (NetSec): नेटवर्क के दृष्टिकोण से, सुनिश्चित करें कि नेटवर्क पर प्रसारित डेटा को न तो सुना जा सकता है और न ही छेड़छाड़ की जा सकती है, और कोई अनधिकृत व्यक्ति नेटवर्क तक पहुंच नहीं सकता है।

एप्लिकेशन सुरक्षा (AppSec): एप्लिकेशन सिस्टम के दृष्टिकोण से, सुनिश्चित करें कि विकसित एप्लिकेशन दुर्भावनापूर्ण हमलों को रोक सकते हैं।

API सुरक्षा इन तीन पहलुओं का प्रतिच्छेदन है, जिसका अर्थ है कि यदि आप API सुरक्षा में अच्छा काम करना चाहते हैं तो ये तीनों पहलू अनिवार्य हैं।

image.png

सामान्य API सुरक्षा हमले

OWASP, ओपन वेब एप्लिकेशन सुरक्षा प्रोजेक्ट, ने 10 सामान्य API सुरक्षा मुद्दों की एक सूची प्रकाशित की है OWASP API Security Project | OWASP Foundation

इसमें निम्नलिखित मुद्दे शामिल हैं:

टूटी हुई ऑब्जेक्ट स्तरीय प्राधिकरण: उपयोगकर्ता उन डेटा ऑब्जेक्ट्स तक पहुंचते हैं जिनके लिए उनके पास पहुंच नहीं है।

टूटी हुई उपयोगकर्ता प्रमाणीकरण: प्रमाणीकरण सेवा कार्यान्वयन त्रुटि उपयोगकर्ताओं को प्रमाणीकरण तंत्र को बायपास करके API तक अवैध रूप से पहुंचने की अनुमति देती है।

अत्यधिक डेटा एक्सपोजर: उपयोगकर्ताओं को अत्यधिक संवेदनशील डेटा प्राप्त करने की अनुमति देना, जो प्रतिबंधित होना चाहिए।

संसाधन और दर सीमितीकरण की कमी: ग्राहक की मांगों को पूरा करने के लिए आवश्यक संसाधनों की संख्या और यथार्थवादी अनुरोध मात्रा पर प्रतिबंधों की कमी।

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

सुरक्षा गलत कॉन्फ़िगरेशन: API के लिए गलत तरीके से कॉन्फ़िगर किए गए सुरक्षा उपाय।

इंजेक्शन: अविश्वसनीय डेटा इनपुट SQL, कमांड इंजेक्शन, अप्रत्याशित कमांड निष्पादन या डेटा एक्सेस को ट्रिगर करता है।

असंगत संपत्ति प्रबंधन: API संसाधनों का गलत तरीके से प्रबंधन करना, जैसे कि परीक्षण वातावरण के लिए APIs जारी करना या पुराने गलत ऑफ़लाइन API संस्करण।

अपर्याप्त लॉगिंग और मॉनिटरिंग: API एक्सेस के लिए लॉगिंग और मॉनिटरिंग टूल्स की अनुपस्थिति के कारण सुरक्षा असामान्यताओं की पहचान करना चुनौतीपूर्ण है।

API सुरक्षा से संबंधित सामान्य मुद्दों को देखने के बाद, API की सुरक्षा के लिए क्या कार्यान्वित किया जाना चाहिए?

अपने API की सुरक्षा कैसे करें?

API की सुरक्षा के संदर्भ में, तीन दृष्टिकोणों से उपाय करना भी संभव है:

InfoSec: हम कानूनी नीति और सुरक्षा आवश्यकताओं के अनुपालन में सूचना के लिए एक गोपनीयता प्रणाली बना सकते हैं ताकि व्यक्तिगत जानकारी का खुलासा न हो।

NetSec: डेटा प्रसारण का एन्क्रिप्शन और सत्यापन आवश्यक है।

AppSec: हमें एप्लिकेशन की सुरक्षा को मजबूत करने की आवश्यकता है।

यहां API सुरक्षा के लिए कुछ अतिरिक्त प्रथाएं दी गई हैं।

निरंतर एन्क्रिप्शन: हम अनियंत्रित नेटवर्क के कारण डेटा ईव्सड्रॉपिंग और डेटा छेड़छाड़ की स्थितियों को रोक सकते हैं, पूर्ण-प्रवाह TLS सेटअप के माध्यम से। इसके अलावा, अनधिकृत पहुंच को रोकने के लिए क्लाइंट साइड की सत्यता को सत्यापित करने के लिए mTLS को सक्षम करना भी आवश्यक है।

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

छोटी अनुमति ग्रैन्युलैरिटी: API और डेटा एक्सेस के लिए न्यूनतम अनुमतियां निर्दिष्ट करें ताकि अनधिकृत पहुंच की संभावना को टाला जा सके।

इनपुट सत्यापन: क्लाइंट के इनपुट मानों पर कभी भरोसा न करें। आपको क्लाइंट के इनपुट मानों को सत्यापित करना चाहिए ताकि यह सुनिश्चित हो सके कि वे सुरक्षा आवश्यकताओं को पूरा करते हैं।

दर सीमितीकरण: API एक्सेस की गति को सीमित करें। यह उपाय सेवा से इनकार के हमलों को रोकता है, जो तब होता है जब सिस्टम अनुरोधों से अधिभारित हो जाता है और उन्हें एक साथ संभाल नहीं सकता है।

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

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

हम एप्लिकेशन सेवाओं को खतरे में डाले बिना सुरक्षा उपायों को कैसे लागू कर सकते हैं?

API गेटवे

API गेटवे सिस्टम परिवर्तन के बाहर एक नया मार्ग प्रदान करते हैं, जो परिवर्तन की लागत को काफी कम करता है और केंद्रीकृत और एकीकृत इनग्रेस ट्रैफिक प्रबंधन प्रदान करता है। API गेटवे द्वारा समृद्ध सुरक्षा सुविधाएं भी प्रदान की जाती हैं, जो हमें अनधिकृत पहुंच को रोकने और रिकॉर्ड करने में सक्षम बनाती हैं।

Apache APISIX का उदाहरण उपयोग करके, निम्नलिखित अनुभाग API सुरक्षा के लिए कई API गेटवे एप्लिकेशन परिदृश्यों का वर्णन करेगा।

एन्क्रिप्शन (TLS/mTLS)

आप न केवल API के लिए TLS को सक्षम कर सकते हैं ताकि HTTPS एक्सेस प्रदान किया जा सके, बल्कि mTLS को सक्षम करके क्लाइंट की पहचान को सत्यापित भी कर सकते हैं। स्वाभाविक रूप से, आप अपस्ट्रीम सेवाओं के लिए TLS/mTLS को सक्षम कर सकते हैं ताकि आंतरिक नेटवर्क के माध्यम से यातायात की सुरक्षा सुनिश्चित की जा सके। आप mTLS मैनुअल को देखकर आवश्यक कार्यक्षमता को सक्षम कर सकते हैं।

पहचान सत्यापन

सभी कनेक्शन एन्क्रिप्ट किए जा सकते हैं, लेकिन यह API की सुरक्षा की गारंटी नहीं देता है। इसलिए, वास्तविक व्यावसायिक सेटिंग्स में, हमें प्रमाणीकरण से जुड़े घटकों को शामिल करना चाहिए। इस समस्या को हल करने के लिए, APISIX प्रमाणीकरण से जुड़े विभिन्न प्लगइन्स प्रदान करता है जो बाहरी प्रमाणीकरण सेवाओं के साथ आसानी से इंटरफेस कर सकते हैं या सीधे गेटवे के माध्यम से। ये प्लगइन्स सरल LDAP, OpenID Connect, और Open Policy Agent से लेकर अधिक जटिल Basic Auth, Key Auth, JWT Auth, और Forward Auth तक हो सकते हैं।

दर सीमितीकरण

संसाधनों की कमी और दर सीमितीकरण दो सामान्य हमले हैं। इन स्थितियों के लिए, गेटवे आमतौर पर दर-सीमितीकरण से संबंधित प्लगइन्स शामिल करते हैं; Apache APISIX भी ऐसा करता है। यह तीन प्लगइन्स प्रदान करता है: limit-count, limit-req, और limit-conn, जो API अनुरोध गति, अनुरोध माप और कनेक्शन सीमितीकरण सुविधाएं प्रदान करते हैं। वे API एक्सेस दबाव को प्रभावी ढंग से नियंत्रित करने और सिस्टम को अनियंत्रित अनुरोधों से अधिभारित होने से रोकने में मदद कर सकते हैं।

सुरक्षा प्रतिबंध

APISIX CORS और CSRF प्लगइन्स प्रदान करता है ताकि API के लिए क्रॉस-डोमेन और क्रॉस-साइट अनुरोध जालसाज़ी सुरक्षा प्रदान की जा सके, जिससे इसकी सुरक्षा क्षमता को और बढ़ाया जा सके। इसके अलावा, इसके प्रतिबंध प्लगइन्स IP, UA, Referer, और URI को ब्लॉक करने की क्षमता प्रदान करते हैं, जो अधिकांश API हमलों का मुकाबला कर सकते हैं।

इनपुट सत्यापन

APISIX request-validation प्लगइन प्रदान करता है, जो API प्रदाताओं को jsonschema के माध्यम से उपयोगकर्ता इनपुट को सत्यापित करने की अनुमति देता है। संरचित डेटा और सत्यापन नियम विवरण भाषा का उपयोग डेटा सत्यापन के लिए अच्छी तरह से किया जा सकता है।

अवलोकनशीलता

उपरोक्त विधियां सभी API की सुरक्षा के तरीके हैं। हालांकि, कोई भी सिस्टम पूरी तरह से सुरक्षित नहीं है। एक बार सिस्टम पर हमला होने के बाद, हमें हमले के कारण का त्वरित निर्धारण करना चाहिए और हमले से होने वाले और नुकसान को रोकना चाहिए। इसलिए, APISIX विभिन्न गंतव्यों पर लॉग भेजने के लिए विभिन्न लॉगिंग प्लगइन्स भी प्रदान करता है, जिसमें Kafka, Clickhouse, और क्लाउड प्रदाताओं द्वारा प्रदान की गई लॉगिंग-एज़-ए-सर्विस समाधान जैसे Google Cloud, Splunk, आदि शामिल हैं।

इसके अलावा, APISIX Skywalking, OpenTelemetry, और अन्य ट्रेसिंग प्रोग्राम्स के साथ डॉकिंग करने के लिए लिंक-ट्रेसिंग कार्यक्षमता प्रदान करता है।

इसके अतिरिक्त, APISIX Prometheus प्लगइन प्रदान करता है, जो API अनुरोधों से संबंधित मेट्रिक्स की गणना और निर्यात कर सकता है ताकि प्रदर्शन समस्याओं की पहचान की जा सके और सिस्टमिक सेवा व्यवधानों को रोका जा सके।

हम सिस्टम को पर्याप्त रूप से अवलोकनशील बनाकर संभावित सुरक्षा घटनाओं की समय पर पहचान कर सकते हैं।

प्रोग्रामिंग क्षमताएं

अंत में, APISIX 0-day कमजोरियों को संबोधित करने के लिए एक serverless प्लगइन भी प्रदान करता है, जो उपयोगकर्ताओं को Lua कोड का उपयोग करके कुछ तर्क निष्पादित करने की अनुमति देता है जब अनुरोध आता है। हम इस कार्यक्षमता का लाभ उठाकर कुछ 0-day कमजोरियों को अस्थायी रूप से ब्लॉक कर सकते हैं जैसे ही वे उत्पन्न होती हैं।

निष्कर्ष

API सुरक्षा सेवा प्रदाताओं के लिए आवश्यक है, इसलिए डेवलपर्स को इसे अद्यतन रखने का प्रयास करना चाहिए। यह लेख Apache APISIX का उदाहरण उपयोग करके विभिन्न एप्लिकेशन सेटिंग्स में API गेटवे का उपयोग कैसे किया जा सकता है, यह दिखाता है, जो सिस्टम संशोधन से अलग एक नई रणनीति है जो डेवलपर्स को सुरक्षा चिंताओं की लागत को कम करने में मदद करती है।

Tags: