mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -4,9 +4,58 @@
|
||||
|
||||
## Lambda
|
||||
|
||||
Amazon Web Services (AWS) Lambda se opisuje kao **računarska usluga** koja omogućava izvršavanje koda bez potrebe za obezbeđivanjem ili upravljanjem serverima. Karakteriše se sposobnošću da **automatski upravlja alokacijom resursa** potrebnih za izvršavanje koda, obezbeđujući funkcije kao što su visoka dostupnost, skalabilnost i sigurnost. Značajan aspekt Lambda je njen model cena, gde se **naplaćuje isključivo na osnovu vremena obrade** koje se koristi, eliminišući potrebu za inicijalnim ulaganjima ili dugoročnim obavezama.
|
||||
Amazon Web Services (AWS) Lambda se opisuje kao **računarska usluga** koja omogućava izvršavanje koda bez potrebe za obezbeđivanjem ili upravljanjem serverima. Karakteriše se sposobnošću da **automatski upravlja alokacijom resursa** potrebnih za izvršavanje koda, obezbeđujući funkcije kao što su visoka dostupnost, skalabilnost i sigurnost. Značajan aspekt Lamde je njen model cena, gde se **naplaćuje isključivo na osnovu vremena korišćenja računarskih resursa**, eliminišući potrebu za inicijalnim ulaganjima ili dugoročnim obavezama.
|
||||
|
||||
Da biste pozvali lambda, moguće je pozvati je **onoliko često koliko želite** (sa Cloudwatch), **izložiti
|
||||
Da biste pozvali lambda, moguće je pozvati je **onoliko često koliko želite** (sa Cloudwatch), **izložiti** **URL** endpoint i pozvati je, pozvati je putem **API Gateway** ili čak na osnovu **događaja** kao što su **promene** u podacima u **S3** bucketu ili ažuriranja u **DynamoDB** tabeli.
|
||||
|
||||
**Kod** lambda je smešten u **`/var/task`**.
|
||||
|
||||
### Lambda Aliases Weights
|
||||
|
||||
Lambda može imati **several versions**.\
|
||||
I može imati **više od 1** verzije izložene putem **aliases**. **Težine** **svake** od **verzija** izloženih unutar aliasa će odlučiti **koji alias prima poziv** (može biti 90%-10% na primer).\
|
||||
Ako je kod **jednog** od aliasa **ranjiv**, možete slati **zahteve dok ranjiva** verzija ne primi eksploataciju.
|
||||
|
||||
.png>)
|
||||
|
||||
### Resource Policies
|
||||
|
||||
Lambda politike resursa omogućavaju da **daju pristup drugim uslugama/računima da pozivaju** lambda na primer.\
|
||||
Na primer, ovo je politika koja omogućava **bilo kome da pristupi lambda izloženoj putem URL-a**:
|
||||
|
||||
<figure><img src="https://lh4.googleusercontent.com/4PNFKBdzr3nMrPqeKkTslgwWDKxkXMdQ1SNdv7NPHykj3GX8wODrQyXOFbjk4fxHfZ8pDm5ijWgk2Vq2EGXiPRT3TQfZf1fHycvdEKBuDxJDYos1CJeMHXSeg86ZB-Ol7CNtten6xkVFQj6AhDUEWNQJrQ=s2048" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ili ovo da dozvoli API Gateway da je pozove:
|
||||
|
||||
<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
|
||||
|
||||
Kada postoji **stotine** **paralelnih lambda zahteva**, ako svaki od njih treba da **uspostavi i zatvori vezu sa bazom podataka**, jednostavno neće funkcionisati (lambdas su bezdržavne, ne mogu održavati otvorene veze).\
|
||||
Tada, ako vaše **Lambda funkcije komuniciraju sa RDS Proxy umesto** vaše instance baze podataka. Ona upravlja povezivanjem potrebnim za skaliranje mnogih simultanih veza koje kreiraju paralelne Lambda funkcije. Ovo omogućava vašim Lambda aplikacijama da **ponovo koriste postojeće veze**, umesto da kreiraju nove veze za svaku invokaciju funkcije.
|
||||
|
||||
### Lambda EFS Filesystems
|
||||
|
||||
Da bi sačuvali i čak delili podatke, **Lambdas mogu pristupiti EFS i montirati ih**, tako da Lambda može čitati i pisati iz njih.
|
||||
|
||||
### Lambda Layers
|
||||
|
||||
Lambda _layer_ je .zip arhiva koja **može sadržati dodatni kod** ili drugi sadržaj. Layer može sadržati biblioteke, [prilagođeno okruženje](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), podatke ili konfiguracione datoteke.
|
||||
|
||||
Moguće je uključiti do **pet slojeva po funkciji**. Kada uključite layer u funkciju, **sadržaj se ekstrahuje u `/opt`** direktorijum u okruženju izvršenja.
|
||||
|
||||
Po **defaultu**, **slojevi** koje kreirate su **privatni** za vaš AWS račun. Možete odlučiti da **podelite** layer sa drugim računima ili da **napravite** layer **javnim**. Ako vaše funkcije koriste layer koji je objavio drugi račun, vaše funkcije mogu **nastaviti da koriste verziju sloja nakon što je obrisana, ili nakon što je vaša dozvola za pristup sloju opozvana**. Međutim, ne možete kreirati novu funkciju ili ažurirati funkcije koristeći obrisanu verziju sloja.
|
||||
|
||||
Funkcije koje su implementirane kao slika kontejnera ne koriste slojeve. Umesto toga, pakujete svoje omiljeno okruženje, biblioteke i druge zavisnosti u sliku kontejnera kada gradite sliku.
|
||||
|
||||
### Lambda Extensions
|
||||
|
||||
Lambda ekstenzije poboljšavaju funkcije integracijom sa raznim **alatima za praćenje, posmatranje, sigurnost i upravljanje**. Ove ekstenzije, dodate putem [.zip arhiva koristeći Lambda slojeve](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) ili uključene u [implementacije slika kontejnera](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), rade u dva režima: **interni** i **eksterni**.
|
||||
|
||||
- **Interni ekstenzije** se spajaju sa procesom izvršenja, manipulišući njegovim pokretanjem koristeći **specifične varijable okruženja za jezik** i **wrapper skripte**. Ova prilagodba se primenjuje na niz okruženja, uključujući **Java Correto 8 i 11, Node.js 10 i 12, i .NET Core 3.1**.
|
||||
- **Eksterni ekstenzije** rade kao odvojeni procesi, održavajući usklađenost sa životnim ciklusom Lambda funkcije. Kompatibilni su sa raznim okruženjima kao što su **Node.js 10 i 12, Python 3.7 i 3.8, Ruby 2.5 i 2.7, Java Corretto 8 i 11, .NET Core 3.1**, i **prilagođena okruženja**.
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
aws lambda get-account-settings
|
||||
|
||||
@@ -54,7 +103,7 @@ aws lambda invoke --function-name FUNCTION_NAME /tmp/out
|
||||
## user_name = event['user_name']
|
||||
aws lambda invoke --function-name <name> --cli-binary-format raw-in-base64-out --payload '{"policy_names": ["AdministratorAccess], "user_name": "sdf"}' out.txt
|
||||
```
|
||||
#### Putem izloženog URL-a
|
||||
#### Putem izložene URL adrese
|
||||
```bash
|
||||
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
|
||||
@@ -67,7 +116,7 @@ aws --region us-west-2 --profile level6 lambda list-functions
|
||||
```
|
||||
.png>)
|
||||
|
||||
Lambda funkcija pod nazivom "Level6" je dostupna. Hajde da saznamo kako da je pozovemo:
|
||||
Lambda funkcija pod nazivom "Level6" je dostupna. Hajde da saznamo kako je pozvati:
|
||||
```bash
|
||||
aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user