AWS - Step Functions Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS Step Functions je servis za radne tokove koji vam omogućava da koordinirate i orkestrirate više AWS servisa u serverless radne tokove. Korišćenjem AWS Step Functions, možete dizajnirati i pokretati radne tokove koji povezuju različite AWS servise kao što su AWS Lambda, Amazon S3, Amazon DynamoDB i mnoge druge, u nizu koraka. Ova orkestracija pruža vizuelni interfejs radnog toka i nudi state machine mogućnosti, omogućavajući vam da definišete svaki korak radnog toka na deklarativan način koristeći JSON-bazirani Amazon States Language (ASL).
AWS Step Functions nudi dva tipa state machine workflows: Standard i Express.
Standard Workflow: Ova podrazumevana vrsta radnog toka je dizajnirana za dugotrajne, trajne i auditable procese. Podržava exactly-once execution, osiguravajući da se zadaci izvršavaju samo jednom osim ako nisu navedeni ponovni pokušaji. Idealna je za radne tokove koji zahtevaju detaljnu istoriju izvršenja i može trajati do jedne godine.
Express Workflow: Ova vrsta je idealna za zadatke visokog obima i kratkog trajanja, koji traju do pet minuta. Podržavaju at-least-once execution, pogodna za idempotentne zadatke kao što je obrada podataka. Ovi radni tokovi su optimizovani za troškove i performanse, naplaćujući na osnovu izvršenja, trajanja i korišćenja memorije.
States su osnovne jedinice state mašina. Definišu pojedinačne korake unutar radnog toka, mogući su da izvršavaju razne funkcije u zavisnosti od tipa:
Task: Izvršava posao, često koristeći AWS servis kao što je Lambda.
Choice: Donosi odluke na osnovu ulaza.
Fail/Succeed: Završava izvršenje neuspehom ili uspehom.
Pass: Prosleđuje ulaz na izlaz ili ubacuje podatke.
Wait: Odlaže izvršenje na određeno vreme.
Parallel: Pokreće paralelne grane.
Map: Dinamički iterira korake preko stavki.
Task state predstavlja jedinstvenu jedinicu rada koju izvršava state mašina. Zadaci mogu pozivati različite resurse, uključujući aktivnosti, Lambda funkcije, AWS servise ili API-je trećih strana.
Activities: Prilagođeni radnici koje upravljate, pogodni za dugotrajne procese.
Resurs: arn:aws:states:region:account:activity:name
.
Lambda Functions: Izvršava AWS Lambda funkcije.
Resurs: arn:aws:lambda:region:account:function:function-name
.
AWS Services: Integrira se direktno sa drugim AWS servisima, kao što su DynamoDB ili S3.
Resurs: arn:partition:states:region:account:servicename:APIname
.
HTTP Task: Poziva API-je trećih strana.
Polje resursa: arn:aws:states:::http:invoke
. Zatim, trebate pružiti detalje konfiguracije API endpoint-a, kao što su API URL, metoda i detalji autentifikacije.
Sledeći primer prikazuje definiciju Task state koja poziva Lambda funkciju pod nazivom HelloWorld:
Choice stanje dodaje uslovnu logiku u radni tok, omogućavajući odluke na osnovu ulaznih podataka. Evaluira navedene uslove i prelazi u odgovarajuće stanje na osnovu rezultata.
Poređenje: Svako pravilo izbora uključuje operator poređenja (npr., NumericEquals
, StringEquals
) koji upoređuje ulaznu promenljivu sa navedenom vrednošću ili drugom promenljivom.
Next Field: Choice stanja ne podržavaju End
polje, umesto toga definišu Next
stanje u koje prelaze ako je poređenje tačno.
Primer Choice stanja:
A Fail
stanje zaustavlja izvršenje mašine stanja i označava je kao neuspeh. Koristi se za specificiranje imena greške i uzroka, pružajući detalje o neuspehu. Ovo stanje je terminalno, što znači da završava tok izvršenja.
A Succeed
stanje uspešno zaustavlja izvršenje. Obično se koristi za završavanje radnog toka kada se uspešno završi. Ovo stanje ne zahteva Next
polje.
Pass stanje prenosi svoj ulaz na svoj izlaz ili bez obavljanja bilo kakvog posla ili transformišući JSON ulaz stanja koristeći filtre, a zatim prenosi transformisane podatke na sledeće stanje. Korisno je za testiranje i konstruisanje stanja mašina, omogućavajući vam da umetnete statičke podatke ili ih transformišete.
A Wait stanje odlaže izvršenje mašine stanja na određeni vremenski period. Postoje tri osnovne metode za podešavanje vremena čekanja:
X Sekundi: Fiksan broj sekundi za čekanje.
Apsolutni Vremenski Pečat: Tačno vreme do kada treba čekati.
Dinamičko Čekanje: Na osnovu ulaza koristeći SecondsPath
ili TimestampPath
.
A Parallel stanje omogućava vam da izvršavate više grana zadataka istovremeno unutar vašeg radnog toka. Svaka grana se izvršava nezavisno i obrađuje svoju vlastitu sekvencu stanja. Izvršenje čeka dok sve grane ne završe pre nego što pređe na sledeće stanje. Njegova ključna polja su:
Grane: Niz koji definiše paralelne putanje izvršenja. Svaka grana je posebna mašina stanja.
ResultPath: Definiše gde (u ulazu) da se postavi kombinovani izlaz grana.
Retry i Catch: Konfiguracije za obradu grešaka za paralelno stanje.
Map stanje omogućava izvršavanje skupa koraka za svaki predmet u skupu podataka. Koristi se za paralelno procesiranje podataka. U zavisnosti od toga kako želite da obradite stavke skupa podataka, Step Functions pruža sledeće režime:
Inline Mode: Izvršava podskup stanja za svaki predmet JSON niza. Pogodno za male zadatke sa manje od 40 paralelnih iteracija, izvršavajući svaku od njih u kontekstu radnog toka koji sadrži Map
stanje.
Distributed Mode: Dizajniran za paralelno procesiranje velikih razmera sa visokom konkurencijom. Podržava obradu velikih skupova podataka, kao što su oni pohranjeni u Amazon S3, omogućavajući visoku konkurenciju do 10,000 paralelnih izvršavanja radnog toka, izvršavajući ove decu kao odvojeno izvršavanje.
Step Functions takođe omogućava upravljanje implementacijama radnog toka kroz versions i aliases mašine stanja. Verzija predstavlja snimak mašine stanja koji može biti izvršen. Alias služi kao pokazivač na do dve verzije mašine stanja.
Versions: Ovi nepromenljivi snimci mašine stanja kreiraju se iz najnovije revizije te mašine stanja. Svaka verzija se identifikuje jedinstvenim ARN-om koji kombinuje ARN mašine stanja sa brojem verzije, odvojenim dvotačkom (arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number
). Verzije se ne mogu uređivati, ali možete ažurirati mašinu stanja i objaviti novu verziju, ili koristiti željenu verziju mašine stanja.
Aliases: Ovi pokazivači mogu referencirati do dve verzije iste mašine stanja. Više aliasa može biti kreirano za jednu mašinu stanja, svaki identifikovan jedinstvenim ARN-om konstruisanim kombinovanjem ARN mašine stanja sa imenom aliasa, odvojenim dvotačkom (arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName
). Aliasi omogućavaju usmeravanje saobraćaja između jedne od dve verzije mašine stanja. Alternativno, alias može ukazivati na jednu specifičnu verziju mašine stanja, ali ne na druge alias-e. Mogu se ažurirati da preusmere na drugu verziju mašine stanja po potrebi, olakšavajući kontrolisane implementacije i upravljanje radnim tokom.
Za detaljnije informacije o ASL, proverite: Amazon States Language.
AWS Step Functions koristi AWS Identity and Access Management (IAM) uloge za kontrolu pristupa resursima i akcijama unutar mašine stanja. Evo ključnih aspekata vezanih za bezbednost i IAM uloge u AWS Step Functions:
Execution Role: Svaka mašina stanja u AWS Step Functions je povezana sa IAM ulogom izvršenja. Ova uloga definiše koje akcije mašina stanja može izvesti u vaše ime. Kada mašina stanja prelazi između stanja koja komuniciraju sa AWS uslugama (kao što je pozivanje Lambda funkcija, pristup DynamoDB, itd.), preuzima ovu ulogu izvršenja da bi izvršila te akcije.
Permissions: IAM uloga izvršenja mora biti konfigurisana sa dozvolama koje omogućavaju neophodne akcije na drugim AWS uslugama. Na primer, ako vaša mašina stanja treba da pozove AWS Lambda funkcije, IAM uloga mora imati lambda:InvokeFunction
dozvole. Slično, ako treba da piše u DynamoDB, odgovarajuće dozvole (dynamodb:PutItem
, dynamodb:UpdateItem
, itd.) moraju biti dodeljene.
ReadOnlyAccess politika je dovoljna za sve sledeće akcije enumeracije.
Na sledećoj stranici možete proveriti kako da zloupotrebite Step Functions dozvole za eskalaciju privilegija:
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)