Bir önceki makalemde Azure üzerinde resource’ları ve resource group’ları taglar kullanarak nasıl kategorize edebileceğinizi ele almıştım. Bu makalemde ise Azure üzerinde governance model oluştururken kullanacağınız bir diğer önemli konfigürasyon birimi olan Azure Policies’i anlatacağım. Eminim Azure Policies’i kullanmaya başladıktan sonra hayran kalacaksınız.
Azure policies konusunu anlatmadan önce bir kaç soru ile konuyu netleştirmek istiyorum. Örneğin Azure ortamınızda oluşturulacak tüm kaynakların size en yakın olan Azure Region’ında oluşturulmasını istiyorsunuz fakat platformu sizden farklı bir çok kişi de kullanıyor ve tüm bildirimlerinize rağmen herkes kafasına göre istediği region’da kaynak oluşturuyor. Bu durumu önlemek için ne yaparsınız?
Cevap: Azure Policies konfigürasyonu yapmanız gerekiyor.
Ya da ikinci bir soru ile devam edelim. Yine Azure platformunu birden çok kişi kullanıyor. Siz Azure platformunda oluşturulan her resource için belli konfigürasyonarın yapılmasını istiyorsunuz. Yapılmadığı taktirde manuel olarak sizin tüm resource’ları denetleyip konfigüre etmeniz gerekiyor. Örneğin her resource’un Name ve Departman tagları ile oluşturulmasını zorunlu kılmak istiyorsunuz. Ne yaparsınız?
Cavap: Yine Azure policies konfigürasyonu yapmanız gerekiyor.
Yukarıda belirttiğim soruları incelediğinizde belirtilen ortamlarda denetim eksikliği olduğunu kolaylıkla görebilirsiniz. Eğer ortamda bir governance model oluşturmak isteniyor ve Azure platformunu kullanan kişilerin bu modele uyarak platformu kullanmalarını istiyorsak Azure policies’i bu modeli sağlamanın bir adımı olarak ortama entegre etmemiz gerekir.
Policy’ler içerilerinde birden fazla kural içerebilirken, tek bir kaynak üzerine bir den çok policy ataması yapılabilir. Policy’ler subscription yada resource group seviyesinde atanabilir.
Şimdi konunun paralelinde basit bir örnek ile ilerleyerek anlatmak istiyorum. Bu sebeple subscription bölümüne gelip Policies seçeneğini seçelim.
Resim-1
Policies’i seçtikten sonra definitions bölümüne gelelim. Bu bölüme geldiğinizde bir çok builtin definition listelenecektir. Şekildeki gibi search bölümünü kullanarak belirli definition’lara kolaylıkla ulaşabilirsiniz. Şimdi basit olarak “Allowed Location” definition’ını kullanıp belirli bir resource group içerisinde sadece izin verilen lokasyonda resource oluşturulmasını zorlayalım.
Resim-2
Aşağıdaki şekilde görüldüğü gibi, APPTEST isimli resource group içerisinde sadece lokasyonu West Europe olan kaynaklar oluşturulabilir. (Bu şekildebelirtilen definition’ın seçtiğimiz resource group üzerine atama işlemini de yapmış oluyoruz. Burada resource group seçmeden direkt subscription seviyesinde atama yapmak da mümkün)
Resim-3
Yapılan işlemin ardından atamayı yaptığımız resource group içerisinde lokasyonu West Central US olan kaynak oluşturmak istediğimizde aşağıdaki gibi hata alıyoruz. Bu da policy’mizin sağlıklı şekilde çalıştığını gösteriyor.
Resim-4
Hata detayına girdiğimizde Uygulanan policy olduğunu ve kurallara aykırı bir işlem yaptığımızı görebiliriz.
Resim-5
Policy’nin oluşturulmasının ardından eğer resource group altındaki tüm kaynaklar condition’ı karşılıyorsa, policy aşağıdaki gibi Compliant durumuna geçecektir.
Resim-6
Azure Policies ile governance model oluştururken kullanabileceğiniz bir çok built-in policy’de gelmektedir. Search ile arama yaparak istediğiniz policy’leri bulup istediğiniz resource group yada subscription üzerine atama yapabilirsiniz.
Azure policies tanımlamaları yapılırken JSON dili kullanılır. JSON kullanılarak oluşturulan policy’ler için iki adım vardır. İlk adım policy’nin tanımlandığı definition aşamasıdır. Bu işlemin ardından da assign aşaması definition sınucuna göre uygulanır.
Policy Definitions
Define kısmı if ve then bloklarını içerir. If kısmı koşulu then kısmı ise koşul sonrasındaki sonucu execute eder. Policy’ler içerisinde bir den çok IF koşulu da kullanılabilir. Bunlar AND(ALLOF), OR(ANYOF) ve NOT operatörleri ile birbirlerine bağlanırlar. Örnek JSON definition formatı aşağıdaki gibidir.
Resim-7
Policiy define işlemi yapılırken desteklenen field türleri aşağıdaki gibidir.
- Name
- Kind
- Tags
- Location
- Type
- Property Alias
Governance model oluşturulurken kullanılması gereken bileşenlerden birisi olan Policies’i özetlemiş olduk. Umarım faydalı bir makale olmuştur.
Referanslar
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-using-tags
Azure for Architects Ebook
TAGs: Azure Tags, Azure for Architects, Azure Architect, Azure Governance Model, Azure Governance, Azure Billing, Azure Cost Optimization, Azure Architecture Best Practises, Azure Regions and Zones, Azure Availability Zones,Microsoft Azure, Cloud Design Pattern, Azure storage design, Azure storage best practise, Azure Resource Categorization, Azure Resource Labeling, Azure Policies, Azure Policy, Define Azure Policy