Kod olarak altyapı (IaC) için DevSecOps
Çözüm fikirleri
Bu makalede bir çözüm fikri açıklanmaktadır. Bulut mimarınız bu mimarinin tipik bir uygulaması için ana bileşenleri görselleştirmeye yardımcı olmak için bu kılavuzu kullanabilir. İş yükünüzün özel gereksinimlerine uygun iyi tasarlanmış bir çözüm tasarlamak için bu makaleyi başlangıç noktası olarak kullanın.
Bu çözüm fikri, kod olarak altyapı (IaC) için GitHub kullanan DevSecOps işlem hattını gösterir. Ayrıca operasyonel mükemmellik, güvenlik ve maliyet iyileştirme için iş akışının nasıl yönetilmeye tabi olduğu da açıklanır.
Terraform, Hashicorp'un ticari markasıdır. Bu işaretin kullanılması herhangi bir onay anlamına gelmez.
Mimari
Bu mimarinin bir Visio dosyasını indirin.
Veri akışı
Aşağıdaki veri akışı önceki diyagrama karşılık gelir:
IaC şablonları gibi altyapı tanımlarının GitHub depolarında kod değişikliklerini denetlemek için test temelli geliştirmeyi kullanın. IaC'nin kalitesini test etmek için aynı anda birim testleri, tümleştirme testleri ve kod olarak ilke (PaC) geliştirirsiniz.
Çekme istekleri GitHub Actions aracılığıyla otomatik birim testlerini tetikler.
Yerel olarak dağıtılan altyapı durumlarını ve planlarını kullanarak IaC'yi test etmek için GitHub Actions iş akışı işlemini yapılandırın.
Kod kalitesi ve güvenlik sorunlarını taramak için GitHub Actions'ı yapılandırın. IaC şablonlarını analiz etmek ve olası güvenlik açıklarını algılamak için kendi özel derlenmiş GitHub CodeQL sorgularınızı oluşturun. Bir güvenlik açığı algılanırsa GitHub, kuruluşa veya depo sahiplerine ve bakımcılara uyarılar gönderir.
IaC aracı, boyutu, örnek sayısını ve diğer özellikleri uyarlayarak her ortam için kaynakları sağlar ve değiştirir. Sağlanan kaynaklarda IaC için otomatik tümleştirme testleri çalıştırabilirsiniz.
Altyapıda el ile güncelleştirme gerektiğinde, belirlenen yönetici erişimi değişiklikleri gerçekleştirmek için yükseltilir. Değişiklik sonrasında yükseltilmiş erişim kaldırılır. IaC'nin mutabakatı için bir GitHub Sorunu da günlüğe kaydetmeniz gerekir. Mutabakat adımları ve yaklaşımları belirli IaC araçlarına bağlıdır.
SecOps, güvenlik tehditlerini ve güvenlik açıklarını sürekli izler ve bu tehditlere karşı savunma sağlar. Azure İlkesi, bulut idaresini zorlar.
Bir anomali algılandığında, github sorunu çözülebilmesi için otomatik olarak günlüğe kaydedilir.
Bileşenler
GitHub , sürüm denetimi ve işbirliği için bir kod barındırma platformudur. GitHub kaynak denetimi deposu tüm proje dosyalarını ve bunların düzeltme geçmişini içerir. Geliştiriciler depodaki koda katkıda bulunmak, bunları tartışmak ve yönetmek için birlikte çalışabilir.
GitHub Actions sürekli tümleştirme, otomatik test ve kapsayıcı dağıtımlarını kapsayan bir derleme ve yayın iş akışları paketi sağlar.
GitHub Advanced Security , IaC'nizin güvenliğini sağlamaya yönelik özellikler sağlar. Başka bir lisans gerektirir.
CodeQL , altyapı yanlış yapılandırmalarını algılamak için statik kod üzerinde çalışan güvenlik tarama araçları sağlar.
Terraform , HashiCorp tarafından geliştirilen ve Azure'da ve diğer ortamlarda altyapı otomasyonuna izin veren bir iş ortağı ürünüdür.
Bulut için Microsoft Defender, hibrit bulut iş yükleri arasında birleşik güvenlik yönetimi ve gelişmiş tehdit koruması sağlar.
Microsoft Sentinel , buluta özel bir güvenlik bilgileri ve olay yönetimi (SIEM) ve güvenlik düzenleme otomatik yanıtı (SOAR) çözümüdür. Kuruluşunuz genelindeki tehditleri algılamanıza ve yanıtlamanıza yardımcı olmak için gelişmiş yapay zeka ve güvenlik analizi kullanır.
Azure İlkesi , bulut kaynakları için kuralları zorunlu kılabilir ilke tanımlarını kullanarak ekiplerin BT sorunlarını yönetmelerine ve önlemelerine yardımcı olur. Örneğin, projeniz tanınmayan bir SKU'su olan bir sanal makine dağıtmak üzereyse, Azure İlkesi sizi sorunla ilgili uyarır ve dağıtımı durdurur.
Azure İzleyici , performans ölçümleri ve etkinlik günlükleri gibi uygulama telemetrisini toplar ve analiz eder. Bu hizmet düzensiz koşulları belirlediğinde uygulamaları ve personeli uyarır.
Senaryo ayrıntıları
Kavramsal olarak, IaC için DevSecOps, Azure Kubernetes Service (AKS) üzerindeki uygulama kodu için DevSecOps'a benzer. Ancak IaC için sürekli tümleştirmeyi ve sürekli teslimi yönetmek ve otomatikleştirmek için farklı bir işlem hatları ve araçlar kümesine ihtiyacınız vardır.
IaC'yi benimsediğinizde, kodu geliştirirken otomasyon testleri oluşturmanız önemlidir. Bu testler, iş yükünüz ölçeklendirildiğinde IaC testinin karmaşıklığını azaltır. Terraform durumları ve test temelli geliştirme planları gibi yerel altyapı yapılandırma durumlarını kullanabilirsiniz. Bu yapılandırma durumları gerçek dağıtımlara öykünmektedir. Azure Kaynak Grafı REST API'sini kullanarak gerçek altyapı dağıtımlarında IaC için tümleştirme testleri çalıştırabilirsiniz.
PaC, düzenlemelere ve kurumsal idareye uygun altyapı sunmak için bir diğer önemli yöntemdir. Bulut idaresini otomatikleştirmek için işlem hatlarınıza PaC iş akışları ekleyebilirsiniz.
Geliştirme aşamasının başlarında altyapının güvenliğini sağlamak, dağıtımdan sonra saldırı noktalarını ortaya çıkaran yanlış yapılandırılmış altyapı risklerini azaltır. Altyapı kodundaki güvenlik açıklarını taramak için GitHub'ın CodeQL'ini kullanarak Synk veya Aqua Security tfsec gibi statik kod analizi araçlarını tümleştirebilirsiniz. Bu işlem statik uygulama güvenliği testine benzer.
Altyapı dağıtıldığında ve çalışır durumda olduğunda, bulut yapılandırma kaymalarını çözmek, özellikle üretim ortamlarında zor olabilir.
Üretim ortamları için bulut altyapısını dağıtmak veya değiştirmek için ayrılmış hizmet sorumluları ayarlayın. Ardından ortamın el ile yapılandırılmasına izin veren diğer tüm erişimi kaldırın. El ile yapılandırmalara ihtiyacınız varsa, belirlenen yöneticinin erişimini yükseltin ve değişiklik yapıldıktan sonra yükseltilmiş erişimi kaldırın. Geliştiricilerin değişiklikleri uzlaştırabilmesi için Azure İzleyici'yi bir GitHub Sorunu oluşturacak şekilde yapılandırmanız gerekir. Mümkünse el ile yapılandırmadan kaçının.
Güvenlik olaylarını önlemeye yardımcı olmak için bulut ortamını tehditlere ve güvenlik açıklarına karşı sürekli izlemek önemlidir. Anormal trafiği algılamak için tehdit koruması ve SIEM araçlarını kullanabilirsiniz. Bu araçlar güvenlik yöneticilerini otomatik olarak uyarır ve bir GitHub Sorunu oluşturur.
Olası kullanım örnekleri
Contoso adlı kurgusal şirket için çoklu bulut stratejisi kullanan IaC geliştiricilerinden oluşan merkezi bir ekibin parçasısınız. Dağıtımların güvenliğini ve kalitesini sağlamaya yardımcı olmak için IaC için DevSecOps kullanarak bulut altyapısını yeni bir Azure giriş bölgesine dağıtmak istiyorsunuz. Ayrıca altyapıda yapılan tüm değişiklikleri izlemek ve denetlemek istiyorsunuz.
Katkıda Bulunanlar
Microsoft bu makaleyi korur. Bu makaleyi aşağıdaki katkıda bulunanlar yazdı.
Asıl yazarlar:
- Vito Chin | Üst Düzey Bulut Çözümü Mimarı
- Yee Shian Lee | Üst Düzey Bulut Çözümü Mimarı
Nonpublic LinkedIn profillerini görmek için LinkedIn'de oturum açın.
Sonraki adımlar
- DevSecOps için kullanılacak tercih edilen IaC araçlarını göz önünde bulundurun ve bunların IaC güvenlik taraması yapmak için uzantılarla birlikte geldiğinden emin olun.
- Azure'da tercih edilen IaC dili veya şablonları, Bicep veya Terraform'ı göz önünde bulundurun.
- Kuruluşlar için GitHub kılavuzu
- Azure'a bağlanmak için GitHub Actions'ı kullanma
- GitHub Actions
- Sıfır Güven uyumluluğu ile ne demek istiyoruz?
- Azure Resource Manager şablonları için AzOps
- Terraform giriş bölgeleri modülü ve çözümleri
- Bicep kullanarak IaC'ye giriş