Ansible Tower / AWX / Automation controller Security
Reading time: 8 minutes
tip
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Ansible Tower ili njegova open-source verzija AWX poznata je kao korisnički interfejs, kontrolna tabla i REST API za Ansible. Sa kontrolom pristupa zasnovanom na rolama, zakazivanjem poslova i grafičkim upravljanjem inventarom, možete upravljati svojom Ansible infrastrukturom iz modernog UI-a. Tower-ov REST API i komandna linija olakšavaju integraciju sa trenutnim alatima i radnim tokovima.
Automation Controller je novija verzija Ansible Tower-a sa više mogućnosti.
Razlike
Prema ovome, glavne razlike između Ansible Tower-a i AWX-a su podrška koja se dobija, a Ansible Tower ima dodatne funkcije kao što su kontrola pristupa zasnovana na rolama, podrška za prilagođene API-je i korisnički definisani radni tokovi.
Tehnološki stack
- Web interfejs: Ovo je grafički interfejs gde korisnici mogu upravljati inventarima, akreditivima, šablonima i poslovima. Dizajniran je da bude intuitivan i pruža vizualizacije koje pomažu u razumevanju stanja i rezultata vaših automatizovanih poslova.
- REST API: Sve što možete da uradite u web interfejsu, možete uraditi i putem REST API-ja. To znači da možete integrisati AWX/Tower sa drugim sistemima ili skriptovati radnje koje biste obično izvodili u interfejsu.
- Baza podataka: AWX/Tower koristi bazu podataka (obično PostgreSQL) za čuvanje svoje konfiguracije, rezultata poslova i drugih neophodnih operativnih podataka.
- RabbitMQ: Ovo je sistem za razmenu poruka koji koristi AWX/Tower za komunikaciju između različitih komponenti, posebno između web servisa i izvršitelja zadataka.
- Redis: Redis služi kao keš i pozadinski sistem za red zadataka.
Logičke komponente
- Inventari: Inventar je kolekcija hostova (ili čvorova) protiv kojih se mogu izvršavati poslovi (Ansible playbook-ovi). AWX/Tower vam omogućava da definišete i grupišete svoje inventare i takođe podržava dinamičke inventare koji mogu pribaviti liste hostova iz drugih sistema kao što su AWS, Azure, itd.
- Projekti: Projekat je u suštini kolekcija Ansible playbook-ova preuzetih iz sistema za kontrolu verzija (kao što je Git) kako bi se povukli najnoviji playbook-ovi kada je to potrebno.
- Šabloni: Šabloni poslova definišu kako će se određeni playbook izvršiti, specificirajući inventar, akreditive i druge parametre za posao.
- Akreditivi: AWX/Tower pruža siguran način za upravljanje i čuvanje tajni, kao što su SSH ključevi, lozinke i API tokeni. Ovi akreditivi mogu biti povezani sa šablonima poslova kako bi playbook-ovi imali neophodan pristup kada se izvrše.
- Task Engine: Ovo je mesto gde se dešava magija. Task engine je izgrađen na Ansible-u i odgovoran je za izvršavanje playbook-ova. Poslovi se šalju task engine-u, koji zatim izvršava Ansible playbook-ove protiv određenog inventara koristeći specificirane akreditive.
- Zakazivači i povratni pozivi: Ovo su napredne funkcije u AWX/Tower-u koje omogućavaju zakazivanje poslova da se izvrše u određenim vremenima ili da budu pokrenuti spoljnim događajima.
- Obaveštenja: AWX/Tower može slati obaveštenja na osnovu uspeha ili neuspeha poslova. Podržava različite načine obaveštavanja kao što su e-mailovi, Slack poruke, webhook-ovi, itd.
- Ansible Playbook-ovi: Ansible playbook-ovi su alati za konfiguraciju, implementaciju i orkestraciju. Oni opisuju željeno stanje sistema na automatizovan, ponovljiv način. Napisani u YAML-u, playbook-ovi koriste Ansible-ov deklarativni jezik automatizacije za opisivanje konfiguracija, zadataka i koraka koji treba da se izvrše.
Tok izvršenja poslova
- Interakcija korisnika: Korisnik može interagovati sa AWX/Tower-om ili putem Web interfejsa ili REST API-ja. Ovi pružaju front-end pristup svim funkcionalnostima koje nudi AWX/Tower.
- Inicijacija posla:
- Korisnik, putem Web interfejsa ili API-ja, inicira posao na osnovu Šablona posla.
- Šablon posla uključuje reference na Inventar, Projekat (koji sadrži playbook) i Akreditive.
- Nakon inicijacije posla, zahtev se šalje AWX/Tower pozadini da se posao stavi u red za izvršenje.
- Redosled poslova:
- RabbitMQ upravlja razmenom poruka između web komponente i izvršitelja zadataka. Kada se posao inicira, poruka se šalje task engine-u koristeći RabbitMQ.
- Redis deluje kao pozadinski sistem za red zadataka, upravljajući redom poslova koji čekaju na izvršenje.
- Izvršenje posla:
- Task Engine preuzima posao iz reda. On pribavlja neophodne informacije iz Baze podataka o povezanom playbook-u, inventaru i akreditivima.
- Koristeći preuzeti Ansible playbook iz povezanog Projekta, Task Engine izvršava playbook protiv specificiranih Inventar čvorova koristeći pružene Akreditive.
- Dok se playbook izvršava, njegov izlaz (logovi, činjenice, itd.) se beleži i čuva u Bazi podataka.
- Rezultati posla:
- Kada se playbook završi, rezultati (uspeh, neuspeh, logovi) se čuvaju u Bazi podataka.
- Korisnici mogu pregledati rezultate putem Web interfejsa ili ih upititi putem REST API-ja.
- Na osnovu ishoda posla, Obaveštenja se mogu slati kako bi obavestila korisnike ili spoljne sisteme o statusu posla. Obaveštenja mogu biti e-mailovi, Slack poruke, webhook-ovi, itd.
- Integracija sa spoljnim sistemima:
- Inventari se mogu dinamički pribavljati iz spoljnih sistema, omogućavajući AWX/Tower-u da povuče hostove iz izvora kao što su AWS, Azure, VMware i drugi.
- Projekti (playbook-ovi) mogu se preuzeti iz sistema za kontrolu verzija, osiguravajući korišćenje ažuriranih playbook-ova tokom izvršenja posla.
- Zakazivači i povratni pozivi mogu se koristiti za integraciju sa drugim sistemima ili alatima, omogućavajući AWX/Tower-u da reaguje na spoljne okidače ili izvršava poslove u unapred određenim vremenima.
Kreiranje AWX laboratorije za testiranje
Prateći dokumentaciju moguće je koristiti docker-compose za pokretanje AWX:
git clone -b x.y.z https://github.com/ansible/awx.git # Get in x.y.z the latest release version
cd awx
# Build
make docker-compose-build
# Run
make docker-compose
# Or to create a more complex env
MAIN_NODE_TYPE=control EXECUTION_NODE_COUNT=2 COMPOSE_TAG=devel make docker-compose
# Clean and build the UI
docker exec tools_awx_1 make clean-ui ui-devel
# Once migrations are completed and the UI is built, you can begin using AWX. The UI can be reached in your browser at https://localhost:8043/#/home, and the API can be found at https://localhost:8043/api/v2.
# Create an admin user
docker exec -ti tools_awx_1 awx-manage createsuperuser
# Load demo data
docker exec tools_awx_1 awx-manage create_preload_data
RBAC
Podržane uloge
Najprivilegovanija uloga se zove Sistem Administrator. Svako ko ima ovu ulogu može modifikovati bilo šta.
Iz white box security pregleda, potrebna vam je Sistem Auditor uloga, koja omogućava pregled svih podataka sistema ali ne može da pravi nikakve promene. Druga opcija bi bila da dobijete Organizacija Auditor ulogu, ali bi bilo bolje da dobijete onu prvu.
Proširite ovo da dobijete detaljan opis dostupnih uloga
- Sistem Administrator:
- Ovo je superuser uloga sa dozvolama za pristup i modifikaciju bilo kog resursa u sistemu.
- Mogu upravljati svim organizacijama, timovima, projektima, inventarima, šablonima poslova, itd.
- Sistem Auditor:
- Korisnici sa ovom ulogom mogu da vide sve podatke sistema, ali ne mogu da prave nikakve promene.
- Ova uloga je dizajnirana za usklađenost i nadzor.
- Uloge Organizacije:
- Admin: Potpuna kontrola nad resursima organizacije.
- Auditor: Pristup samo za pregled resursa organizacije.
- Član: Osnovno članstvo u organizaciji bez specifičnih dozvola.
- Izvrši: Može pokretati šablone poslova unutar organizacije.
- Čitaj: Može pregledati resurse organizacije.
- Uloge Projekta:
- Admin: Može upravljati i modifikovati projekat.
- Koristi: Može koristiti projekat u šablonu posla.
- Ažuriraj: Može ažurirati projekat koristeći SCM (kontrola verzija).
- Uloge Inventara:
- Admin: Može upravljati i modifikovati inventar.
- Ad Hoc: Može pokretati ad hoc komande na inventaru.
- Ažuriraj: Može ažurirati izvor inventara.
- Koristi: Može koristiti inventar u šablonu posla.
- Čitaj: Pristup samo za pregled.
- Uloge Šablona Posla:
- Admin: Može upravljati i modifikovati šablon posla.
- Izvrši: Može pokrenuti posao.
- Čitaj: Pristup samo za pregled.
- Uloge Akreditiva:
- Admin: Može upravljati i modifikovati akreditive.
- Koristi: Može koristiti akreditive u šablonima poslova ili drugim relevantnim resursima.
- Čitaj: Pristup samo za pregled.
- Uloge Tima:
- Član: Deo tima, ali bez specifičnih dozvola.
- Admin: Može upravljati članovima tima i povezanim resursima.
- Uloge Radnog Tok:
- Admin: Može upravljati i modifikovati radni tok.
- Izvrši: Može pokrenuti radni tok.
- Čitaj: Pristup samo za pregled.
tip
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.