Ansible Tower / AWX / Automation controller Security
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Ansible Tower veya açık kaynak versiyonu AWX, Ansible’ın kullanıcı arayüzü, kontrol paneli ve REST API olarak da bilinir. Rol tabanlı erişim kontrolü, iş zamanlaması ve grafik envanter yönetimi ile Ansible altyapınızı modern bir UI'den yönetebilirsiniz. Tower’ın REST API'si ve komut satırı arayüzü, mevcut araçlar ve iş akışlarıyla entegrasyonu basit hale getirir.
Automation Controller, Ansible Tower'ın daha fazla yeteneğe sahip daha yeni bir versiyonudur.
bu kaynağına göre, Ansible Tower ile AWX arasındaki ana farklar alınan destek ve Ansible Tower'ın rol tabanlı erişim kontrolü, özel API'ler için destek ve kullanıcı tanımlı iş akışları gibi ek özelliklere sahip olmasıdır.
Web Arayüzü: Kullanıcıların envanterleri, kimlik bilgilerini, şablonları ve işleri yönetebileceği grafik arayüzdür. Kullanıcı dostu olacak şekilde tasarlanmıştır ve otomasyon işlerinin durumu ve sonuçlarını anlamaya yardımcı olacak görselleştirmeler sağlar.
REST API: Web arayüzünde yapabileceğiniz her şeyi REST API aracılığıyla da yapabilirsiniz. Bu, AWX/Tower'ı diğer sistemlerle entegre etmenizi veya arayüzde genellikle gerçekleştireceğiniz eylemleri betik haline getirmenizi sağlar.
Veritabanı: AWX/Tower, yapılandırmasını, iş sonuçlarını ve diğer gerekli operasyonel verileri depolamak için bir veritabanı (genellikle PostgreSQL) kullanır.
RabbitMQ: Bu, AWX/Tower'ın farklı bileşenler arasında, özellikle web hizmeti ile görev çalıştırıcıları arasında iletişim kurmak için kullandığı mesajlaşma sistemidir.
Redis: Redis, görev kuyruğu için bir önbellek ve arka uç olarak hizmet eder.
Envanterler: Envanter, işlerin (Ansible playbook'ları) çalıştırılabileceği hostlar (veya düğümler) koleksiyonudur. AWX/Tower, envanterlerinizi tanımlamanıza ve gruplamanıza olanak tanır ve ayrıca AWS, Azure gibi diğer sistemlerden host listelerini alabilen dinamik envanterleri destekler.
Projeler: Bir proje, esasen bir versiyon kontrol sisteminden (Git gibi) kaynaklanan Ansible playbook'ları koleksiyonudur ve gerektiğinde en son playbook'ları çekmek için kullanılır.
Şablonlar: İş şablonları, belirli bir playbook'un nasıl çalıştırılacağını tanımlar, envanter, kimlik bilgileri ve iş için diğer parametreleri belirtir.
Kimlik Bilgileri: AWX/Tower, SSH anahtarları, şifreler ve API jetonları gibi gizli bilgileri yönetmek ve depolamak için güvenli bir yol sağlar. Bu kimlik bilgileri, playbook'ların çalıştığında gerekli erişime sahip olabilmesi için iş şablonlarıyla ilişkilendirilebilir.
Görev Motoru: Burası sihrin gerçekleştiği yerdir. Görev motoru, Ansible üzerine inşa edilmiştir ve playbook'ları çalıştırmaktan sorumludur. İşler, görev motoruna iletilir ve ardından belirtilen envanter üzerinde belirtilen kimlik bilgileri kullanılarak Ansible playbook'ları çalıştırılır.
Zamanlayıcılar ve Geri Aramalar: Bunlar, AWX/Tower'da işlerin belirli zamanlarda çalıştırılmasını veya dış olaylar tarafından tetiklenmesini sağlayan gelişmiş özelliklerdir.
Bildirimler: AWX/Tower, işlerin başarısına veya başarısızlığına dayalı olarak bildirimler gönderebilir. E-posta, Slack mesajları, webhook'lar gibi çeşitli bildirim yöntemlerini destekler.
Ansible Playbook'ları: Ansible playbook'ları, yapılandırma, dağıtım ve orkestrasyon araçlarıdır. Sistemlerin istenen durumunu otomatik, tekrarlanabilir bir şekilde tanımlar. YAML ile yazılmıştır ve playbook'lar, yapılandırmaları, görevleri ve yürütülmesi gereken adımları tanımlamak için Ansible'ın deklaratif otomasyon dilini kullanır.
Kullanıcı Etkileşimi: Bir kullanıcı, AWX/Tower ile Web Arayüzü veya REST API aracılığıyla etkileşimde bulunabilir. Bu, AWX/Tower tarafından sunulan tüm işlevselliklere ön uç erişimi sağlar.
İş Başlatma:
Kullanıcı, Web Arayüzü veya API aracılığıyla bir İş Şablonu temelinde bir iş başlatır.
İş Şablonu, Envantere, Projeye (playbook'u içeren) ve Kimlik Bilgilerine referanslar içerir.
İş başlatıldığında, işin yürütülmesi için AWX/Tower arka ucuna bir istek gönderilir.
İş Kuyruğa Alma:
RabbitMQ, web bileşeni ile görev çalıştırıcıları arasındaki mesajlaşmayı yönetir. Bir iş başlatıldığında, RabbitMQ kullanılarak görev motoruna bir mesaj iletilir.
Redis, yürütülmeyi bekleyen kuyrukta bekleyen işleri yöneten görev kuyruğu için arka uç olarak hizmet eder.
İşin Yürütülmesi:
Görev Motoru, kuyrukta bekleyen işi alır. İlgili Veritabanından, işin ilişkili playbook'u, envanteri ve kimlik bilgileri hakkında gerekli bilgileri alır.
İlgili Proje'den alınan Ansible playbook'unu kullanarak, Görev Motoru belirtilen Envantere düğümleri üzerinde sağlanan Kimlik Bilgileri ile playbook'u çalıştırır.
Playbook çalışırken, yürütme çıktısı (loglar, veriler vb.) Veritabanında yakalanır ve saklanır.
İş Sonuçları:
Playbook çalışmayı bitirdiğinde, sonuçlar (başarı, başarısızlık, loglar) Veritabanına kaydedilir.
Kullanıcılar, sonuçları Web Arayüzü aracılığıyla görüntüleyebilir veya REST API aracılığıyla sorgulayabilir.
İş sonuçlarına bağlı olarak, Bildirimler kullanıcıları veya dış sistemleri işin durumu hakkında bilgilendirmek için gönderilebilir. Bildirimler e-posta, Slack mesajları, webhook'lar vb. olabilir.
Dış Sistem Entegrasyonu:
Envanterler, dış sistemlerden dinamik olarak kaynaklanabilir, bu da AWX/Tower'ın AWS, Azure, VMware gibi kaynaklardan hostları çekmesine olanak tanır.
Projeler (playbook'lar), versiyon kontrol sistemlerinden alınabilir, böylece iş yürütme sırasında güncel playbook'ların kullanılması sağlanır.
Zamanlayıcılar ve Geri Aramalar, diğer sistemler veya araçlarla entegrasyon için kullanılabilir, bu da AWX/Tower'ın dış tetikleyicilere yanıt vermesini veya işleri önceden belirlenmiş zamanlarda çalıştırmasını sağlar.
Belgeleri takip ederek AWX'ı çalıştırmak için docker-compose kullanmak mümkündür:
En yetkili rol Sistem Yöneticisi olarak adlandırılır. Bu role sahip olan herkes her şeyi değiştirebilir.
Beyaz kutu güvenliği incelemesi için, Sistem Denetçisi rolüne ihtiyacınız olacak, bu rol tüm sistem verilerini görüntülemenizi sağlar ancak herhangi bir değişiklik yapmanıza izin vermez. Diğer bir seçenek ise Organizasyon Denetçisi rolünü almak olacaktır, ancak diğerini almak daha iyi olur.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)