Ansible Tower / AWX / Automation controller Security

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Ansible Tower of sy oopbron-weergawe AWX staan ook bekend as Ansible se gebruikerskoppelvlak, dashboard, en REST API. Met rolgebaseerde toegangsbeheer, taakbeplanning, en grafiese voorraadbestuur, kan jy jou Ansible-infrastruktuur bestuur vanuit 'n moderne gebruikerskoppelvlak. Tower se REST API en opdraglynkoppelvlak maak dit maklik om dit te integreer in huidige gereedskap en werksvloei.

Outomatiseringsbeheerder is 'n nuwer weergawe van Ansible Tower met meer vermoëns.

Verskille

Volgens hierdie, is die hoofverskille tussen Ansible Tower en AWX die ontvangste ondersteuning en die feit dat Ansible Tower addisionele kenmerke het soos rolgebaseerde toegangsbeheer, ondersteuning vir aangepaste API's, en gebruikers-gedefinieerde werksvloei.

Tegnologie-stapel

  • Webkoppelvlak: Dit is die grafiese koppelvlak waar gebruikers voorrade, geloofsbriewe, templaatte, en take kan bestuur. Dit is ontwerp om intuïtief te wees en bied visualiserings om te help met die verstaan van die toestand en resultate van jou outomatiseringstake.

  • REST API: Alles wat jy in die webkoppelvlak kan doen, kan jy ook doen via die REST API. Dit beteken jy kan AWX/Tower integreer met ander stelsels of aksies skript wat jy gewoonlik in die koppelvlak sou uitvoer.

  • Databasis: AWX/Tower gebruik 'n databasis (tipies PostgreSQL) om sy konfigurasie, taakresultate, en ander noodsaaklike operasionele data te stoor.

  • RabbitMQ: Dit is die boodskapsisteem wat deur AWX/Tower gebruik word om te kommunikeer tussen die verskillende komponente, veral tussen die webdiens en die taakuitvoerders.

  • Redis: Redis dien as 'n cache en 'n agterkant vir die taakry.

Logiese Komponente

  • Voorrade: 'n voorraad is 'n versameling gasheer (of knotte) teen wie take (Ansible-playbooks) uitgevoer kan word. AWX/Tower laat jou toe om jou voorrade te definieer en te groepeer en ondersteun ook dinamiese voorrade wat gasheerlyste kan ophaal van ander stelsels soos AWS, Azure, ens.

  • Projekte: 'n projek is in wese 'n versameling Ansible-playbooks afkomstig van 'n weergawebeheerstelsel (soos Git) om die nuutste playbooks te trek wanneer dit benodig word.

  • Templaatte: Taaktemplaatte definieer hoe 'n spesifieke playbook uitgevoer sal word, waarin die voorraad, geloofsbriewe, en ander parameters vir die taak gespesifiseer word.

  • Geloofsbriewe: AWX/Tower bied 'n veilige manier om geheime te bestuur en te stoor, soos SSH-sleutels, wagwoorde, en API-tokens. Hierdie geloofsbriewe kan geassosieer word met taaktemplaatte sodat playbooks die nodige toegang het wanneer hulle uitgevoer word.

  • Taak-enjin: Hier gebeur die wonderwerk. Die taak-enjin is gebou op Ansible en is verantwoordelik vir die uitvoering van die playbooks. Take word na die taak-enjin gestuur, wat dan die Ansible-playbooks teen die aangewese voorraad uitvoer met die gespesifiseerde geloofsbriewe.

  • Skeduleerders en Terugroepings: Dit is gevorderde kenmerke in AWX/Tower wat toelaat dat take geskeduleer word om op spesifieke tye uitgevoer te word of deur eksterne gebeurtenisse geaktiveer te word.

  • Kennisgewings: AWX/Tower kan kennisgewings stuur gebaseer op die sukses of mislukking van take. Dit ondersteun verskeie maniere van kennisgewings soos e-posse, Slack-boodskappe, webhooks, ens.

  • Ansible Playbooks: Ansible-playbooks is konfigurasie-, implementerings-, en orkestrasietoerusting. Hulle beskryf die gewenste toestand van stelsels op 'n geoutomatiseerde, herhaalbare manier. Geskryf in YAML, gebruik playbooks Ansible se deklaratiewe outomatiserings-taal om konfigurasies, take, en stappe te beskryf wat uitgevoer moet word.

Taakuitvoeringsvloei

  1. Gebruikerinteraksie: 'n Gebruiker kan met AWX/Tower interaksie hê deur die Webkoppelvlak of die REST API. Hierdie bied front-end toegang tot al die funksionaliteite wat deur AWX/Tower aangebied word.

  2. Taakinisiasie:

  • Die gebruiker, via die Webkoppelvlak of API, inisieer 'n taak gebaseer op 'n Taaktemplaat.

  • Die Taaktemplaat sluit verwysings na die Voorraad, Projek (wat die playbook bevat), en Geloofsbriewe in.

  • Met die inisiasie van die taak, word 'n versoek gestuur na die AWX/Tower-agterkant om die taak vir uitvoering in die tou te plaas.

  1. Taak in die Tou:

  • RabbitMQ hanteer die boodskappe tussen die webkomponent en die taakuitvoerders. Sodra 'n taak geïnisieer word, word 'n boodskap na die taak-enjin gestuur deur RabbitMQ.

  • Redis tree op as die agterkant vir die taakry, wat die in die tou wagende take bestuur.

  1. Taakuitvoering:

  • Die Taak-enjin neem die taak in die tou op. Dit haal die nodige inligting uit die Databasis oor die taak se geassosieerde playbook, voorraad, en geloofsbriewe.

  • Deur die herwinde Ansible-playbook van die geassosieerde Projek te gebruik, voer die Taak-enjin die playbook teen die gespesifiseerde Voorraad-knope uit met die voorsiene Geloofsbriewe.

  • Terwyl die playbook uitgevoer word, word sy uitvoer (logs, feite, ens.) vasgevang en gestoor in die Databasis.

  1. Taakresultate:

  • Sodra die playbook klaar uitgevoer is, word die resultate (sukses, mislukking, logs) gestoor in die Databasis.

  • Gebruikers kan dan die resultate sien deur die Webkoppelvlak of dit navraag via die REST API.

  • Gebaseer op taakuitkomste, kan Kennisgewings gestuur word om gebruikers of eksterne stelsels in te lig oor die taak se status. Kennisgewings kan e-posse, Slack-boodskappe, webhooks, ens. wees.

  1. Integrasie met Eksterne Stelsels:

  • Voorrade kan dinamies afkomstig wees van eksterne stelsels, wat AWX/Tower in staat stel om gasheer van bronne soos AWS, Azure, VMware, en meer in te trek.

  • Projekte (playbooks) kan uit weergawebeheerstelsels gehaal word, wat verseker dat die nuutste playbooks tydens taakuitvoering gebruik word.

  • Skeduleerders en Terugroepings kan gebruik word om te integreer met ander stelsels of gereedskap, sodat AWX/Tower kan reageer op eksterne aansporings of take op bepaalde tye kan uitvoer.

AWX-laboratoriumskepping vir toetsdoeleindes

Deur die dokumente te volg is dit moontlik om docker-compose te gebruik om AWX te hardloop:

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

Ondersteunde rolle

Die mees bevoorregte rol word genoem Stelseladministrateur. Enigiemand met hierdie rol kan enigiets wysig.

Vanuit 'n witboks-sekuriteit-ondersoek, sal jy die Stelselouditeur-rol nodig hê, wat toelaat om alle stelseldata te sien maar kan geen veranderinge maak nie. 'n Ander opsie sou wees om die Organisasieouditeur-rol te kry, maar dit sal beter wees om die ander een te kry.

Klik hier om 'n gedetailleerde beskrywing van beskikbare rolle te kry
  1. Stelseladministrateur:

  • Dit is die supergebruikerrol met toestemmings om enige hulpbron in die stelsel te benader en wysig.

  • Hulle kan alle organisasies, spanne, projekte, inventarisse, werkjablone, ens. bestuur.

  1. Stelselouditeur:

  • Gebruikers met hierdie rol kan alle stelseldata sien maar kan geen veranderinge maak nie.

  • Hierdie rol is ontwerp vir nakoming en toesig.

  1. Organisasierolle:

  • Admin: Volle beheer oor die organisasie se hulpbronne.

  • Auditeur: Slegs leestoegang tot die organisasie se hulpbronne.

  • Lid: Basiese lidmaatskap in 'n organisasie sonder enige spesifieke toestemmings.

  • Uitvoer: Kan werkjablone binne die organisasie hardloop.

  • Lees: Kan die organisasie se hulpbronne sien.

  1. Projekrolle:

  • Admin: Kan die projek bestuur en wysig.

  • Gebruik: Kan die projek in 'n werkjabloon gebruik.

  • Opdateer: Kan die projek opdateer deur SCM (bronbeheer) te gebruik.

  1. Inventarisrolle:

  • Admin: Kan die inventaris bestuur en wysig.

  • Ad Hoc: Kan ad hoc-opdragte op die inventaris hardloop.

  • Opdateer: Kan die inventarisbron opdateer.

  • Gebruik: Kan die inventaris in 'n werkjabloon gebruik.

  • Lees: Slegs leestoegang.

  1. Werkjabloonrolle:

  • Admin: Kan die werkjabloon bestuur en wysig.

  • Uitvoer: Kan die taak hardloop.

  • Lees: Slegs leestoegang.

  1. Legitimasieringsrolle:

  • Admin: Kan die legitimasies bestuur en wysig.

  • Gebruik: Kan die legitimasies in werkjablone of ander relevante hulpbronne gebruik.

  • Lees: Slegs leestoegang.

  1. Spanrolle:

  • Lid: Deel van die span maar sonder enige spesifieke toestemmings.

  • Admin: Kan die span se lede en geassosieerde hulpbronne bestuur.

  1. Werksvloeirolle:

  • Admin: Kan die werksvloei bestuur en wysig.

  • Uitvoer: Kan die werksvloei hardloop.

  • Lees: Slegs leestoegang.

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated