AWS - Step Functions Enum
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS Step Functions is 'n werksvloei-diens wat jou in staat stel om verskeie AWS-dienste in serverless werksvloeie te koördineer en te orkestreer. Deur AWS Step Functions te gebruik, kan jy werksvloeie ontwerp en uitvoer wat verskillende AWS-dienste soos AWS Lambda, Amazon S3, Amazon DynamoDB, en baie meer, in 'n volgorde van stappe verbind. Hierdie orkestrasiediens bied 'n visuele werksvloei-koppelvlak en bied toestand masjien vermoëns, wat jou toelaat om elke stap van die werksvloei op 'n deklaratiewe manier te definieer met behulp van JSON-gebaseerde Amazon States Language (ASL).
AWS Step Functions bied twee tipes toestand masjien werksvloeie: Standaard en Uitdrukking.
Standaard Werksvloei: Hierdie standaard werksvloei tipe is ontwerp vir langlopende, duursame, en auditeerbare prosesse. Dit ondersteun presies-een keer uitvoering, wat verseker dat take slegs een keer uitgevoer word tensy herhalings gespesifiseer word. Dit is ideaal vir werksvloeie wat gedetailleerde uitvoeringsgeskiedenis benodig en kan tot een jaar duur.
Uitdrukking Werksvloei: Hierdie tipe is ideaal vir hoë-volume, kort-duratie take, wat tot vyf minute duur. Hulle ondersteun ten minste-een keer uitvoering, geskik vir idempotente take soos data verwerking. Hierdie werksvloeie is geoptimaliseer vir koste en prestasie, en hef koste op grond van uitvoerings, duur, en geheuegebruik.
Toestande is die essensiële eenhede van toestand masjiene. Hulle definieer die individuele stappe binne 'n werksvloei, en kan 'n verskeidenheid funksies uitvoer, afhangende van sy tipe:
Taak: Voer 'n werk uit, dikwels met 'n AWS-diens soos Lambda.
Keuse: Neem besluite gebaseer op insette.
Misluk/Slaag: Eindig die uitvoering met 'n mislukking of sukses.
Oorgang: Gee insette aan uitsette of voeg data in.
Wag: Vertraag uitvoering vir 'n bepaalde tyd.
Parallel: Begin parallel takke.
Kaart: Dinamies herhaal stappe oor items.
'n Taak toestand verteenwoordig 'n enkele eenheid van werk wat deur 'n toestand masjien uitgevoer word. Take kan verskillende hulpbronne aanroep, insluitend aktiwiteite, Lambda funksies, AWS dienste, of derdeparty API's.
Aktiwiteite: Pasgemaakte werkers wat jy bestuur, geskik vir langlopende prosesse.
Hulpbron: arn:aws:states:region:account:activity:name
.
Lambda Funksies: Voer AWS Lambda funksies uit.
Hulpbron: arn:aws:lambda:region:account:function:function-name
.
AWS Dienste: Integreer direk met ander AWS dienste, soos DynamoDB of S3.
Hulpbron: arn:partition:states:region:account:servicename:APIname
.
HTTP Taak: Roep derdeparty API's aan.
Hulpbron veld: arn:aws:states:::http:invoke
. Dan moet jy die API eindpunt konfigurasie besonderhede verskaf, soos die API URL, metode, en outentikasie besonderhede.
Die volgende voorbeeld toon 'n Taak toestand definisie wat 'n Lambda funksie genaamd HelloWorld aanroep:
'n Choice toestand voeg voorwaardelike logika by 'n werksvloei, wat besluite op grond van invoerdata moontlik maak. Dit evalueer die gespesifiseerde voorwaardes en oorgang na die ooreenstemmende toestand gebaseer op die resultate.
Vergelyking: Elke keuse-reël sluit 'n vergelykingsoperateur in (bv. NumericEquals
, StringEquals
) wat 'n invoer veranderlike met 'n gespesifiseerde waarde of 'n ander veranderlike vergelyk.
Volgende Veld: Choice toestande ondersteun nie die End
veld nie, in plaas daarvan definieer hulle die Next
toestand om na oorgang as die vergelyking waar is.
Voorbeeld van Choice toestand:
'n Fail
toestand stop die uitvoering van 'n toestandmasjien en merk dit as 'n mislukking. Dit word gebruik om 'n foutnaam en 'n oorsaak te spesifiseer, wat besonderhede oor die mislukking verskaf. Hierdie toestand is terminal, wat beteken dit beëindig die uitvoeringsvloei.
'n Succeed
toestand stop die uitvoering suksesvol. Dit word tipies gebruik om die werksvloei te beëindig wanneer dit suksesvol voltooi is. Hierdie toestand vereis nie 'n Next
veld nie.
'n Pass toestand gee sy invoer aan sy uitvoer oor, hetsy sonder om enige werk te verrig of deur JSON toestand invoer te transformeer met behulp van filters, en dan die getransformeerde data aan die volgende toestand oor te dra. Dit is nuttig vir toetsing en die konstruksie van toestandmasjiene, wat jou toelaat om statiese data in te voeg of dit te transformeer.
'n Wait toestand vertraag die uitvoering van die toestandsmasjien vir 'n spesifieke duur. Daar is drie primêre metodes om die wagtyd te konfigureer:
X Sekondes: 'n Vasgestelde aantal sekondes om te wag.
Absolute Tydstempel: 'n Presiese tyd om te wag tot.
Dinamiese Wag: Gebaseer op invoer met behulp van SecondsPath
of TimestampPath
.
'n Parallel toestand laat jou toe om verskeie takke van take gelyktydig binne jou werksvloei uit te voer. Elke tak loop onafhanklik en verwerk sy eie volgorde van toestande. Die uitvoering wag totdat al die takke voltooi is voordat dit na die volgende toestand voortgaan. Sy sleutelvelde is:
Branches: 'n Array wat die parallelle uitvoeringspaaie definieer. Elke tak is 'n aparte toestandsmasjien.
ResultPath: Definieer waar (in die invoer) om die saamgevoegde uitvoer van die takke te plaas.
Retry and Catch: Fouthanteringskonfigurasies vir die parallelle toestand.
'n Map toestand stel die uitvoering van 'n stel stappe vir elke item in 'n dataset in staat. Dit word gebruik vir parallelle verwerking van data. Afhangende van hoe jy die items van die dataset wil verwerk, bied Step Functions die volgende modi aan:
Inline Mode: Voer 'n substel van toestande uit vir elke JSON-array item. Geschik vir kleinskaalse take met minder as 40 parallelle iterasies, wat elkeen in die konteks van die werksvloei wat die Map
toestand bevat, uitgevoer word.
Distributed Mode: Ontwerp vir grootmaat parallelle verwerking met hoë mededinging. Ondersteun die verwerking van groot datasets, soos dié wat in Amazon S3 gestoor is, wat 'n hoë mededinging van tot 10,000 parallelle kind werksvloei-uitvoerings moontlik maak, wat hierdie kinders as 'n aparte kind uitvoering uitvoer.
Step Functions laat jou ook toe om werksvloei-implementasies te bestuur deur weergawe en alias van toestandmasjiene. 'n Weergawe verteenwoordig 'n snapshot van 'n toestandmasjien wat uitgevoer kan word. Aliasse dien as wysers na tot twee weergawes van 'n toestandmasjien.
Versions: Hierdie onveranderlike snapshots van 'n toestandmasjien word geskep vanaf die mees onlangse hersiening van daardie toestandmasjien. Elke weergawe word geïdentifiseer deur 'n unieke ARN wat die toestandmasjien ARN met die weergawe nommer kombineer, geskei deur 'n dubbelepunt (arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number
). Weergawes kan nie gewysig word nie, maar jy kan die toestandmasjien opdateer en 'n nuwe weergawe publiseer, of die gewenste toestandmasjien weergawe gebruik.
Aliases: Hierdie wysers kan tot twee weergawes van dieselfde toestandmasjien verwys. Meerdere aliasses kan geskep word vir 'n enkele toestandmasjien, elkeen geïdentifiseer deur 'n unieke ARN wat die toestandmasjien ARN met die alias naam kombineer, geskei deur 'n dubbelepunt (arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName
). Aliasse stel die roetering van verkeer tussen een van die twee weergawes van 'n toestandmasjien in staat. Alternatiewelik kan 'n alias na 'n enkele spesifieke weergawe van die toestandmasjien wys, maar nie na ander aliasses nie. Hulle kan opgedateer word om na 'n ander weergawe van die toestandmasjien te herlei soos nodig, wat beheerde implementasies en werksvloei-bestuur fasiliteer.
Vir meer gedetailleerde inligting oor ASL, kyk: Amazon States Language.
AWS Step Functions gebruik AWS Identity and Access Management (IAM) rolle om toegang tot hulpbronne en aksies binne toestandmasjiene te beheer. Hier is die sleutel aspekte wat verband hou met sekuriteit en IAM rolle in AWS Step Functions:
Execution Role: Elke toestandmasjien in AWS Step Functions is geassosieer met 'n IAM uitvoering rol. Hierdie rol definieer watter aksies die toestandmasjien namens jou kan uitvoer. Wanneer 'n toestandmasjien tussen toestande oorgaan wat met AWS dienste interaksie het (soos die aanroep van Lambda funksies, toegang tot DynamoDB, ens.), neem dit hierdie uitvoering rol aan om daardie aksies uit te voer.
Permissions: Die IAM uitvoering rol moet geconfigureer word met toestemmings wat die nodige aksies op ander AWS dienste toelaat. Byvoorbeeld, as jou toestandmasjien AWS Lambda funksies moet aanroep, moet die IAM rol lambda:InvokeFunction
toestemmings hê. Op soortgelyke wyse, as dit na DynamoDB moet skryf, moet toepaslike toestemmings (dynamodb:PutItem
, dynamodb:UpdateItem
, ens.) toegestaan word.
ReadOnlyAccess beleid is genoeg vir al die volgende enumerasie aksies.
In die volgende bladsy kan jy kyk hoe om Step Functions-toestemmings te misbruik om voorregte te verhoog:
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)