Nova Güvenlik Kurallarının Neutron Güvenlik Kurallarına Taşınması

2015-contest-shirtOpenStack üzerinde çalışan sanal makinelere erişim kuralları iki şekilde tanımlanabilmektedir. Birisi ve en yaygın olarak kullanılanı “security group” denilen güvenlik kuralları vasıtasıyla tanımlanan ve sunucularla ilişkilendirilen mekanizma. Diğeri ise “firewall-as-a-service” olarak geçen ve tanımlanan kuralların projede yer alan tüm sunuculara toptan uygulandığı mekanizma. Bu yazıda ilk bahsedilen Nova güvenlik kurallarının Neutron güvenlik kurallarına taşınması konusu ele alanacaktır.  Daha eski sürümlerde Nova API vasıtasıyla tanımlanan kurallar, yeni sürümlerde varsayılan olarak Neutron API vasıtasıyla tanımlanabilmekte, böylece çift yönlü kural tanımlama, port bazında güvenlik gibi avantajlardan faydalanılabilmektedir. Her ne kadar ilgili dokümanda Neutron security group özelliklerinin Nova security group özellikleri ile geriye dönük uyumlu olduğu söylenilse de, Nova security group kullanımından Neutron security group kullanımına geçildiğinde kurallar Neutron’a aktarılmadığı için veritabanı seviyesinde bir taşıma ihtiyacı ortaya çıkmaktadır.

Eğer siz de Nova security group kullanıyor ve Neutron security group kullanmak istiyorsanız aşağıdaki adımları takip ederek mevcut projeler altında daha önce tanımlanan kuralları ilgili projeler altında bağlı oldukları sanal sunucular ile ilişkileri dahil olmak üzere taşıyabilirsiniz.

Öncelikle Nova security group kullanırken Nova ve Neutron yapılandırmaları ilk durumda aşağıdaki gibi olmalıdır. Neutron tarafında ML2 plugin ile openvswitch kullanıldığı varsayılmıştır.

Bu durumda ilgili sanal sunucunun KVM tarafında kullanılan libvirt.xml dosyasında network arayüzü aşağıdaki gibi bağlanmaktadır.

Neutron security group kullanmak için öncelikle Nova ve Neutron yapılandırmaları aşağıdaki gibi değiştirilmelidir.

Bu değişikliğin ardından Nova security group kurallarının Neutron veritabanına kopyalanması için yazdığım aşağıdaki Python scriptini kullanabilirsiniz.

Öncelikle scriptin başında yer alan mysql_host, user ve password alanlarını kendinize göre düzenlemeniz gerekmektedir. Hemen altındaki clear_neutron_sec_grps parametresi “True” olduğunda varsa daha önceden Neutron security group altındaki kuralları temizlemeyi sağlamaktadır.  Silmek istemezseniz “False” yapabilirsiniz. Scriptin çalışması için Python tarafında MYSQLdb kütüphanesinin tanımlı olması gerekmektedir. Script her proje için dışarıya doğru her protokole izin veren ipv4 ve ipv6 için 2 kural eklemektedir.

Scripti çalıştırdıktan sonra yapılacak iş Nova ve Neutron servislerinin yeniden başlatılmasıdır. Controller, network ve compute node’lar üzerinde bu servisleri başlatmak için aşağıdaki komutları kullanabilirsiniz.

Böylece OpenStack Neutron security group API ile çalışacak hale gelmiştir. Ancak daha önceden başlatılan sanal sunucular oluşurken Nova API ile network arayüzü eklendiği için bu değişikliğin etkili olabilmesi için sanal sunucuların “hard reboot” edilmesi gerekmektedir. Böylece yeni parametreler ile libvirt.xml deosyası yeniden oluşturulacak ve son hali aşağıdaki gibi olacaktır.

Tüm sanal sunucularda bu işlemi tamamladığınızda Neutron security group Nova üzerinde tanımlanan eski kurallar ile aktif hale gelmiş olacaktır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir