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 είναι μια υπηρεσία ροής εργασίας που σας επιτρέπει να συντονίζετε και να οργανώνετε πολλές υπηρεσίες AWS σε serverless ροές εργασίας. Χρησιμοποιώντας το AWS Step Functions, μπορείτε να σχεδιάσετε και να εκτελέσετε ροές εργασίας που συνδέουν διάφορες υπηρεσίες AWS όπως AWS Lambda, Amazon S3, Amazon DynamoDB και πολλές άλλες, σε μια ακολουθία βημάτων. Αυτή η υπηρεσία ορχήστρωσης παρέχει μια οπτική διεπαφή ροής εργασίας και προσφέρει δυνατότητες μηχανής καταστάσεων, επιτρέποντάς σας να ορίσετε κάθε βήμα της ροής εργασίας με δηλωτικό τρόπο χρησιμοποιώντας τη γλώσσα Amazon States Language (ASL) βασισμένη σε JSON.
Το AWS Step Functions προσφέρει δύο τύπους ροών εργασίας μηχανής καταστάσεων: Standard και Express.
Standard Workflow: Αυτός ο προεπιλεγμένος τύπος ροής εργασίας έχει σχεδιαστεί για διαδικασίες που διαρκούν πολύ, είναι ανθεκτικές και ελέγξιμες. Υποστηρίζει ακριβώς-μία εκτέλεση, διασφαλίζοντας ότι οι εργασίες εκτελούνται μόνο μία φορά εκτός αν καθοριστούν επαναλήψεις. Είναι ιδανικό για ροές εργασίας που χρειάζονται λεπτομερή ιστορικό εκτέλεσης και μπορεί να εκτελείται για έως και ένα έτος.
Express Workflow: Αυτός ο τύπος είναι ιδανικός για εργασίες υψηλού όγκου και σύντομης διάρκειας, εκτελούμενες έως πέντε λεπτά. Υποστηρίζουν τουλάχιστον-μία εκτέλεση, κατάλληλο για ιδεομονωτικές εργασίες όπως η επεξεργασία δεδομένων. Αυτές οι ροές εργασίας είναι βελτιστοποιημένες για κόστος και απόδοση, χρεώνοντας με βάση τις εκτελέσεις, τη διάρκεια και τη χρήση μνήμης.
Οι καταστάσεις είναι οι βασικές μονάδες των μηχανών καταστάσεων. Ορίζουν τα ατομικά βήματα μέσα σε μια ροή εργασίας, ικανές να εκτελούν μια ποικιλία λειτουργιών ανάλογα με τον τύπο τους:
Task: Εκτελεί μια εργασία, συχνά χρησιμοποιώντας μια υπηρεσία AWS όπως η Lambda.
Choice: Παίρνει αποφάσεις με βάση την είσοδο.
Fail/Succeed: Τερματίζει την εκτέλεση με αποτυχία ή επιτυχία.
Pass: Μεταφέρει την είσοδο στην έξοδο ή εισάγει δεδομένα.
Wait: Καθυστερεί την εκτέλεση για καθορισμένο χρόνο.
Parallel: Ξεκινά παράλληλες διακλαδώσεις.
Map: Δυναμικά επαναλαμβάνει βήματα σε αντικείμενα.
Μια κατάσταση Task αντιπροσωπεύει μια μοναδική μονάδα εργασίας που εκτελείται από μια μηχανή καταστάσεων. Οι εργασίες μπορούν να καλέσουν διάφορους πόρους, συμπεριλαμβανομένων δραστηριοτήτων, συναρτήσεων Lambda, υπηρεσιών AWS ή τρίτων APIs.
Activities: Προσαρμοσμένοι εργαζόμενοι που διαχειρίζεστε, κατάλληλοι για διαδικασίες που διαρκούν πολύ.
Resource: arn:aws:states:region:account:activity:name
.
Lambda Functions: Εκτελεί συναρτήσεις AWS Lambda.
Resource: arn:aws:lambda:region:account:function:function-name
.
AWS Services: Ενσωματώνεται άμεσα με άλλες υπηρεσίες AWS, όπως η DynamoDB ή η S3.
Resource: arn:partition:states:region:account:servicename:APIname
.
HTTP Task: Καλεί APIs τρίτων.
Resource field: arn:aws:states:::http:invoke
. Στη συνέχεια, θα πρέπει να παρέχετε τις λεπτομέρειες διαμόρφωσης του API endpoint, όπως το URL του API, τη μέθοδο και τις λεπτομέρειες αυθεντικοποίησης.
Το παρακάτω παράδειγμα δείχνει έναν ορισμό κατάστασης Task που καλεί μια συνάρτηση Lambda με όνομα HelloWorld:
Μια Choice κατάσταση προσθέτει λογική συνθήκης σε μια ροή εργασίας, επιτρέποντας αποφάσεις με βάση τα δεδομένα εισόδου. Αξιολογεί τις καθορισμένες συνθήκες και μεταβαίνει στην αντίστοιχη κατάσταση με βάση τα αποτελέσματα.
Comparison: Κάθε κανόνας επιλογής περιλαμβάνει έναν τελεστή σύγκρισης (π.χ., NumericEquals
, StringEquals
) που συγκρίνει μια μεταβλητή εισόδου με μια καθορισμένη τιμή ή άλλη μεταβλητή.
Next Field: Οι καταστάσεις επιλογής δεν υποστηρίζουν το πεδίο End
, αντίθετα, καθορίζουν την κατάσταση Next
στην οποία θα μεταβούν αν η σύγκριση είναι αληθής.
Example of Choice state:
Μια Fail
κατάσταση σταματά την εκτέλεση μιας μηχανής καταστάσεων και την επισημαίνει ως αποτυχία. Χρησιμοποιείται για να καθορίσει ένα όνομα σφάλματος και μια αιτία, παρέχοντας λεπτομέρειες σχετικά με την αποτυχία. Αυτή η κατάσταση είναι τερματική, που σημαίνει ότι τερματίζει τη ροή εκτέλεσης.
Μια Succeed
κατάσταση σταματά την εκτέλεση με επιτυχία. Χρησιμοποιείται συνήθως για να τερματίσει τη ροή εργασίας όταν ολοκληρώνεται με επιτυχία. Αυτή η κατάσταση δεν απαιτεί ένα πεδίο Next
.
Μια Pass κατάσταση μεταφέρει την είσοδό της στην έξοδό της είτε χωρίς να εκτελεί καμία εργασία είτε μετασχηματίζοντας την είσοδο JSON χρησιμοποιώντας φίλτρα, και στη συνέχεια μεταφέρει τα μετασχηματισμένα δεδομένα στην επόμενη κατάσταση. Είναι χρήσιμη για τη δοκιμή και την κατασκευή μηχανών καταστάσεων, επιτρέποντάς σας να εισάγετε στατικά δεδομένα ή να τα μετασχηματίσετε.
Μια Wait κατάσταση καθυστερεί την εκτέλεση της μηχανής καταστάσεων για μια καθορισμένη διάρκεια. Υπάρχουν τρεις κύριες μέθοδοι για να ρυθμίσετε τον χρόνο αναμονής:
X Δευτερόλεπτα: Ένας σταθερός αριθμός δευτερολέπτων για αναμονή.
Απόλυτος Χρόνος: Ένας ακριβής χρόνος για αναμονή μέχρι.
Δυναμική Αναμονή: Βασισμένη σε είσοδο χρησιμοποιώντας SecondsPath
ή TimestampPath
.
Μια Parallel κατάσταση σας επιτρέπει να εκτελείτε πολλαπλά κλαδιά εργασιών ταυτόχρονα μέσα στη ροή εργασίας σας. Κάθε κλάδος εκτελείται ανεξάρτητα και επεξεργάζεται τη δική του ακολουθία καταστάσεων. Η εκτέλεση περιμένει μέχρι να ολοκληρωθούν όλα τα κλαδιά πριν προχωρήσει στην επόμενη κατάσταση. Τα κύρια πεδία της είναι:
Branches: Ένας πίνακας που ορίζει τις παράλληλες διαδρομές εκτέλεσης. Κάθε κλάδος είναι μια ξεχωριστή μηχανή καταστάσεων.
ResultPath: Ορίζει πού (στην είσοδο) να τοποθετηθεί η συνδυασμένη έξοδος των κλαδιών.
Retry and Catch: Ρυθμίσεις διαχείρισης σφαλμάτων για την παράλληλη κατάσταση.
Μια Map κατάσταση επιτρέπει την εκτέλεση ενός συνόλου βημάτων για κάθε στοιχείο σε ένα σύνολο δεδομένων. Χρησιμοποιείται για παράλληλη επεξεργασία δεδομένων. Ανάλογα με το πώς θέλετε να επεξεργαστείτε τα στοιχεία του συνόλου δεδομένων, οι Step Functions παρέχουν τους εξής τρόπους:
Inline Mode: Εκτελεί ένα υποσύνολο καταστάσεων για κάθε στοιχείο JSON array. Κατάλληλο για μικρής κλίμακας εργασίες με λιγότερες από 40 παράλληλες επαναλήψεις, εκτελώντας καθεμία από αυτές στο πλαίσιο της ροής εργασίας που περιέχει την Map
κατάσταση.
Distributed Mode: Σχεδιασμένο για επεξεργασία μεγάλης κλίμακας με υψηλή ταυτόχρονη εκτέλεση. Υποστηρίζει την επεξεργασία μεγάλων συνόλων δεδομένων, όπως αυτά που αποθηκεύονται στο Amazon S3, επιτρέποντας υψηλή ταυτόχρονη εκτέλεση έως 10,000 παράλληλων εκτελέσεων υποροής εργασίας, εκτελώντας αυτές τις υποροές ως ξεχωριστές εκτελέσεις.
Οι Step Functions σας επιτρέπουν επίσης να διαχειρίζεστε τις αναπτύξεις ροών εργασίας μέσω εκδόσεων και ψευδωνύμων μηχανών καταστάσεων. Μια έκδοση αντιπροσωπεύει μια στιγμιότυπο μιας μηχανής κατάστασης που μπορεί να εκτελεστεί. Τα ψευδώνυμα λειτουργούν ως δείκτες σε έως δύο εκδόσεις μιας μηχανής κατάστασης.
Εκδόσεις: Αυτά τα αμετάβλητα στιγμιότυπα μιας μηχανής κατάστασης δημιουργούνται από την πιο πρόσφατη αναθεώρηση αυτής της μηχανής κατάστασης. Κάθε έκδοση αναγνωρίζεται από μια μοναδική ARN που συνδυάζει την ARN της μηχανής κατάστασης με τον αριθμό έκδοσης, χωρισμένα με άνω και κάτω τελεία (arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number
). Οι εκδόσεις δεν μπορούν να επεξεργαστούν, αλλά μπορείτε να ενημερώσετε τη μηχανή κατάστασης και να δημοσιεύσετε μια νέα έκδοση ή να χρησιμοποιήσετε την επιθυμητή έκδοση μηχανής κατάστασης.
Ψευδώνυμα: Αυτοί οι δείκτες μπορούν να αναφέρονται σε έως δύο εκδόσεις της ίδιας μηχανής κατάστασης. Πολλαπλά ψευδώνυμα μπορούν να δημιουργηθούν για μια μόνο μηχανή κατάστασης, καθένα αναγνωριζόμενο από μια μοναδική ARN που κατασκευάζεται συνδυάζοντας την ARN της μηχανής κατάστασης με το όνομα ψευδωνύμου, χωρισμένα με άνω και κάτω τελεία (arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName
). Τα ψευδώνυμα επιτρέπουν τη δρομολόγηση της κίνησης μεταξύ μιας από τις δύο εκδόσεις μιας μηχανής κατάστασης. Εναλλακτικά, ένα ψευδώνυμο μπορεί να δείχνει σε μια συγκεκριμένη έκδοση της μηχανής κατάστασης, αλλά όχι σε άλλα ψευδώνυμα. Μπορούν να ενημερωθούν για να ανακατευθύνουν σε μια διαφορετική έκδοση της μηχανής κατάστασης όπως απαιτείται, διευκολύνοντας τις ελεγχόμενες αναπτύξεις και τη διαχείριση ροών εργασίας.
Για περισσότερες λεπτομέρειες σχετικά με το ASL, ελέγξτε: Amazon States Language.
Οι AWS Step Functions χρησιμοποιούν ρόλους AWS Identity and Access Management (IAM) για να ελέγχουν την πρόσβαση σε πόρους και ενέργειες εντός των μηχανών καταστάσεων. Ακολουθούν οι βασικές πτυχές που σχετίζονται με την ασφάλεια και τους ρόλους IAM στις AWS Step Functions:
Ρόλος Εκτέλεσης: Κάθε μηχανή κατάστασης στις AWS Step Functions συνδέεται με έναν ρόλο εκτέλεσης IAM. Αυτός ο ρόλος καθορίζει ποιες ενέργειες μπορεί να εκτελέσει η μηχανή κατάστασης εκ μέρους σας. Όταν μια μηχανή κατάστασης μεταβαίνει μεταξύ καταστάσεων που αλληλεπιδρούν με υπηρεσίες AWS (όπως η κλήση λειτουργιών Lambda, η πρόσβαση σε DynamoDB, κ.λπ.), αναλαμβάνει αυτόν τον ρόλο εκτέλεσης για να εκτελέσει αυτές τις ενέργειες.
Δικαιώματα: Ο ρόλος εκτέλεσης IAM πρέπει να είναι διαμορφωμένος με δικαιώματα που επιτρέπουν τις απαραίτητες ενέργειες σε άλλες υπηρεσίες AWS. Για παράδειγμα, αν η μηχανή κατάστασης χρειάζεται να καλέσει λειτουργίες AWS Lambda, ο ρόλος IAM πρέπει να έχει δικαιώματα lambda:InvokeFunction
. Ομοίως, αν χρειάζεται να γράψει σε DynamoDB, πρέπει να παραχωρηθούν κατάλληλα δικαιώματα (dynamodb:PutItem
, dynamodb:UpdateItem
, κ.λπ.).
Η πολιτική ReadOnlyAccess είναι αρκετή για όλες τις παρακάτω ενέργειες απαρίθμησης.
Στην παρακάτω σελίδα, μπορείτε να ελέγξετε πώς να καταχραστείτε τις άδειες των Step Functions για να κλιμακώσετε τα προνόμια:
AWS - Step Functions PrivescLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)