DVFaaS - डैमन वल्नरेबल फंक्शन्स ऐज़ अ सर्विस
एक DHIY (डिप्लॉय एंड हैक इट योरसेल्फ) प्रोजेक्ट जिसे आप AWS Lambda पर तैनात कर सकते हैं और ढेर सारे 'बेहद असुरक्षित' फंक्शन्स चला सकते हैं

उद्देश्य और लक्षित दर्शक
- हम we45 में सर्वरलेस सिक्योरिटी, क्लाउड और आधुनिक वेब स्टैक्स की सुरक्षा के आसपास बहुत सारा प्रशिक्षण करते हैं।
- हम दृढ़ता से मानते हैं कि डेवलपर्स, आर्किटेक्ट्स, DevOps और सुरक्षा कर्मियों के लिए इन आधुनिक घटकों के जोखिमों को सीखने और समझने की बहुत आवश्यकता है।
- यह प्रोजेक्ट जानबूझकर कमजोर सर्वरलेस ऐप्स (FaaS) विकसित करने में हमारे प्रशिक्षण प्रयासों का परिणाम है, जिसे हमने व्यापक समुदाय के लिए खोलने का निर्णय लिया है।
यह प्रोजेक्ट आपके लिए बहुत अच्छा है, यदि:
- आप सर्वरलेस ऐप्स, विशेष रूप से FaaS कार्यान्वयन में सुरक्षा कमजोरियों के बारे में सीखना चाहते हैं।
यह प्रोजेक्ट आपके लिए नहीं है, यदि:
- आप अपने स्वयं के फंक्शन्स को तैनात (और चलाना) नहीं चाहते हैं। यहाँ विचार यह है कि आप करके सीखें।
कृपया ध्यान दें:
- फंक्शन्स AWS Lambda में तैनात किए जाने के लिए लक्षित हैं। लेकिन सिद्धांत और अवधारणाएँ पूरे बोर्ड में लागू होती हैं।
- अधिकांश फंक्शन्स पायथन में हैं, विशेष रूप से
chalice नामक फ्रेमवर्क में (AWS Lambda पर पायथन के लिए)। इन फंक्शन्स को आपके लैम्ब्डा एनवायरनमेंट में तैनात करना काफी सरल है।
- अंततः यह प्रोजेक्ट OWASP सर्वरलेस टॉप 10 से मेल खाता है, जो यहाँ पाया जाता है, लेकिन कुछ उदाहरण भिन्न हो सकते हैं।
- इस प्रोजेक्ट के ऑप्स (डिप्लॉयमेंट) ज्यादातर Terraform के साथ किए जाते हैं। कृपया दस्तावेज़ यहाँ देखें।
- प्रत्येक उदाहरण में एक README है, जिसमें इंस्टॉलेशन निर्देश आदि हैं। कई मामलों में, कई उदाहरणों के डिप्लॉयमेंट ओवे
आवश्यकताएँ
कोड
- Python 3.6
- Pipenv (निर्भरता प्रबंधन)
- Chalice
- PyYAML
- HTTPie
- AWS CLI जिसमें विभिन्न AWS घटकों की तैनाती/सेटअप के लिए root या उच्च विशेषाधिकार आवश्यक हैं
- jq
AWS संसाधन
- RDS => MySQL (फ्री टियर पात्र)
- DynamoDB (फ्री टियर पात्र)
- Amazon SNS (विषयों के लिए Pub/Sub)
- Amazon Lambda, आप जानते हैं....फंक्शन्स के लिए
- Amazon Cloudwatch Logs
अस्वीकरण
कृपया केवल व्यक्तिगत/गैर-उत्पादन खातों में उपयोग करें
हम किसी भी तरह से इन फंक्शन्स (DVFaaS) के उपयोग की ज़िम्मेदारी नहीं लेते हैं। हमने एप्लिकेशन के उद्देश्यों को स्पष्ट कर दिया है और इसका दुर्भावनापूर्ण रूप से उपयोग नहीं किया जाना चाहिए। हमने चेतावनियाँ दी हैं और उपयोगकर्ताओं को उत्पादन खातों पर DVFaaS स्थापित करने से रोकने के लिए उपाय किए हैं।
आप अपने AWS खाते पर इसे चलाने के लिए आवश्यक प्राधिकरणों (यदि कोई हो) के लिए जिम्मेदार हैं।
इंस्टॉलेशन और सेटअप
- प्रोजेक्ट को Git क्लोन करें
git clone <URL>
- हम प्रोजेक्ट के लिए निर्भरता प्रबंधित करने के लिए pipenv का उपयोग कर रहे हैं। आप सभी डिप्स इंस्टॉल करने के लिए
pipenv install का उपयोग कर सकते हैं।
- प्रत्येक लैब की अपनी डिप्लॉयमेंट विनिर्देशन होती है। अधिकांश मामलों में, प्रत्येक लैब में
ops नामक एक विशिष्ट डिप्लॉयमेंट निर्देशिका होती है।
जिसका उपयोग डिप्लॉयमेंट प्रबंधित करने के लिए किया जाता है।
- हम दृढ़ता से
httpie को http क्लाइंट के रूप में उपयोग करने की सलाह देते हैं क्योंकि यह कमांड लाइन है और उपयोग करने में वास्तव में आसान है।
- कुछ डिप्लॉयमेंट के लिए, हम डिप्लॉयमेंट करने और AWS IAM रोल्स आदि स्थापित करने के लिए Terraform का उपयोग कर रहे हैं।
- कृपया ध्यान दें कि यह सब काम करने के लिए आपको AWS पर aws cli के साथ उच्च/रूट विशेषाधिकारों की आवश्यकता होगी।
- वर्तमान में, सभी अभ्यासों के लिए हम Chalice (पायथन में एक AWS Lambda फ्रेमवर्क) का उपयोग कर रहे हैं।
- सभी लैब्स में एक
.chalice फ़ोल्डर होता है जिसे chalice द्वारा डिप्लॉयमेंट के प्रयोजनों के लिए पहचाना जाता है।
- अधिकांश लैब्स के लिए, आपको डिप्लॉयमेंट कॉन्फ़िगर करने के लिए
.chalice/config.json फ़ाइल को कॉन्फ़िगर करना होगा। इस जानकारी के लिए कृपया प्रत्येक लैब का README पढ़ें।
यह डिप्लॉयमेंट के बाद करना होगा (जो कि जहाँ लागू हो ops निर्देशिकाएँ हैं)
- एक बार हो जाने के बाद, डिप्लॉयमेंट करना काफी आसान है, एक साधारण
chalice deploy कमांड के साथ जो आपके Lambda फंक्शन को आपके AWS खाते में पुश कर देगा:
TODO
- डिप्लॉयमेंट और हमलों के निष्पादन की व्याख्या करने वाली वीडियो श्रृंखला
- GraphQL उदाहरण
- NodeJS उदाहरण