Ansible Tower / AWX / Automation controller Security
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ansible Tower oder seine Open-Source-Version AWX ist auch bekannt als Ansible-Benutzeroberfläche, Dashboard und REST-API. Mit rollenbasiertem Zugriffskontrolle, Jobplanung und grafischer Inventarverwaltung können Sie Ihre Ansible-Infrastruktur über eine moderne Benutzeroberfläche verwalten. Die REST-API und die Befehlszeilenschnittstelle von Tower machen es einfach, sie in aktuelle Tools und Workflows zu integrieren.
Automation Controller ist eine neuere Version von Ansible Tower mit mehr Funktionen.
Laut diesem sind die Hauptunterschiede zwischen Ansible Tower und AWX die erhaltene Unterstützung, und Ansible Tower hat zusätzliche Funktionen wie rollenbasierte Zugriffskontrolle, Unterstützung für benutzerdefinierte APIs und benutzerdefinierte Workflows.
Weboberfläche: Dies ist die grafische Oberfläche, über die Benutzer Inventare, Anmeldeinformationen, Vorlagen und Jobs verwalten können. Sie ist so gestaltet, dass sie intuitiv ist und Visualisierungen bietet, um den Zustand und die Ergebnisse Ihrer Automatisierungsjobs zu verstehen.
REST-API: Alles, was Sie in der Weboberfläche tun können, können Sie auch über die REST-API tun. Das bedeutet, dass Sie AWX/Tower mit anderen Systemen integrieren oder Aktionen skripten können, die Sie normalerweise in der Benutzeroberfläche ausführen würden.
Datenbank: AWX/Tower verwendet eine Datenbank (typischerweise PostgreSQL), um seine Konfiguration, Jobresultate und andere notwendige Betriebsdaten zu speichern.
RabbitMQ: Dies ist das Messaging-System, das von AWX/Tower verwendet wird, um zwischen den verschiedenen Komponenten zu kommunizieren, insbesondere zwischen dem Webdienst und den Aufgabenläufern.
Redis: Redis dient als Cache und Backend für die Aufgabenwarteschlange.
Inventare: Ein Inventar ist eine Sammlung von Hosts (oder Knoten), gegen die Jobs (Ansible-Playbooks) ausgeführt werden können. AWX/Tower ermöglicht es Ihnen, Ihre Inventare zu definieren und zu gruppieren und unterstützt auch dynamische Inventare, die Hostlisten aus anderen Systemen wie AWS, Azure usw. abrufen können.
Projekte: Ein Projekt ist im Wesentlichen eine Sammlung von Ansible-Playbooks, die aus einem Versionskontrollsystem (wie Git) stammen, um die neuesten Playbooks bei Bedarf abzurufen.
Vorlagen: Jobvorlagen definieren, wie ein bestimmtes Playbook ausgeführt wird, indem sie das Inventar, die Anmeldeinformationen und andere Parameter für den Job angeben.
Anmeldeinformationen: AWX/Tower bietet eine sichere Möglichkeit, Geheimnisse wie SSH-Schlüssel, Passwörter und API-Tokens zu verwalten und zu speichern. Diese Anmeldeinformationen können mit Jobvorlagen verknüpft werden, sodass Playbooks beim Ausführen den erforderlichen Zugriff haben.
Aufgaben-Engine: Hier geschieht die Magie. Die Aufgaben-Engine basiert auf Ansible und ist verantwortlich für das Ausführen der Playbooks. Jobs werden an die Aufgaben-Engine übergeben, die dann die Ansible-Playbooks gegen das festgelegte Inventar mit den angegebenen Anmeldeinformationen ausführt.
Planer und Rückrufe: Dies sind erweiterte Funktionen in AWX/Tower, die es ermöglichen, Jobs zu bestimmten Zeiten zu planen oder durch externe Ereignisse ausgelöst zu werden.
Benachrichtigungen: AWX/Tower kann Benachrichtigungen basierend auf dem Erfolg oder Misserfolg von Jobs senden. Es unterstützt verschiedene Arten von Benachrichtigungen wie E-Mails, Slack-Nachrichten, Webhooks usw.
Ansible-Playbooks: Ansible-Playbooks sind Konfigurations-, Bereitstellungs- und Orchestrierungstools. Sie beschreiben den gewünschten Zustand von Systemen auf automatisierte, wiederholbare Weise. In YAML geschrieben, verwenden Playbooks Ansible's deklarative Automatisierungssprache, um Konfigurationen, Aufgaben und Schritte zu beschreiben, die ausgeführt werden müssen.
Benutzerinteraktion: Ein Benutzer kann mit AWX/Tower entweder über die Weboberfläche oder die REST-API interagieren. Diese bieten Front-End-Zugriff auf alle von AWX/Tower angebotenen Funktionen.
Jobinitiierung:
Der Benutzer initiiert über die Weboberfläche oder API einen Job basierend auf einer Jobvorlage.
Die Jobvorlage enthält Verweise auf das Inventar, das Projekt (das das Playbook enthält) und die Anmeldeinformationen.
Bei der Jobinitiierung wird eine Anfrage an das AWX/Tower-Backend gesendet, um den Job zur Ausführung in die Warteschlange zu stellen.
Jobwarteschlange:
RabbitMQ verwaltet die Nachrichtenübertragung zwischen der Webkomponente und den Aufgabenläufern. Sobald ein Job initiiert wird, wird eine Nachricht an die Aufgaben-Engine über RabbitMQ gesendet.
Redis fungiert als Backend für die Aufgabenwarteschlange und verwaltet die in der Warteschlange stehenden Jobs, die auf die Ausführung warten.
Jobausführung:
Die Aufgaben-Engine nimmt den in der Warteschlange stehenden Job auf. Sie ruft die erforderlichen Informationen aus der Datenbank über das mit dem Job verbundene Playbook, Inventar und die Anmeldeinformationen ab.
Mit dem abgerufenen Ansible-Playbook aus dem zugehörigen Projekt führt die Aufgaben-Engine das Playbook gegen die angegebenen Inventar-Knoten mit den bereitgestellten Anmeldeinformationen aus.
Während das Playbook ausgeführt wird, werden die Ausführungsprotokolle (Logs, Fakten usw.) erfasst und in der Datenbank gespeichert.
Jobergebnisse:
Sobald das Playbook die Ausführung abgeschlossen hat, werden die Ergebnisse (Erfolg, Misserfolg, Protokolle) in der Datenbank gespeichert.
Benutzer können die Ergebnisse dann über die Weboberfläche einsehen oder sie über die REST-API abfragen.
Basierend auf den Jobergebnissen können Benachrichtigungen gesendet werden, um Benutzer oder externe Systeme über den Status des Jobs zu informieren. Benachrichtigungen können E-Mails, Slack-Nachrichten, Webhooks usw. sein.
Integration mit externen Systemen:
Inventare können dynamisch aus externen Systemen bezogen werden, sodass AWX/Tower Hosts aus Quellen wie AWS, Azure, VMware und mehr abrufen kann.
Projekte (Playbooks) können aus Versionskontrollsystemen abgerufen werden, um sicherzustellen, dass während der Jobausführung aktuelle Playbooks verwendet werden.
Planer und Rückrufe können verwendet werden, um mit anderen Systemen oder Tools zu integrieren, sodass AWX/Tower auf externe Auslöser reagiert oder Jobs zu festgelegten Zeiten ausführt.
Den Dokumenten folgen ist es möglich, docker-compose zu verwenden, um AWX auszuführen:
Die privilegierteste Rolle wird als Systemadministrator bezeichnet. Jeder mit dieser Rolle kann alles ändern.
Für eine White-Box-Sicherheits-Überprüfung benötigen Sie die Systemauditorrolle, die es ermöglicht, alle Systemdaten anzuzeigen, aber keine Änderungen vorzunehmen. Eine andere Option wäre, die Organisationsauditorrolle zu erhalten, aber es wäre besser, die andere zu bekommen.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)