Ansible Tower / AWX / Automation controller Security

Support HackTricks

Basic Information

Ansible Tower au toleo lake la wazi AWX pia inajulikana kama kiwango cha mtumiaji wa Ansible, dashibodi, na REST API. Pamoja na udhibiti wa ufikiaji kulingana na majukumu, kupanga kazi, na usimamizi wa hesabu wa picha, unaweza kusimamia miundombinu yako ya Ansible kutoka kwa UI ya kisasa. REST API ya Tower na kiolesura cha amri hufanya iwe rahisi kuunganisha na zana na mifumo ya kazi ya sasa.

Automation Controller ni toleo jipya la Ansible Tower lenye uwezo zaidi.

Differences

Kulingana na hii, tofauti kuu kati ya Ansible Tower na AWX ni msaada unaopatikana na Ansible Tower ina vipengele vya ziada kama udhibiti wa ufikiaji kulingana na majukumu, msaada wa APIs za kawaida, na mifumo ya kazi iliyofafanuliwa na mtumiaji.

Tech Stack

  • Web Interface: Hii ni kiolesura cha picha ambapo watumiaji wanaweza kusimamia hesabu, ithibati, templeti, na kazi. Imeundwa kuwa ya kueleweka na inatoa picha kusaidia kuelewa hali na matokeo ya kazi zako za automatisering.

  • REST API: Kila kitu unachoweza kufanya katika kiolesura cha wavuti, unaweza pia kufanya kupitia REST API. Hii inamaanisha unaweza kuunganisha AWX/Tower na mifumo mingine au kuandika hatua ambazo ungeweza kufanya kawaida katika kiolesura.

  • Database: AWX/Tower inatumia hifadhidata (kawaida PostgreSQL) kuhifadhi usanidi wake, matokeo ya kazi, na data nyingine muhimu za uendeshaji.

  • RabbitMQ: Hii ni mfumo wa ujumbe unaotumiwa na AWX/Tower kuwasiliana kati ya vipengele tofauti, hasa kati ya huduma ya wavuti na waendesha kazi.

  • Redis: Redis inatumika kama cache na nyuma ya foleni ya kazi.

Logical Components

  • Inventories: Hesabu ni mkusanyiko wa mwenyeji (au nodi) ambao kazi (Ansible playbooks) zinaweza kufanywa. AWX/Tower inakuruhusu kufafanua na kuunganisha hesabu zako na pia inasaidia hesabu za kidinamik ambayo zinaweza kupata orodha za wenyeji kutoka mifumo mingine kama AWS, Azure, n.k.

  • Projects: Mradi kimsingi ni mkusanyiko wa Ansible playbooks zinazotolewa kutoka kwa mfumo wa udhibiti wa toleo (kama Git) ili kuvuta playbooks za hivi punde inapohitajika.

  • Templates: Templeti za kazi zinafafanua jinsi playbook fulani itakavyofanywa, ikitaja hesabu, ithibati, na vigezo vingine vya kazi.

  • Credentials: AWX/Tower inatoa njia salama ya kusimamia na kuhifadhi siri, kama funguo za SSH, nywila, na token za API. Ithibati hizi zinaweza kuunganishwa na templeti za kazi ili playbooks zipate ufikiaji unaohitajika zinapofanya kazi.

  • Task Engine: Hapa ndipo uchawi unafanyika. Injini ya kazi imejengwa juu ya Ansible na inawajibika kwa kufanya playbooks. Kazi zinatumwa kwa injini ya kazi, ambayo kisha inafanya playbooks za Ansible dhidi ya hesabu iliyoteuliwa kwa kutumia ithibati zilizotolewa.

  • Schedulers and Callbacks: Hizi ni vipengele vya juu katika AWX/Tower vinavyoruhusu kazi kuandaliwa kufanywa kwa nyakati maalum au kuanzishwa na matukio ya nje.

  • Notifications: AWX/Tower inaweza kutuma arifa kulingana na mafanikio au kushindwa kwa kazi. Inasaidia njia mbalimbali za arifa kama barua pepe, ujumbe wa Slack, webhooks, n.k.

  • Ansible Playbooks: Ansible playbooks ni zana za usanidi, usambazaji, na uratibu. Zinabainisha hali inayotakiwa ya mifumo kwa njia ya automatisering, inayoweza kurudiwa. Imeandikwa kwa YAML, playbooks hutumia lugha ya automatisering ya Ansible kuelezea usanidi, kazi, na hatua zinazohitajika kutekelezwa.

Job Execution Flow

  1. User Interaction: Mtumiaji anaweza kuingiliana na AWX/Tower ama kupitia Web Interface au REST API. Hizi zinatoa ufikiaji wa mbele kwa kazi zote zinazotolewa na AWX/Tower.

  2. Job Initiation:

  • Mtumiaji, kupitia Web Interface au API, anaanzisha kazi kulingana na Job Template.

  • Job Template inajumuisha marejeleo kwa Hesabu, Mradi (unaoshikilia playbook), na Ithibati.

  • Mara kazi inapoanzishwa, ombi linawekwa kwa AWX/Tower backend ili kuweka kazi hiyo kwa utekelezaji.

  1. Job Queuing:

  • RabbitMQ inashughulikia ujumbe kati ya kipengele cha wavuti na waendesha kazi. Mara kazi inapoanzishwa, ujumbe unatumwa kwa injini ya kazi kwa kutumia RabbitMQ.

  • Redis inafanya kazi kama nyuma ya foleni ya kazi, ikisimamia kazi zilizowekwa zinazosubiri utekelezaji.

  1. Job Execution:

  • Task Engine inachukua kazi iliyowekwa. Inapata taarifa muhimu kutoka kwa Database kuhusu playbook inayohusishwa na kazi, hesabu, na ithibati.

  • Kwa kutumia playbook ya Ansible iliyopatikana kutoka kwa Mradi uliohusishwa, Injini ya Kazi inafanya playbook dhidi ya nodi za Hesabu zilizotajwa kwa kutumia Ithibati zilizotolewa.

  • Wakati playbook inafanya kazi, matokeo yake ya utekelezaji (kumbukumbu, ukweli, n.k.) yanakusanywa na kuhifadhiwa katika Database.

  1. Job Results:

  • Mara playbook inapokamilisha kufanya kazi, matokeo (mafanikio, kushindwa, kumbukumbu) yanahifadhiwa kwenye Database.

  • Watumiaji wanaweza kisha kuona matokeo kupitia Web Interface au kuyatafuta kupitia REST API.

  • Kulingana na matokeo ya kazi, Arifa zinaweza kutumwa ili kuwajulisha watumiaji au mifumo ya nje kuhusu hali ya kazi. Arifa zinaweza kuwa barua pepe, ujumbe wa Slack, webhooks, n.k.

  1. External Systems Integration:

  • Hesabu zinaweza kupatikana kwa kidinamik kutoka mifumo ya nje, ikiruhusu AWX/Tower kuvuta wenyeji kutoka vyanzo kama AWS, Azure, VMware, na zaidi.

  • Miradi (playbooks) zinaweza kupatikana kutoka kwa mifumo ya udhibiti wa toleo, kuhakikisha matumizi ya playbooks za kisasa wakati wa utekelezaji wa kazi.

  • Schedulers and Callbacks zinaweza kutumika kuunganisha na mifumo au zana nyingine, ikifanya AWX/Tower kujibu vichocheo vya nje au kufanya kazi kwa nyakati zilizowekwa.

AWX lab creation for testing

Following the docs it's possible to use docker-compose to run 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

Supported roles

Jukumu lenye mamlaka zaidi linaitwa System Administrator. Mtu yeyote mwenye jukumu hili anaweza kubadilisha chochote.

Kutoka kwenye white box security ukaguzi, unahitaji System Auditor role, ambayo inaruhusu kuangalia data zote za mfumo lakini haiwezi kufanya mabadiliko yoyote. Chaguo lingine lingekuwa kupata Organization Auditor role, lakini itakuwa bora kupata ile nyingine.

Expand this to get detailed description of available roles
  1. System Administrator:

  • Hii ni jukumu la superuser lenye ruhusa za kufikia na kubadilisha rasilimali yoyote katika mfumo.

  • Wanaweza kusimamia mashirika yote, timu, miradi, orodha, templeti za kazi, nk.

  1. System Auditor:

  • Watumiaji wenye jukumu hili wanaweza kuona data zote za mfumo lakini hawawezi kufanya mabadiliko yoyote.

  • Jukumu hili limetengwa kwa ajili ya kufuata sheria na uangalizi.

  1. Organization Roles:

  • Admin: Udhibiti kamili juu ya rasilimali za shirika.

  • Auditor: Ufikiaji wa kuangalia tu kwenye rasilimali za shirika.

  • Member: Uanachama wa msingi katika shirika bila ruhusa maalum.

  • Execute: Anaweza kuendesha templeti za kazi ndani ya shirika.

  • Read: Anaweza kuona rasilimali za shirika.

  1. Project Roles:

  • Admin: Anaweza kusimamia na kubadilisha mradi.

  • Use: Anaweza kutumia mradi katika templeti ya kazi.

  • Update: Anaweza kuboresha mradi kwa kutumia SCM (source control).

  1. Inventory Roles:

  • Admin: Anaweza kusimamia na kubadilisha orodha.

  • Ad Hoc: Anaweza kuendesha amri za ad hoc kwenye orodha.

  • Update: Anaweza kuboresha chanzo cha orodha.

  • Use: Anaweza kutumia orodha katika templeti ya kazi.

  • Read: Ufikiaji wa kuangalia tu.

  1. Job Template Roles:

  • Admin: Anaweza kusimamia na kubadilisha templeti ya kazi.

  • Execute: Anaweza kuendesha kazi.

  • Read: Ufikiaji wa kuangalia tu.

  1. Credential Roles:

  • Admin: Anaweza kusimamia na kubadilisha hati.

  • Use: Anaweza kutumia hati katika templeti za kazi au rasilimali nyingine zinazohusiana.

  • Read: Ufikiaji wa kuangalia tu.

  1. Team Roles:

  • Member: Sehemu ya timu lakini bila ruhusa maalum.

  • Admin: Anaweza kusimamia wanachama wa timu na rasilimali zinazohusiana.

  1. Workflow Roles:

  • Admin: Anaweza kusimamia na kubadilisha mchakato.

  • Execute: Anaweza kuendesha mchakato.

  • Read: Ufikiaji wa kuangalia tu.

Support HackTricks

Last updated