Platform kodu bütünlüğü

Microsoft Azure gibi karmaşık bir sistemin çalıştırılmasında önemli bir zorluk, sistemde yalnızca yetkili yazılımların çalıştığından emin olmaktır. Yetkisiz yazılım, herhangi bir işletme için çeşitli riskler sunar:

  • Özel saldırı araçları, özel kötü amaçlı yazılımlar ve bilinen güvenlik açıklarına sahip üçüncü taraf yazılımlar gibi güvenlik riskleri
  • Onaylanan değişiklik yönetimi süreci yeni yazılım getirmek için kullanılmadığında uyumluluk riskleri
  • Dış geliştirilen yazılımlardan kaynaklanan kalite riski, işletmenin operasyonel gereksinimlerini karşılamayabilir

Azure da önemli karmaşıklıkta aynı zorlukla karşı karşıya. Binlerce sunucu, binlerce mühendisin geliştirip bakımını yaptığı yazılımları çalıştırıyor. Bu ölçek, iş süreçlerinin tek başına yönetemeyeceği büyük bir saldırı yüzeyi sunar.

Yetkilendirme kapısı ekleme

Azure, konuşlandırılan yazılımın güvenliği, uyumluluğu ve kalitesi üzerinde kapılar uygulayan zengin bir mühendislik süreci kullanır. Bu süreç, kaynak koduna erişim kontrolü, akran kod incelemeleri, güvenlik açıkları için statik analiz, Microsoft'un Güvenlik Geliştirme Yaşam Döngüsü (SDL) ve işlevsel ile kalite testlerini içerir. Microsoft, dağıtılan yazılımın bu süreçte akmasını garanti etmeli. Kod bütünlüğü bu garantiyi sağlamaya yardımcı olur.

Yetkilendirme kapısı olarak kod bütünlüğü

Kod bütünlüğü, Windows Server 2016'dan itibaren erişilebilir hale gelen çekirdek düzeyinde bir hizmettir. Kod bütünlüğü, bir sürücü veya dinamik olarak bağlı kitaplık (DLL) yüklendiğinde, yürütülebilir bir ikili dosya çalıştırıldığında ya da bir betik çalıştırıldığında katı bir yürütme denetimi ilkesi uygulayabilir. Linux için DM-Verity gibi benzer sistemler mevcuttur. Kod bütünlüğü politikası, çekirdeğin bir ikili dosyayı veya betiği yüklemeden ya da çalıştırmadan önce eşleştirdiği, ya kod imzalama sertifikalarından ya da SHA-256 dosya karmalarından oluşan bir yetkilendirme göstergeleri kümesidir.

Kod bütünlüğü, sistem yöneticilerinin yalnızca belirli sertifikaların imzaladığı veya belirtilen SHA-256 hash'larıyla eşleşen ikili ve betikleri yetkileyen bir politika tanımlamasına olanak tanır. Çekirdek, ayarlanan ilkeye uymayan her şeyin yürütülmesini engelleyerek bu ilkeyi zorlar.

Bir kod bütünlüğü politikası, üretimdeki kritik yazılımı engelleyebilir ve politika tamamen doğru olmadıkça kesintiye yol açabilir. Bu endişe göz önüne alındığında, güvenlik izlemesinin yetkisiz yazılım çalıştırmasını tespit etmek için neden yeterli olmadığını sorabilirsiniz. Kod bütünlüğü, yürütmeyi engellemek yerine, yetkisiz yazılım çalıştığında uyarı veren bir denetim moduna sahiptir. Uyarı, uyum risklerinin ele alınmasında büyük bir değer katabilir. Ancak, fidye yazılımı veya özel kötü amaçlı yazılım gibi güvenlik risklerinde, yanıtın birkaç saniye bile geciktirilmesi, koruma ile rakibin filonuzda kalıcı bir yer edinmesi arasındaki fark olabilir. Azure'da Microsoft, müşteriyi etkileyen bir kesintiye yol açan kod bütünlüğü riskini yönetmek için önemli yatırımlar yapıyor.

Derleme işlemi

Daha önce belirtildiği gibi, Azure derleme sistemi yazılım değişikliklerinin güvenli ve uyumlu olduğundan emin olmak için zengin bir test setine sahiptir. Bir derleme doğrulamadan geçtikten sonra, yapı sistemi bunu Azure derleme sertifikası kullanarak imzalar. Sertifika, derlemenin tüm değişiklik yönetimi sürecinden geçtiğini gösterir. Derlemenin geçtiği son test Kod İmzası Doğrulaması (CSV)'dir. CSV, yeni oluşturulan ikili faylların Microsoft onları üretime yüklemeden önce kod bütünlüğü politikasını karşıladığını doğrular. Bu doğrulama, Microsoft'a yanlış imzalanmış ikili dosyaların müşteri üzerinde etkili bir kesintiye yol açmayacağına dair yüksek güven sağlıyor. CSV bir sorun bulursa, derleme bozulur ve ilgili mühendisler sorunu araştırmak ve düzeltmek için çağrılır.

Dağıtım sırasında güvenlik

Azure her derleme için CSV yapsa da, üretimdeki bazı değişiklikler veya tutarsızlıklar yine de kod bütünlüğüyle ilgili bir kesintiye yol açabilir. Örneğin, bir makine kod bütünlüğü politikasının eski bir versiyonunu çalıştırabilir veya sağlıklı olmayan bir durumda olabilir ve kod bütünlüğünde yanlış pozitifler üretebilir. Azure ölçeğinde Microsoft her şeyi gördü. Azure, dağıtım sırasında bir kesinti riskini korumaya devam ediyor.

Azure'daki tüm değişiklikler bir dizi aşamadan geçmek zorundadır. İlk aşamalar dahili Azure test örnekleridir. Sonraki aşama sadece diğer Microsoft ürün ekiplerine hizmet eder. Son aşama üçüncü taraf müşterilere hizmet vermektedir. Azure bir değişikliği dağıttığında, değişiklik sırayla her aşamaya ilerler ve aşamanın durumunu değerlendirmek için duraklar. Değişiklik olumsuz bir etki yaratmazsa, bir sonraki aşamaya geçer. Microsoft kod bütünlüğü politikasında kötü bir değişiklik yaparsa, aşamalı dağıtım değişikliği algılayıp geri alır.

Olay yanıtı

Bu katmanlı korumaya rağmen, filodaki bir sunucu doğru şekilde yetkilendirilmiş yazılımı engelleyebilir ve müşteriyle karşılaşan bir soruna yol açabilir; bu da Microsoft'un en kötü senaryolarından biridir. Son savunma katmanı insan soruşturmasıdır. Kod bütünlüğü bir dosyayı her engellediğinde, nöbetçi mühendislerin incelemesi için bir uyarı oluşturur. Uyarı, mühendislerin güvenlik soruşturmalarını başlatmasına ve müdahale etmesine olanak tanır; sorun gerçek bir saldırının, yanlış pozitif ya da müşteriyi etkileyen başka bir durumun göstergesi olsun. Bu uyarı, kod bütünlüğüyle ilgili sorunları azaltmak için gereken zamanı en aza indirir.

Sonraki adımlar

Microsoft'un platform bütünlüğünü ve güvenliğini nasıl sağladığı hakkında daha fazla bilgi edinmek için bakınız: