Application Security Group(ASG)’lar, VM’leri mantıksal olarak gruplama imkanı sunarlar. Böylece VM’lerin inbound ve/veya outbound kurallarını düzenlemek için private IP adresleri veya subnetleri referans alma güçlüğünü ve bu güçlükten doğacak yönetimsel karmaşıklığı ortadan kaldırırlar.
ASG’ler, Network Security Group(NSG)’ları kullanmak için basitleştirilmiş bir yaklaşım sunarak Azure aboneliğinde daha az NSG kullanılmasına olanak tanırlar. ASG’ler, NSG’ye ait kuralların gözden geçirilmesi gerektiğinde kuralları okumayı kolaylaştırırlar. Ayrıca bu servis tıpkı Virtual Network servisi gibi ücretsiz bir servis olup tüm Azure bölgelerinde(region) kullanılabilir durumdadır.
1. İki Senaryonun Karşılaştırılması
Bu başlıkta geleneksel yöntem tercih edilerek NSG kurallarının oluşturulduğu senaryo ile ASG yardımıyla NSG kurallarının oluşturulduğu senaryo karşılaştırılacaktır.
Şekil-1’de yer alan ağ mimarisinde izin verilecek(allow) kurallar port numaralarıyla beraber yeşil çizgilerle gösterilmiştir. ASG kullanmadan geleneksel yöntem tercih edilerek bu kuralları uygulamak için NSG içerisine ilgili VM’lerin private IP adreslerini referans alan 24 adet kural yazılması gerekir. Bu kuralların tümü Şekil-2’de yer alan tabloda gösterilmiştir.
Virtual Network’e eklenecek her yeni VM için Şekil-2‘deki kuralların benzerlerinin defalarca kez girilmesi nedeniyle yönetim güçlüğünün artması dikkate değer bir gerçektir. ASG’ler bu yönetim güçlüğü problemine çözüm getirmek amacıyla Şekil-3’te olduğu gibi VM’leri mantıksal bir şekilde gruplayarak ilgili kuralların VM’lerin private IP adreslerini referans alması yerine mantıksal bir grubu referans almasına olanak tanır. Böylece ilk duruma karşın 24 adet kural eklemek yerine ASG yardımıyla sadece 4 adet kural eklenilerek eşdeğer durum elde edilir.
2. Uygulama
Şekil-1’deki ağ mimarisinde yer alan NSG kurallarını daha az eforla ASG yardımıyla oluşturmak için bu başlık altındaki adımlar takip edilecektir:
2.1. Application Security Group Oluşturulması
ASG oluşturmak için Azure Portal’da bulunan arama çubuğuna Application security groups yazılıp bu servisin yönetim sayfasına erişilir. Karşılaşılan sayfada Add butonuna tıklanıp Şekil-4’teki gibi metin kutuları ağ yapısına uygun doldurulur. Bu başlık altındaki adımlar takip edilerek WebServers, AppServers ve DBServers isimli ASG’ler oluşturulmuştur.
2.2. VM’lerin Application Security Group ile Gruplanması
Bir VM’yi bir ASG’ye dahil etmek için Azure Portal > Virtual Machines > VM’niz yoluna erişim sağladıktan sonra Şekil-5’de rakamla işaret edilen adımlar sırasıyla takip edilmelidir.
Şekil-6’da olduğu gibi ekranın sağında bulunan pencerede ilgili ASG’yi seçildikten sonra yukarıdaki Save butonuna basılır. Bu pencerede bir VM’nin birden fazla ASG’ye eklenebileceğini tespit etmek mümkündür.
Bu alt başlıkta sadece WEB-01 isimli VM’nin WebServers isimli ASG’ye eklenme kısmı gösterilmiştir. Bu alt başlıktaki adımlar tekrar takip edilerek aşağıda listelenen VM’lerin ok işaretiyle belirtilen ASG’lere eklenmesi gerekmektedir.
WEB-02, WEB-03 → WebServers
APP-01, APP-02, APP-03 → AppServers
DB-01, DB-02, DB-03 → DBServers
2.3. NSG’de Kuralların Yazılması
Bu başlıkta 9 adet VM’yi kapsayan NSG’nin sayfasına erişilerek Şekil-3’te yer alan 5 kuraldan ilk 4 tanesi eklenecektir. NSG’nin sayfasına erişmek için Azure Portal > Network security groups > NSG’niz yolu izlendikten sonra Şekil-7’de rakamla işaret edilen bağlantılara sırasıyla tıklanmalıdır.
Ekranın sağına güvenlik kurallarının girilebileceği bir alan geldikten sonra Şekil-8’de belirtilen ilk 4 kural girilmelidir. Bu kuralları aşağıdaki gibi özetlemek mümkündür:
AllowInternetToWeb80: Internet üzerinden WebServers isimli ASG’nin içindeki VM’lere TCP/80 numaralı porttan gelen taleplere izin vermeyi sağlayan bir kuraldır (Bkz. Şekil-8.a).
AllowInternetToWeb80: Internet üzerinden WebServers isimli ASG’nin içindeki VM’lere TCP/443 numaralı porttan gelen taleplere izin vermeyi sağlayan bir kuraldır (Bkz. Şekil-8.b).
AllowWebToApp: WebServers isimli ASG’nin içindeki VM’lerden AppServers isimli ASG’nin içindeki VM’lere TCP/443 numaralı porttan gelen taleplere izin vermeyi sağlayan bir kuraldır (Bkz. Şekil-8.c).
AllowAppToDB: AppServers isimli ASG’nin içindeki VM’lerden DBServers isimli ASG’nin içindeki VM’lere TCP/1443 numaralı porttan gelen taleplere izin vermeyi sağlayan bir kuraldır (Bkz. Şekil-8.d).
Web sunucularına 5 adet daha VM ekleyerek örnek(instance) sayısının arttırıldığı durumda yapılması gereken 2.2. VM’lerin Application Security Group ile Gruplanması başlığında olduğu gibi yeni eklenen VM’leri WebServers isimli ASG’ye dahil etmek olacaktır. ASG kullanmadan bu durumu gerçekleştirilirse her bir VM’ye 3 kural uygulandığından yeni eklenen 5 VM için toplam 15 kural uygulanması gerekir. ASG servisinden yararlanmanın yönetimsel karmaşıklığı azalttığını ve kullanıcı tarafından okunabilirliği arttırdığını bu örnekten de anlamak mümkündür.
3. Limitler
- Bir VM’yi ASG’nin içerisine alabilmek için ASG kaynağı(resource) ile VM’nin NIC kaynağının(resource) aynı Azure bölgesinde(region) olması gereklidir.
Bir ASG içerisindeki tüm VM’ler aynı Virtual Network içerisinde yer alması gerekir (Bkz. Şekil-3, Şekil-9.a).
Aynı Virtual Network içerisinde yer alıp farklı subnetlerde bulunan VM’leri ASG ile gruplamak mümkündür (Bkz. Şekil-9.a).
Bir NSG kuralı oluşturulurken kaynak(source) ve destination(hedef) alanlarının her ikisinde de ASG kullanılıyorsa bu iki ASG’nin içindeki tüm VM’ler Şekil-3 ve Şekil-9.a‘da olduğu gibi aynı Virtual Network içerisinde olması gerekir. Diğer bir deyişle Şekil-9.b‘deki network mimarisinde belirtilen şekilde ASG kullanmak mümkün değildir.
4. Özet
Bu yazıda, VM’lerinizi mantıksal olarak gruplandırarak yönetim karmaşıklığını azaltan ve NSG kurallarının okunabilirliğini arttıran Application Security Group(ASG) isimli servis tanıtılmıştır. Bu yazının birinci başlığında servisin yeteneklerine, ikinci başlığında uygulama senaryosuna ve üçüncü başlıkta ise bu servisin limitlerine yer verilmiştir.
Referanslar