Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:39:39 +00:00
parent c3127afc90
commit 48580fee4d
222 changed files with 2931 additions and 2791 deletions

View File

@@ -4,53 +4,53 @@
## Lambda
Amazon Web Services (AWS) Lambda को एक **compute service** के रूप में वर्णित किया गया है जो कोड को सर्वर प्रावधान या प्रबंधन की आवश्यकता के बिना निष्पादित करने की अनुमति देता है। यह **कोड निष्पादन** के लिए आवश्यक संसाधन आवंटन को **स्वचालित रूप से संभालने** की क्षमता के लिए जाना जाता है, जो उच्च उपलब्धता, स्केलेबिलिटी और सुरक्षा जैसी सुविधाओं को सुनिश्चित करता है। Lambda का एक महत्वपूर्ण पहलू इसका मूल्य निर्धारण मॉडल है, जहां **शुल्क केवल उपयोग किए गए कंप्यूट समय पर आधारित होते हैं**, प्रारंभिक निवेश या दीर्घकालिक प्रतिबद्धताओं की आवश्यकता को समाप्त करता है।
Amazon Web Services (AWS) Lambda को एक **compute service** के रूप में वर्णित किया गया है जो कोड को निष्पादित करने की अनुमति देता है बिना सर्वर प्रावधान या प्रबंधन की आवश्यकता के। इसकी विशेषता यह है कि यह **कोड निष्पादन के लिए आवश्यक संसाधन आवंटन को स्वचालित रूप से संभालता है**, उच्च उपलब्धता, स्केलेबिलिटी और सुरक्षा जैसी सुविधाओं को सुनिश्चित करता है। Lambda का एक महत्वपूर्ण पहलू इसका मूल्य निर्धारण मॉडल है, जहां **शुल्क केवल उपयोग किए गए कंप्यूट समय पर आधारित होते हैं**, प्रारंभिक निवेश या दीर्घकालिक प्रतिबद्धताओं की आवश्यकता को समाप्त करता है।
एक लैम्ब्डा को कॉल करने के लिए इसे **जितनी बार चाहें** (Cloudwatch के साथ), **एक URL** एंडपॉइंट के माध्यम से एक्सपोज़ करके, **API Gateway** के माध्यम से या यहां तक कि **S3** बकेट में डेटा में **परिवर्तनों** या **DynamoDB** तालिका में अपडेट के आधार पर कॉल किया जा सकता है
एक लैम्ब्डा को कॉल करने के लिए इसे **जितनी बार चाहें** (Cloudwatch के साथ) कॉल करना संभव है, **एक URL** एंडपॉइंट क**एक्सपोज** करना और इसे कॉल करना, **API Gateway** के माध्यम से कॉल करना या यहां तक कि **S3** बकेट में डेटा में **परिवर्तनों** या **DynamoDB** तालिका में अपडेट के आधार पर कॉल करना
एक लैम्ब्डा का **कोड** **`/var/task`** में संग्रहीत होता है।
### Lambda Aliases Weights
एक Lambda के पास **कई संस्करण** हो सकते हैं।\
और इसके पास **एक से अधिक** संस्करण हो सकते हैं जो **aliases** के माध्यम से एक्सपोज़ किए जाते हैं। **हर** **संस्करण** के **वजन** जो एक alias के अंदर एक्सपोज़ किए जाते हैं, यह तय करेंगे कि **कौन सा alias कॉल प्राप्त करता है** (यह उदाहरण के लिए 90%-10% हो सकता है)।\
यदि **एक** alias का कोड **कमजोर** है, तो आप **अनुरोध भेज सकते हैं जब तक कमजोर** संस्करण को एक्सप्लॉइट प्राप्त नहीं होता।
और इसके पास **एक से अधिक** संस्करण हो सकते हैं जो **aliases** के माध्यम से एक्सपोज़ किए जाते हैं। **हर** **संस्करण** के **वजन** जो एक एलियास के अंदर एक्सपोज़ किए जाते हैं, यह तय करेंगे कि **कौन सा एलियास कॉल प्राप्त करता है** (यह 90%-10% हो सकता है, उदाहरण के लिए)।\
यदि **एक** एलियास का कोड **कमजोर** है, तो आप **अनुरोध भेज सकते हैं जब तक कमजोर** संस्करण को एक्सप्लॉइट प्राप्त नहीं होता।
![](<../../../images/image (223).png>)
### Resource Policies
Lambda संसाधन नीतियाँ अन्य सेवाओं/खातों को लैम्ब्डा को कॉल करने के लिए **पहुँच देने** की अनुमति देती हैं।\
उदाहरण के लिए, यह नीति है जो **किसी को भी URL के माध्यम से एक्सपोज़ किए गए लैम्ब्डा तक पहुँचने** की अनुमति देती है:
Lambda संसाधन नीतियाँ अन्य सेवाओं/खातों को लैम्ब्डा को कॉल करने क**अनुमति देने** की अनुमति देती हैं।\
उदाहरण के लिए, यह नीति है जो **किसी को भी URL के माध्यम से एक्सपोज़ किए गए लैम्ब्डा तक पहुँचने की अनुमति देती है**:
<figure><img src="https://lh4.googleusercontent.com/4PNFKBdzr3nMrPqeKkTslgwWDKxkXMdQ1SNdv7NPHykj3GX8wODrQyXOFbjk4fxHfZ8pDm5ijWgk2Vq2EGXiPRT3TQfZf1fHycvdEKBuDxJDYos1CJeMHXSeg86ZB-Ol7CNtten6xkVFQj6AhDUEWNQJrQ=s2048" alt=""><figcaption></figcaption></figure>
या यह API Gateway को इसे कॉल करने की अनुमति देने के लिए:
या यह नीति API Gateway को इसे कॉल करने की अनुमति देने के लिए:
<figure><img src="https://lh3.googleusercontent.com/Su0JlR0wBqb-99Z4N_2-_kMlX0Xzx2n_GpZuOPW5IeXR3FYbm8OHFDM3Ora1BpXiSjHpDVUlq4yEyXwaI3nBuze6DJ-wRf2ATsCuWbq0wuBCd34E9uIpqwheE6Cc_PopviI_93O_j2ZKXc1-AJtsBoLVUw=s2048" alt=""><figcaption></figcaption></figure>
### Lambda Database Proxies
जब **सैकड़ों** **समानांतर लैम्ब्डा अनुरोध** होते हैं, यदि प्रत्येक को **डेटाबेस से कनेक्ट और कनेक्शन बंद करने** की आवश्यकता होती है, तो यह काम नहीं करेगा (लैम्ब्डा स्टेटलेस होते हैं, कनेक्शन को खुला नहीं रख सकते)।\
फिर, यदि आपके **Lambda कार्य RDS Proxy के साथ इंटरैक्ट करते हैं** आपके डेटाबेस इंस्टेंस के बजाय। यह समानांतर Lambda कार्यों द्वारा बनाए गए कई समवर्ती कनेक्शनों के लिए आवश्यक कनेक्शन पूलिंग को संभालता है। यह आपके Lambda अनुप्रयोगों को **मौजूदा कनेक्शनों का पुन: उपयोग** करने की अनुमति देता है, बजाय इसके कि हर कार्य कॉल के लिए नए कनेक्शन बनाए।
फिर, यदि आपके **Lambda कार्य RDS Proxy के साथ इंटरैक्ट करते हैं** आपके डेटाबेस इंस्टेंस के बजाय। यह कई समानांतर Lambda कार्यों द्वारा बनाए गए कई समवर्ती कनेक्शनों के लिए आवश्यक कनेक्शन पूलिंग को संभालता है। यह आपके Lambda अनुप्रयोगों को **मौजूदा कनेक्शनों का पुन: उपयोग** करने की अनुमति देता है, बजाय इसके कि हर कार्य कॉल के लिए नए कनेक्शन बनाए।
### Lambda EFS Filesystems
डेटा को संरक्षित और साझा करने के लिए **Lambdas EFS तक पहुँच सकते हैं और उन्हें माउंट कर सकते हैं**, ताकि Lambda इसे पढ़ और लिख सके।
डेटा को संरक्षित करने और यहां तक कि साझा करने के लिए **Lambdas EFS तक पहुँच सकते हैं और उन्हें माउंट कर सकते हैं**, ताकि Lambda इसे पढ़ और लिख सके।
### Lambda Layers
एक Lambda _layer_ एक .zip फ़ाइल संग्रह है जो **अतिरिक्त कोड** या अन्य सामग्री को **शामिल कर सकता है**। एक लेयर में पुस्तकालय, एक [कस्टम रनटाइम](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), डेटा, या कॉन्फ़िगरेशन फ़ाइलें हो सकती हैं।
एक Lambda _लेयर_ एक .zip फ़ाइल संग्रह है जो **अतिरिक्त कोड** या अन्य सामग्री को **शामिल कर सकता है**। एक लेयर में पुस्तकालय, एक [कस्टम रनटाइम](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), डेटा, या कॉन्फ़िगरेशन फ़ाइलें हो सकती हैं।
प्रत्येक फ़ंक्शन में **पाँच लेयर** तक शामिल करना संभव है। जब आप किसी फ़ंक्शन में एक लेयर शामिल करते हैं, तो **सामग्री को `/opt`** निर्देशिका में निष्पादन वातावरण में निकाला जाता है।
**डिफ़ॉल्ट** के रूप में, आप जो **लेयर** बनाते हैं वे आपके AWS खाते के लिए **निजी** होती हैं। आप एक लेयर को अन्य खातों के साथ **शेयर** करने या लेयर को **सार्वजनिक** बनाने का विकल्प चुन सकते हैं। यदि आपके फ़ंक्शन एक लेयर का उपभोग करते हैं जिसे एक अलग खाते ने प्रकाशित किया है, तो आपके फ़ंक्शन **लेयर संस्करण का उपयोग जारी रख सकते हैं** जब इसे हटा दिया गया हो, या जब आपकी लेयर तक पहुँचने की अनुमति रद्द कर दी गई हो। हालाँकि, आप एक नई फ़ंक्शन नहीं बना सकते या हटाए गए लेयर संस्करण का उपयोग करते हुए फ़ंक्शंस को अपडेट नहीं कर सकते।
**डिफ़ॉल्ट** रूप से, आप जो **लेयर** बनाते हैं वे आपके AWS खाते के लिए **निजी** होती हैं। आप एक लेयर को अन्य खातों के साथ **साझा** करने या लेयर को **सार्वजनिक** बनाने का विकल्प चुन सकते हैं। यदि आपके फ़ंक्शन एक लेयर का उपभोग करते हैं जो किसी अन्य खाते द्वारा प्रकाशित की गई है, तो आपके फ़ंक्शन **लेयर संस्करण का उपयोग जारी रख सकते हैं** जब इसे हटा दिया गया हो, या जब आपकी लेयर तक पहुँचने की अनुमति रद्द कर दी गई हो। हालाँकि, आप एक नई फ़ंक्शन नहीं बना सकते या हटाए गए लेयर संस्करण का उपयोग करते हुए फ़ंक्शंस को अपडेट नहीं कर सकते।
कंटेनर छवि के रूप में तैनात फ़ंक्शन लेयर का उपयोग नहीं करते हैं। इसके बजाय, आप छवि बनाने के समय अपन पसंदीदा रनटाइम, पुस्तकालयों और अन्य निर्भरताओं को कंटेनर छवि में पैकेज करते हैं।
कंटेनर छवि के रूप में तैनात फ़ंक्शन लेयर का उपयोग नहीं करते हैं। इसके बजाय, आप छवि बनाने के समय अपन पसंदा रनटाइम, पुस्तकालय और अन्य निर्भरताएँ कंटेनर छवि में पैकेज करते हैं।
### Lambda Extensions
Lambda एक्सटेंशन कार्यों को विभिन्न **निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों** के साथ एकीकृत करके कार्यों को बढ़ाते हैं। ये एक्सटेंशन [.zip संग्रह का उपयोग करके Lambda लेयर्स](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) के माध्यम से जोड़े जाते हैं या [कंटेनर छवि तैनाती में शामिल होते हैं](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), दो मोड में कार्य करते हैं: **आंतरिक** और **बाहरी**
Lambda एक्सटेंशन कार्यों को विभिन्न **निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों** के साथ एकीकृत करके बढ़ाते हैं। ये एक्सटेंशन, [.zip संग्रह का उपयोग करके Lambda लेयर्स](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) के माध्यम से जोड़े जाते हैं या [कंटेनर छवि तैनाती में शामिल होते हैं](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), दो मोड में कार्य करते हैं: **आंतरिक** और **बाहरी**
- **आंतरिक एक्सटेंशन** रनटाइम प्रक्रिया के साथ विलीन होते हैं, इसके स्टार्टअप को **भाषा-विशिष्ट पर्यावरण चर** और **रैपर स्क्रिप्ट** का उपयोग करके संशोधित करते हैं। यह अनुकूलन कई रनटाइम्स पर लागू होता है, जिसमें **Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1** शामिल हैं।
- **बाहरी एक्सटेंशन** अलग प्रक्रियाओं के रूप में चलते हैं, Lambda फ़ंक्शन के जीवन चक्र के साथ संचालन संरेखण बनाए रखते हैं। वे विभिन्न रनटाइम्स के साथ संगत होते हैं जैसे **Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1**, और **कस्टम रनटाइम**
@@ -108,21 +108,21 @@ aws lambda invoke --function-name <name> --cli-binary-format raw-in-base64-out -
aws lambda list-function-url-configs --function-name <function_name> #Get lambda URL
aws lambda get-function-url-config --function-name <function_name> #Get lambda URL
```
#### Call Lambda function via URL
#### URL के माध्यम से Lambda फ़ंक्शन कॉल करें
अब संभावित लैम्ब्डा फ़ंक्शंस को निष्पादित करने का समय है:
अब संभावित lambda फ़ंक्शंस को निष्पादित करने का समय है:
```
aws --region us-west-2 --profile level6 lambda list-functions
```
![](<../../../images/image (262).png>)
एक लम्ब्डा फ़ंक्शन "Level6" उपलब्ध है। चलिए इसे कॉल करने का तरीका खोजते हैं:
एक लम्ब्डा फ़ंक्शन "Level6" उपलब्ध है। चलिए पता करते हैं कि इसे कैसे कॉल किया जाए:
```bash
aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6
```
![](<../../../images/image (102).png>)
अब, जब आप नाम और आईडी जानते हैं, तो आप नाम प्राप्त कर सकते हैं:
अब, जब आप नाम और ID जानते हैं, तो आप नाम प्राप्त कर सकते हैं:
```bash
aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33ppypa75"
```
@@ -134,7 +134,7 @@ aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33
#### अन्य ट्रिगर्स
बहुत सारे अन्य स्रोत हैं जो एक लैम्ब्डा को ट्रिगर कर सकते हैं
कई अन्य स्रोत हैं जो एक लैम्ब्डा को ट्रिगर कर सकते हैं
<figure><img src="../../../images/image (167).png" alt=""><figcaption></figcaption></figure>