6

मैं एपीआई गेटवे के सामने डब्ल्यूएएफ डालना चाहता हूं, और (little) info के साथ मुझे लगता है कि एपीआईजी के सामने, डब्ल्यूएएफ सक्षम के साथ मैन्युअल रूप से अतिरिक्त क्लाउडफ़्रंट वितरण डालकर संभव है। यह शर्म की बात है, खासकर जब से एपीआईजी अब कस्टम डोमेन का समर्थन करता है, लेकिन इसे काम करना चाहिए।एडब्ल्यूएस क्लाउडफ़्रंट (डब्ल्यूएएफ के साथ) + एपीआई गेटवे: क्लाउडफ़्रंट के माध्यम से पहुंच को कैसे बल देना है?

अब अस्पष्ट होने की बजाय समाधान को सुरक्षित बनाने के लिए, मैं यह लागू करना चाहता हूं कि एपीआई केवल क्लाउडफ़्रंट डिस्ट्रो के माध्यम से पहुंचा जा सके। ऐसा करने का सबसे अच्छा विकल्प क्या है?

  • मैं उम्मीद कर रहा था कि 'मूल पहुंच पहचान' का उपयोग एस 3 के समान ही हो, लेकिन यह न देखें कि यह कैसे करें।
  • यदि मैं क्लाउडफ़्रंट डिस्ट्रो में आईएएम उपयोगकर्ता (या भूमिका?) असाइन कर सकता हूं, तो मैं एपीआईजी आईएएम सुविधा का उपयोग कर सकता हूं, लेकिन मुझे नहीं लगता कि यह कैसे किया जा सकता है।
  • मुझे एपीआईजी में एपीआई कुंजी की आवश्यकता हो सकती है, और इसे क्लाउडफ़्रंट से मूल कस्टम हेडर के रूप में पास कर सकता है। यह तब तक काम कर सकता है जब तक कि हम किसी अन्य उद्देश्य के लिए एपीआई कुंजी का उपयोग नहीं करना चाहते हैं, इसलिए मैं इसके बारे में पूरी तरह से खुश नहीं हूं।
  • एक डमी (!) कस्टम प्राधिकरण का उपयोग किया जा सकता है, टोकन सत्यापन अभिव्यक्ति वास्तव में क्लाउडफ़्रंट से मूल कस्टम शीर्षलेख के रूप में पारित एक रहस्य की जांच कर रहा है। काम करना चाहिए, यह अधिक लचीला है, लेकिन थोड़ा गंदे ... या नहीं?

कोई बेहतर विचार? या शायद यह करने का "सही तरीका" मौजूद है लेकिन मैंने इसे अनदेखा किया?

+1

बुलेट 1 और 2 कोई नहीं हैं। क्लाउडफ्रंट आईएएम भूमिकाओं/उपयोगकर्ताओं के मूल पहुंच पहचान * के बजाय * उपयोग करता है, लेकिन यह केवल एस 3 पर लागू होता है ... इसलिए गोलियां 3 और 4 विजेता हैं। मुझे यह स्वीकार करने में शर्म आती है कि हालांकि 4 मेरे लिए स्पष्ट था, मैंने 3 के बारे में नहीं सोचा था, जो तब तक बेहतर लगता है जब तक आप एपीआई कुंजी नहीं चाहते। –

उत्तर

4

मैं एपीआई गेटवे से हूं।

दुर्भाग्यवश, हमारे पास अब तक का सबसे अच्छा समाधान क्लाउडफ्रंट में मूल कस्टम हेडर इंजेक्ट करना है और इसे एक कस्टम प्राधिकरण (आपके प्रश्न में विकल्प 4) में मान्य करना है।

हम पहले से ही इस सीमा के बारे में जानते हैं और बहुत अच्छा कामकाज नहीं जानते हैं। हम भविष्य में बेहतर डब्ल्यूएएफ एकीकरण प्रदान करना चाहते हैं, लेकिन हमारे पास ईटीए नहीं है।

+2

आपको पता नहीं है कि यह हमारे लिए कितनी परेशानी है। कृपया डब्ल्यूएएफ एकीकरण जोड़ें एपीआई गेटवे ASAP – sscarduzio

+3

अब आप क्षेत्रीय डोमेन नामों का उपयोग कर सकते हैं और क्षेत्रीय डोमेन एंडपॉइंट के सामने अपना स्वयं का क्लाउडफ्रंट वितरण बना सकते हैं। आप अपने क्लाउडफ्रंट वितरण में डब्ल्यूएएफ सेट कर सकते हैं। अधिक जानकारी के लिए, https://aws.amazon.com/about-aws/whats-new/2017/11/amazon-api-gateway-supports-regional-api-endpoints/ – Balaji

+0

@ बालाजी मैं अधिक जानकारी की सराहना करता हूं यह कैसे कॉन्फ़िगर किया जाना चाहिए। मैं वास्तव में इन चीजों, डब्ल्यूएएफ, क्लाउडफ्रंट, एपीआईजी क्षेत्रीय के साथ कर रहा हूँ। क्लाउडफ्रंट पर मेरा DNS अंक और डब्ल्यूएएफ नियमों के बाहर नेटवर्क यातायात को सही ढंग से अवरुद्ध करता है। हालांकि, मैं अभी भी 4 जी पर अपने फोन से एपीआईजी एंडपॉइंट तक पहुंच सकता हूं ... –

1

आप डब्ल्यूएएफ के साथ वितरण के लिए कस्टम डोमेन नाम और बिंदु DNS का उपयोग कर सकते हैं। मूल एपीआई गेटवे वितरण के लिए अनुरोध सीधे काम नहीं करेंगे।

+1

यह बिल्कुल सही नहीं है, क्योंकि एपीआई से जुड़े छुपे हुए क्लाउडफ्रंट वितरण से जुड़े कस्टम डोमेन नाम के बीच एक संघर्ष है, और क्लाउडफ्रंट वितरण से जुड़े एक ही कस्टम डोमेन नाम के साथ आप DNS बनाते हैं और इंगित करते हैं। वैश्विक स्तर पर केवल एक क्लाउडफ्रंट वितरण, किसी दिए गए डोमेन नाम से जोड़ा जा सकता है। –

+0

@ माइकल अधिक या कम तरफ: मैंने कभी यह महसूस नहीं किया, लेकिन यह जानना अच्छा है। रिकॉर्ड्स के लिए, "com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException में इस परिणाम को आजमाएं: आपके द्वारा प्रदान किए गए एक या अधिक सीएनएन पहले से ही एक अलग संसाधन से जुड़े हुए हैं। (सेवा: AmazonCloudFront; स्थिति कोड: 40 9; त्रुटि कोड: CNAMEAlreadyExists; ... " –

+1

@Vitalii हालांकि यह काम नहीं कर सकता है, मुझे कहना होगा कि मुझे आपका बिंदु नहीं दिख रहा है: यदि आप एपीआईजी में एक कस्टम डोमेन नाम बनाते हैं, तो आप अभी भी एपीआई को इसके https: // xxx.execute-api.eu-west-1.amazonaws.com एंडपॉइंट, दाएं? –

1

दूसरों द्वारा उल्लिखित एपीआई गेटवे में कस्टम लेखक का उपयोग करने का "सही" तरीका होगा।

"सस्ता" तरीका बुलेट 3, एक एपीआई कुंजी होगा। यदि आप डीडीओएस हमले को रोकने की कोशिश कर रहे थे तो आप शायद केवल वफ़ -> क्लाउडफ़्रंट -> एपीआई गेटवे प्रावधान करेंगे। तो अगर किसी ने आपके एपीआई गेटवे यूआरएल की खोज की और क्लाउडफ्रंट के बजाय डीडीओ का फैसला किया, तो एक कस्टम लेखक का मतलब है कि अब आप लैम्ब्डा पर हमले का शिकार कर रहे हैं। एपी गेटवे प्रति सेकंड 10k से अधिक अनुरोधों को संभाल सकता है, डिफ़ॉल्ट लैम्ब्डा सीमा प्रति सेकंड 100 है। यहां तक ​​कि अगर आपको अपनी सीमा बढ़ाने के लिए अमेज़ॅन मिल गया है, तो क्या आप लगातार हमले के लिए 10k लैम्ब्डा प्रति सेकेंड के लिए भुगतान करना चाहते हैं?

एडब्ल्यूएस प्रतिनिधि आपको बता देंगे, "एपीआई कुंजी प्रमाणीकरण के लिए पहचान के लिए कर रहे हैं, नहीं। कुंजी अनुरोध पर हस्ताक्षर करने के लिए इस्तेमाल नहीं कर रहे हैं, और एक सुरक्षा तंत्र के रूप में नहीं किया जाना चाहिए" https://aws.amazon.com/blogs/aws/new-usage-plans-for-amazon-api-gateway/

लेकिन ईमानदारी से करता है, तो आप कर रहे हैं अपने विशालकाय झुकाव स्ट्रिंग को मान्य करने के बजाय अपने लैम्ब्डा में कुछ बेहतर करने के लिए नहीं जा रहा है, तो उस बोझ को छोड़कर किसी और को क्यों न छोड़ें। (अधिकतम कुंजी लंबाई 128 वर्ण है)

हो सकता है कि आप एक नई एपीआई कुंजी जारी करने और प्रत्येक 6 घंटे क्लाउडफ़्रंट के शीर्षलेख को अपडेट करने के लिए निर्धारित शेम्बा फ़ंक्शन हो सकता है?

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

यदि आप एपीआई गेटवे के पीछे लैम्ब्डा का उपयोग कर रहे हैं तो नोट की एक और बात, आप लैम्ब्डा @ एज का उपयोग कर सकते हैं और बस एक साथ एपीआई गेटवे छोड़ सकते हैं। (यह ज्यादातर परिदृश्यों में फिट नहीं होगा क्योंकि लैम्ब्डा @ एज गंभीर रूप से सीमित है, लेकिन मुझे लगा कि मैं इसे बाहर फेंक दूंगा।)

लेकिन आखिरकार हमें एपीआई गेटवे के साथ WAF इंटिग्रेशन की आवश्यकता है !! :)

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। इस तथ्य के संबंध में कि कस्टम प्राधिकरण का अर्थ यह होगा कि लैम्ब्डा को सभी हिट मिलती हैं: कस्टम प्राधिकरण प्रतिक्रियाओं को कैश किया जा सकता है, इसलिए प्रत्येक टीटीएल सेकंड को केवल एक लैम्ब्डा अनुरोध (अभी भी डमी) बनाया जाएगा, है ना? Http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html#configure-api-gateway-custom- प्राधिकरण-with-console –

+0

प्रमाणीकृत उपयोगकर्ता कैश किए गए देखें। आपके सिस्टम को डीडोज़ करने से कोई भी प्रत्येक अनुरोध के साथ यादृच्छिक टोकन बनायेगा। https://stackoverflow.com/questions/44687654/secure-aws-api-gateway-with-lambda-integration। यह मंच विषय में बहुत गहराई से डाइव करता है: https://forums.aws.amazon.com/thread.jspa?messageID=703917 – Neo

+0

लैम्ब्डा डमी है - वास्तविक चेक टोकन सत्यापन अभिव्यक्ति द्वारा किया जाता है।लैम्ब्डा केवल तब कॉल हो जाता है जब कैश हिट नहीं होता है * और * सत्यापन अभिव्यक्ति सफल होती है। सही? –

संबंधित मुद्दे