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 lub jego wersja open source AWX jest znany jako interfejs użytkownika Ansible, pulpit nawigacyjny i REST API. Dzięki kontroli dostępu opartej na rolach, harmonogramowaniu zadań i graficznemu zarządzaniu inwentarzem, możesz zarządzać swoją infrastrukturą Ansible z nowoczesnego interfejsu. REST API Towera i interfejs wiersza poleceń ułatwiają integrację z obecnymi narzędziami i przepływami pracy.
Automation Controller to nowsza wersja Ansible Tower z większymi możliwościami.
Zgodnie z tym, główne różnice między Ansible Tower a AWX to otrzymywane wsparcie, a Ansible Tower ma dodatkowe funkcje, takie jak kontrola dostępu oparta na rolach, wsparcie dla niestandardowych API oraz zdefiniowane przez użytkownika przepływy pracy.
Web Interface: To graficzny interfejs, w którym użytkownicy mogą zarządzać inwentarzami, poświadczeniami, szablonami i zadaniami. Został zaprojektowany tak, aby był intuicyjny i zapewniał wizualizacje, które pomagają w zrozumieniu stanu i wyników twoich zadań automatyzacji.
REST API: Wszystko, co możesz zrobić w interfejsie webowym, możesz również zrobić za pomocą REST API. Oznacza to, że możesz zintegrować AWX/Tower z innymi systemami lub skryptować działania, które zazwyczaj wykonujesz w interfejsie.
Database: AWX/Tower używa bazy danych (zazwyczaj PostgreSQL) do przechowywania swojej konfiguracji, wyników zadań i innych niezbędnych danych operacyjnych.
RabbitMQ: To system komunikacji używany przez AWX/Tower do komunikacji między różnymi komponentami, szczególnie między usługą webową a wykonawcami zadań.
Redis: Redis służy jako pamięć podręczna i zaplecze dla kolejki zadań.
Inventories: Inwentarz to zbiór hostów (lub węzłów), na których mogą być uruchamiane zadania (playbooki Ansible). AWX/Tower pozwala na definiowanie i grupowanie inwentarzy oraz wspiera dynamiczne inwentarze, które mogą pobierać listy hostów z innych systemów takich jak AWS, Azure itp.
Projects: Projekt to zasadniczo zbiór playbooków Ansible pochodzących z systemu kontroli wersji (takiego jak Git), aby pobierać najnowsze playbooki w razie potrzeby.
Templates: Szablony zadań definiują jak dany playbook będzie uruchamiany, określając inwentarz, poświadczenia i inne parametry dla zadania.
Credentials: AWX/Tower zapewnia bezpieczny sposób zarządzania i przechowywania sekretów, takich jak klucze SSH, hasła i tokeny API. Te poświadczenia mogą być powiązane z szablonami zadań, aby playbooki miały niezbędny dostęp podczas uruchamiania.
Task Engine: To tutaj dzieje się magia. Silnik zadań oparty jest na Ansible i odpowiada za uruchamianie playbooków. Zadania są przekazywane do silnika zadań, który następnie uruchamia playbooki Ansible na wyznaczonym inwentarzu, używając określonych poświadczeń.
Schedulers and Callbacks: To zaawansowane funkcje w AWX/Tower, które pozwalają na harmonogramowanie zadań do uruchamiania w określonych czasach lub wyzwalane przez zdarzenia zewnętrzne.
Notifications: AWX/Tower może wysyłać powiadomienia w zależności od sukcesu lub niepowodzenia zadań. Obsługuje różne formy powiadomień, takie jak e-maile, wiadomości Slack, webhooki itp.
Ansible Playbooks: Playbooki Ansible to narzędzia do konfiguracji, wdrażania i orkiestracji. Opisują pożądany stan systemów w sposób zautomatyzowany i powtarzalny. Napisane w YAML, playbooki używają deklaratywnego języka automatyzacji Ansible do opisywania konfiguracji, zadań i kroków, które muszą być wykonane.
User Interaction: Użytkownik może interagować z AWX/Tower za pośrednictwem Web Interface lub REST API. Te zapewniają dostęp front-end do wszystkich funkcji oferowanych przez AWX/Tower.
Job Initiation:
Użytkownik, za pośrednictwem interfejsu webowego lub API, inicjuje zadanie na podstawie Job Template.
Szablon zadania zawiera odniesienia do Inwentarza, Projektu (zawierającego playbook) i Poświadczeń.
Po inicjacji zadania, żądanie jest wysyłane do backendu AWX/Tower, aby umieścić zadanie w kolejce do wykonania.
Job Queuing:
RabbitMQ obsługuje komunikację między komponentem webowym a wykonawcami zadań. Gdy zadanie jest inicjowane, wiadomość jest wysyłana do silnika zadań za pomocą RabbitMQ.
Redis działa jako zaplecze dla kolejki zadań, zarządzając zadaniami w kolejce oczekującymi na wykonanie.
Job Execution:
Task Engine odbiera zadanie z kolejki. Pobiera niezbędne informacje z Bazy Danych dotyczące powiązanego playbooka, inwentarza i poświadczeń.
Używając pobranego playbooka Ansible z powiązanego Projektu, silnik zadań uruchamia playbook na określonych węzłach Inwentarza przy użyciu podanych Poświadczeń.
W miarę uruchamiania playbooka, jego wyniki wykonania (logi, fakty itp.) są rejestrowane i przechowywane w Bazie Danych.
Job Results:
Po zakończeniu uruchamiania playbooka, wyniki (sukces, niepowodzenie, logi) są zapisywane w Bazie Danych.
Użytkownicy mogą następnie przeglądać wyniki za pośrednictwem interfejsu webowego lub zapytać je za pomocą REST API.
W zależności od wyników zadań, Powiadomienia mogą być wysyłane, aby informować użytkowników lub zewnętrzne systemy o statusie zadania. Powiadomienia mogą być e-mailami, wiadomościami Slack, webhookami itp.
External Systems Integration:
Inventories mogą być dynamicznie pozyskiwane z systemów zewnętrznych, co pozwala AWX/Tower na pobieranie hostów z takich źródeł jak AWS, Azure, VMware i inne.
Projects (playbooki) mogą być pobierane z systemów kontroli wersji, zapewniając użycie aktualnych playbooków podczas wykonywania zadań.
Schedulers and Callbacks mogą być używane do integracji z innymi systemami lub narzędziami, co sprawia, że AWX/Tower reaguje na zewnętrzne wyzwalacze lub uruchamia zadania w ustalonych czasach.
Following the docs można użyć docker-compose do uruchomienia AWX:
Najbardziej uprzywilejowaną rolą jest Administrator Systemu. Każdy, kto ma tę rolę, może modyfikować wszystko.
Z perspektywy przeglądu bezpieczeństwa białej skrzynki, potrzebujesz roli Audytora Systemu, która pozwala na przeglądanie wszystkich danych systemowych, ale nie może wprowadzać żadnych zmian. Inną opcją byłoby uzyskanie roli Audytora Organizacji, ale lepiej byłoby uzyskać tę drugą.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)