Ansible Tower / AWX / Automation controller Security

A'dan Z'ye AWS hackleme becerilerini öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'i desteklemenin diğer yolları:

Temel Bilgiler

Ansible Tower veya açık kaynak versiyonu AWX aynı zamanda Ansible'ın kullanıcı arayüzü, gösterge tablosu ve REST API'si olarak bilinir. Rol tabanlı erişim kontrolü, iş zamanlaması ve grafiksel envanter yönetimi ile Ansible altyapınızı modern bir kullanıcı arayüzünden yönetebilirsiniz. Tower'ın REST API'si ve komut satırı arayüzü, mevcut araçlar ve iş akışlarına entegre etmeyi kolaylaştırır.

Otomasyon Denetleyicisi, daha fazla yeteneğe sahip yeni bir Ansible Tower sürümüdür.

Farklar

Bu kaynağa göre, Ansible Tower ve AWX arasındaki temel farklar, alınan destek ve Ansible Tower'ın rol tabanlı erişim kontrolü, özel API'ları destekleme ve kullanıcı tanımlı iş akışları gibi ek özelliklere sahip olmasıdır.

Teknoloji Yığını

  • Web Arayüzü: Kullanıcıların envanterleri, kimlik bilgilerini, şablonları ve işleri yönetebileceği grafik arayüzüdür. Kullanıcıların otomasyon işlerinin durumunu ve sonuçlarını anlamalarına yardımcı olmak için görselleştirmeler sunar.

  • REST API: Web arayüzünde yapabileceğiniz her şeyi REST API üzerinden de yapabilirsiniz. Bu, AWX/Tower'ı diğer sistemlerle entegre etmenizi veya genellikle arayüzde gerçekleştireceğiniz işlemleri betikleştirmenizi sağlar.

  • Veritabanı: AWX/Tower, yapılandırmasını, iş sonuçlarını ve diğer gerekli işletme verilerini depolamak için bir veritabanı (genellikle PostgreSQL) kullanır.

  • RabbitMQ: Bu, AWX/Tower'ın farklı bileşenler arasında iletişim kurmak için kullandığı mesajlaşma sistemidir, özellikle web hizmeti ile görev çalıştırıcılar arasında.

  • Redis: Redis, bir önbellek ve görev kuyruğu için bir arka uç olarak hizmet verir.

Mantıksal Bileşenler

  • Envanterler: Bir envanter, işlerin (Ansible oynatma kitapları) çalıştırılabileceği ana bilgisayarların (veya düğümlerin) bir koleksiyonudur. AWX/Tower, envanterlerinizi tanımlamanıza ve gruplandırmanıza olanak tanır ve ayrıca AWS, Azure vb. gibi diğer sistemlerden ana bilgisayar listelerini alabilen dinamik envanterleri destekler.

  • Projeler: Bir proje, ihtiyaç duyulduğunda en son oynatma kitaplarını çekmek için bir sürüm kontrol sisteminden (Git gibi) alınan Ansible oynatma kitaplarının bir koleksiyonudur.

  • Şablonlar: İş şablonları, belirli bir oynatma kitabının nasıl çalıştırılacağını belirler, iş için gerekli envanteri, kimlik bilgilerini ve diğer parametreleri belirtir.

  • Kimlik Bilgileri: AWX/Tower, SSH anahtarları, şifreler ve API belirteçleri gibi sırları yönetmek ve depolamak için güvenli bir yol sağlar. Bu kimlik bilgileri, oynatma kitapları çalıştığında gerekli erişime sahip olması için iş şablonlarıyla ilişkilendirilebilir.

  • Görev Motoru: Burada sihir gerçekleşir. Görev motoru, Ansible üzerine inşa edilmiştir ve oynatma kitaplarını çalıştırmaktan sorumludur. İşler, belirtilen envanteri kullanarak belirtilen kimlik bilgilerini kullanarak Ansible oynatma kitaplarını çalıştırmak üzere görev motoruna gönderilir.

  • Zamanlayıcılar ve Geri Çağrılar: Bunlar, belirli zamanlarda çalıştırılacak işleri zamanlamak veya dış etkinlikler tarafından tetiklenmesini sağlamak için AWX/Tower'da bulunan gelişmiş özelliklerdir.

  • Bildirimler: AWX/Tower, işlerin başarısı veya başarısızlığına bağlı olarak bildirimler gönderebilir. E-postalar, Slack mesajları, web kancaları vb. gibi çeşitli bildirim yöntemlerini destekler.

  • Ansible Oynatma Kitapları: Ansible oynatma kitapları, yapılandırma, dağıtım ve orkestrasyon araçlarıdır. Otomatik, tekrarlanabilir bir şekilde sistemlerin istenen durumunu tanımlarlar. YAML'de yazılan oynatma kitapları, yapılandırmaları, görevleri ve adımları açıklamak için Ansible'ın deklaratif otomasyon dilini kullanır.

İş Yürütme Akışı

  1. Kullanıcı Etkileşimi: Bir kullanıcı, AWX/Tower'a Web Arayüzü veya REST API aracılığıyla etkileşimde bulunabilir. Bu, AWX/Tower tarafından sunulan tüm işlevlere ön uç erişimi sağlar.

  2. İş Başlatma:

  • Kullanıcı, Web Arayüzü veya API aracılığıyla, bir İş Şablonuna dayalı olarak bir iş başlatır.

  • İş Şablonu, Envanter, Proje (oynatma kitabını içeren) ve Kimlik Bilgilerine referanslar içerir.

  • İş başlatıldığında, işi yürütmek için bir istek, işi sıraya almak üzere AWX/Tower arka uçuna gönderilir.

  1. İş Sıralama:

  • RabbitMQ, web bileşeni ile görev çalıştırıcılar arasındaki iletişimi yönetir. Bir iş başlatıldığında, bir mesaj, RabbitMQ kullanılarak görev motoruna iletilir.

  • Redis, sıraya alınan işleri yöneterek görev kuyruğu için bir arka uç görevi görür.

  1. İş Yürütme:

  • Görev Motoru, sıraya alınan işi alır. İşin ilişkili oynatma kitabı, envanter ve kimlik bilgileri hakkındaki gerekli bilgileri Veritabanı'ndan alır.

  • İlişkili Projeden alınan Ansible oynatma kitabını kullanarak Görev Motoru, belirtilen Envanter düğümleri karşısında oynatma kitabını çalıştırır ve sağlanan Kimlik Bilgilerini kullanır.

  • Oynatma kitabı çalıştıkça, yürütme çıktısı (loglar, gerçekler vb.) yakalanır ve Veritabanı'nda depolanır.

  1. İş Sonuçları:

  • Oynatma kitabı çalışmayı bitirdiğinde, sonuçlar (başarı, başarısızlık, loglar) Veritabanı'na kaydedilir.

  • Kullanıcılar daha sonra sonuçları Web Arayüzü üzerinden görüntüleyebilir veya REST API aracılığıyla sorgulayabilir.

  • İş sonuçlarına bağlı olarak, işle ilgili durumu kullanıcıları veya harici sistemleri bilgilendirmek için Bildirimler gönderilebilir. Bildirimler, e-postalar, Slack mesajları, web kancaları vb. olabilir.

  1. Harici Sistemler Entegrasyonu:

  • Envanterler, AWS, Azure, VMware ve daha fazlası gibi kaynaklardan ana bilgisayarları içe çekebilen dış sistemlerden dinamik olarak alınabilir.

  • Projeler (oynatma kitapları), sürüm kontrol sistemlerinden alınabilir, iş yürütme sırasında güncel oynatma kitaplarının kullanılmasını sağlar.

  • Zamanlayıcılar ve Geri Çağrılar, diğer sistemler veya araçlarla entegre olmak için kullanılabilir, AWX/Tower'ın dış tetikleyicilere tepki vermesini veya belirlenmiş zamanlarda işleri çalıştırmasını sağlar.

Test için AWX laboratuvarı oluşturma

Belgeleri takip ederek, AWX'ı çalıştırmak için docker-compose kullanmak mümkündür:

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

Desteklenen roller

En ayrıcalıklı rol Sistem Yöneticisi olarak adlandırılır. Bu role sahip olan herkes herhangi bir şeyi değiştirebilir.

Beyaz kutu güvenliği incelemesinden, Sistem Denetçisi rolüne ihtiyacınız olacaktır, bu rol tüm sistem verilerini görüntülemeyi sağlar ancak herhangi bir değişiklik yapamaz. Başka bir seçenek Organizasyon Denetçisi rolü almak olabilir, ancak diğerini almak daha iyi olacaktır.

Detaylı rol açıklamalarını almak için burayı genişletin
  1. Sistem Yöneticisi:

  • Bu, sistemdeki herhangi bir kaynağa erişim ve değişiklik izinlerine sahip süper kullanıcı rolüdür.

  • Tüm organizasyonları, ekipleri, projeleri, envanterleri, iş şablonlarını yönetebilirler, vb.

  1. Sistem Denetçisi:

  • Bu role sahip kullanıcılar tüm sistem verilerini görebilir ancak herhangi bir değişiklik yapamazlar.

  • Bu rol uyumluluk ve denetim için tasarlanmıştır.

  1. Organizasyon Roller:

  • Yönetici: Organizasyonun kaynakları üzerinde tam kontrol.

  • Denetçi: Organizasyonun kaynaklarına yalnızca görüntüleme erişimi.

  • Üye: Belirli izinleri olmadan bir organizasyonda temel üyelik.

  • Yürüt: Organizasyon içinde iş şablonlarını çalıştırabilir.

  • Oku: Organizasyonun kaynaklarını görüntüleyebilir.

  1. Proje Roller:

  • Yönetici: Projeyi yönetebilir ve değiştirebilir.

  • Kullan: Projeyi bir iş şablonunda kullanabilir.

  • Güncelle: Kaynağı SCM (kaynak kontrolü) kullanarak güncelleme yapabilir.

  1. Envanter Roller:

  • Yönetici: Envanteri yönetebilir ve değiştirebilir.

  • Ad Hoc: Envanter üzerinde ad hoc komutlar çalıştırabilir.

  • Güncelle: Envanter kaynağını güncelleme yapabilir.

  • Kullan: Envanteri bir iş şablonunda kullanabilir.

  • Oku: Yalnızca görüntüleme erişimi.

  1. İş Şablonu Roller:

  • Yönetici: İş şablonunu yönetebilir ve değiştirebilir.

  • Yürüt: İşi çalıştırabilir.

  • Oku: Yalnızca görüntüleme erişimi.

  1. Kimlik Bilgisi Roller:

  • Yönetici: Kimlik bilgilerini yönetebilir ve değiştirebilir.

  • Kullan: Kimlik bilgilerini iş şablonlarında veya diğer ilgili kaynaklarda kullanabilir.

  • Oku: Yalnızca görüntüleme erişimi.

  1. Ekip Roller:

  • Üye: Ekip üyesi ancak belirli izinleri yok.

  • Yönetici: Ekip üyelerini ve ilişkili kaynakları yönetebilir.

  1. İş Akışı Roller:

  • Yönetici: İş akışını yönetebilir ve değiştirebilir.

  • Yürüt: İş akışını çalıştırabilir.

  • Oku: Yalnızca görüntüleme erişimi.

Last updated