Ansible Tower / AWX / Automation controller Security
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)
Ansible Tower ή η ανοιχτού κώδικα έκδοσή του AWX είναι επίσης γνωστή ως διεπαφή χρήστη του Ansible, πίνακας ελέγχου και REST API. Με έλεγχο πρόσβασης βάσει ρόλων, προγραμματισμό εργασιών και γραφική διαχείριση αποθεμάτων, μπορείτε να διαχειριστείτε την υποδομή Ansible από μια σύγχρονη διεπαφή. Το REST API και η διεπαφή γραμμής εντολών του Tower διευκολύνουν την ενσωμάτωσή του σε τρέχοντα εργαλεία και ροές εργασίας.
Ο Automation Controller είναι μια νεότερη έκδοση του Ansible Tower με περισσότερες δυνατότητες.
Σύμφωνα με αυτό, οι κύριες διαφορές μεταξύ του Ansible Tower και του AWX είναι η υποστήριξη που λαμβάνουν και το Ansible Tower έχει επιπλέον χαρακτηριστικά όπως έλεγχο πρόσβασης βάσει ρόλων, υποστήριξη για προσαρμοσμένα APIs και ροές εργασίας που καθορίζονται από τον χρήστη.
Web Interface: Αυτή είναι η γραφική διεπαφή όπου οι χρήστες μπορούν να διαχειρίζονται αποθέματα, διαπιστευτήρια, πρότυπα και εργασίες. Είναι σχεδιασμένη να είναι διαισθητική και παρέχει οπτικοποιήσεις για να βοηθήσει στην κατανόηση της κατάστασης και των αποτελεσμάτων των αυτοματοποιημένων εργασιών σας.
REST API: Ό,τι μπορείτε να κάνετε στη διεπαφή ιστού, μπορείτε επίσης να το κάνετε μέσω του REST API. Αυτό σημαίνει ότι μπορείτε να ενσωματώσετε το AWX/Tower με άλλα συστήματα ή να αυτοματοποιήσετε ενέργειες που θα εκτελούσατε συνήθως στη διεπαφή.
Database: Το AWX/Tower χρησιμοποιεί μια βάση δεδομένων (συνήθως PostgreSQL) για να αποθηκεύει τη διαμόρφωσή του, τα αποτελέσματα εργασιών και άλλα απαραίτητα δεδομένα λειτουργίας.
RabbitMQ: Αυτό είναι το σύστημα μηνυμάτων που χρησιμοποιείται από το AWX/Tower για να επικοινωνεί μεταξύ των διαφόρων στοιχείων, ειδικά μεταξύ της υπηρεσίας ιστού και των εκτελεστών εργασιών.
Redis: Το Redis λειτουργεί ως cache και backend για την ουρά εργασιών.
Inventories: Ένα απόθεμα είναι μια συλλογή υπολογιστών (ή κόμβων) κατά των οποίων μπορούν να εκτελούνται εργασίες (Ansible playbooks). Το AWX/Tower σας επιτρέπει να ορίσετε και να ομαδοποιήσετε τα αποθέματά σας και υποστηρίζει επίσης δυναμικά αποθέματα που μπορούν να ανακτούν λίστες υπολογιστών από άλλα συστήματα όπως AWS, Azure κ.λπ.
Projects: Ένα έργο είναι ουσιαστικά μια συλλογή Ansible playbooks που προέρχονται από ένα σύστημα ελέγχου εκδόσεων (όπως το Git) για να αντλούν τα πιο πρόσφατα playbooks όταν χρειάζεται.
Templates: Τα πρότυπα εργασιών καθορίζουν πώς θα εκτελείται ένα συγκεκριμένο playbook, καθορίζοντας το απόθεμα, τα διαπιστευτήρια και άλλες παραμέτρους για την εργασία.
Credentials: Το AWX/Tower παρέχει έναν ασφαλή τρόπο για να διαχειρίζεστε και να αποθηκεύετε μυστικά, όπως κλειδιά SSH, κωδικούς πρόσβασης και API tokens. Αυτά τα διαπιστευτήρια μπορούν να συσχετιστούν με πρότυπα εργασιών ώστε τα playbooks να έχουν την απαραίτητη πρόσβαση όταν εκτελούνται.
Task Engine: Εδώ συμβαίνει η μαγεία. Ο κινητήρας εργασιών βασίζεται στο Ansible και είναι υπεύθυνος για την εκτέλεση των playbooks. Οι εργασίες αποστέλλονται στον κινητήρα εργασιών, ο οποίος στη συνέχεια εκτελεί τα Ansible playbooks κατά του καθορισμένου αποθέματος χρησιμοποιώντας τα καθορισμένα διαπιστευτήρια.
Schedulers and Callbacks: Αυτές είναι προηγμένες δυνατότητες στο AWX/Tower που επιτρέπουν στις εργασίες να προγραμματίζονται να εκτελούνται σε συγκεκριμένες χρονικές στιγμές ή να ενεργοποιούνται από εξωτερικά γεγονότα.
Notifications: Το AWX/Tower μπορεί να στέλνει ειδοποιήσεις με βάση την επιτυχία ή την αποτυχία των εργασιών. Υποστηρίζει διάφορους τρόπους ειδοποιήσεων όπως emails, μηνύματα Slack, webhooks κ.λπ.
Ansible Playbooks: Τα Ansible playbooks είναι εργαλεία διαμόρφωσης, ανάπτυξης και ορχήστρωσης. Περιγράφουν την επιθυμητή κατάσταση των συστημάτων με έναν αυτοματοποιημένο, επαναλαμβανόμενο τρόπο. Γραμμένα σε YAML, τα playbooks χρησιμοποιούν τη δηλωτική γλώσσα αυτοματοποίησης του Ansible για να περιγράψουν διαμορφώσεις, εργασίες και βήματα που πρέπει να εκτελούνται.
User Interaction: Ένας χρήστης μπορεί να αλληλεπιδράσει με το AWX/Tower είτε μέσω της Web Interface είτε μέσω του REST API. Αυτά παρέχουν πρόσβαση front-end σε όλες τις λειτουργίες που προσφέρει το AWX/Tower.
Job Initiation:
Ο χρήστης, μέσω της Web Interface ή API, ξεκινά μια εργασία με βάση ένα Job Template.
Το Job Template περιλαμβάνει αναφορές στο Inventory, Project (που περιέχει το playbook) και Credentials.
Κατά την έναρξη της εργασίας, αποστέλλεται ένα αίτημα στο backend του AWX/Tower για να προγραμματιστεί η εργασία για εκτέλεση.
Job Queuing:
RabbitMQ διαχειρίζεται τη μηνυματοδότηση μεταξύ του διαδικτυακού στοιχείου και των εκτελεστών εργασιών. Μόλις ξεκινήσει μια εργασία, ένα μήνυμα αποστέλλεται στον κινητήρα εργασιών χρησιμοποιώντας το RabbitMQ.
Redis λειτουργεί ως backend για την ουρά εργασιών, διαχειριζόμενος τις προγραμματισμένες εργασίες που περιμένουν εκτέλεση.
Job Execution:
Ο Task Engine παραλαμβάνει την προγραμματισμένη εργασία. Ανακτά τις απαραίτητες πληροφορίες από τη Database σχετικά με το σχετικό playbook της εργασίας, το απόθεμα και τα διαπιστευτήρια.
Χρησιμοποιώντας το ανακτηθέν Ansible playbook από το σχετικό Project, ο Task Engine εκτελεί το playbook κατά των καθορισμένων κόμβων Inventory χρησιμοποιώντας τα παρεχόμενα Credentials.
Καθώς εκτελείται το playbook, η έξοδος εκτέλεσής του (καταγραφές, γεγονότα κ.λπ.) καταγράφεται και αποθηκεύεται στη Database.
Job Results:
Μόλις ολοκληρωθεί η εκτέλεση του playbook, τα αποτελέσματα (επιτυχία, αποτυχία, καταγραφές) αποθηκεύονται στη Database.
Οι χρήστες μπορούν στη συνέχεια να δουν τα αποτελέσματα μέσω της Web Interface ή να τα ερωτήσουν μέσω του REST API.
Με βάση τα αποτελέσματα της εργασίας, οι Notifications μπορούν να αποσταλούν για να ενημερώσουν τους χρήστες ή τα εξωτερικά συστήματα σχετικά με την κατάσταση της εργασίας. Οι ειδοποιήσεις θα μπορούσαν να είναι emails, μηνύματα Slack, webhooks κ.λπ.
External Systems Integration:
Inventories μπορούν να αντλούνται δυναμικά από εξωτερικά συστήματα, επιτρέποντας στο AWX/Tower να αντλεί υπολογιστές από πηγές όπως AWS, Azure, VMware και άλλα.
Projects (playbooks) μπορούν να αντλούνται από συστήματα ελέγχου εκδόσεων, διασφαλίζοντας τη χρήση ενημερωμένων playbooks κατά την εκτέλεση εργασιών.
Schedulers and Callbacks μπορούν να χρησιμοποιηθούν για να ενσωματωθούν με άλλα συστήματα ή εργαλεία, κάνοντάς το AWX/Tower να αντιδρά σε εξωτερικά ερεθίσματα ή να εκτελεί εργασίες σε προκαθορισμένες χρονικές στιγμές.
Following the docs it's possible to use docker-compose to run AWX:
Ο πιο προνομιούχος ρόλος ονομάζεται Διαχειριστής Συστήματος. Οποιοσδήποτε με αυτόν τον ρόλο μπορεί να τροποποιήσει οτιδήποτε.
Από μια λευκή ανασκόπηση ασφαλείας, θα χρειαστείτε τον ρόλο Ελεγκτή Συστήματος, ο οποίος επιτρέπει να δείτε όλα τα δεδομένα του συστήματος αλλά δεν μπορεί να κάνει καμία αλλαγή. Μια άλλη επιλογή θα ήταν να αποκτήσετε τον ρόλο Ελεγκτή Οργάνωσης, αλλά θα ήταν καλύτερα να αποκτήσετε τον άλλο.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)