Yakın zamana kadar, küresel reasürans şirketimiz, dünyaya yayılmış birkaç farklı veri merkezinde yalnızca kendi donanımımıza dayanan geleneksel bir şirket içi altyapı kullanıyordu. Ancak, bu altyapının daha hızlı uygulama geliştirme ve dijital ürün ve hizmetlerin daha hızlı sunulmasını talep eden bazı girişimlerimizi geciktirebileceğini fark ettik.

Bu farkındalık, otomasyonu artıracak, karmaşıklığı azaltacak ve yalın ve çevik operasyonları destekleyecek çeşitli iş yükleri için yeni bir bulut altyapısı ve yeni dağıtım süreçleri izlememize yol açtı. Doğal olarak güvenlik de ön plandaydı. Bazı kritik iş yüklerimizi devasa tekil ağımızdan buluta taşırken, yeni ortamımızın potansiyel tehditlere karşı sürekli olarak sağlamlaştırılabilmesini sağlamamız gerekiyordu.

Bulut, açık kaynak ve Kubernetes seçme

Mimari ekibimin amacı, bulutta kaynakları eninde sonunda diğer ekiplere ait olacak küçük ağ dağıtımları oluşturmaktı. Bu etkinleştirici rolde, ekiplerin yenilikçi uygulamaların hızlı dağıtımını gerçekleştirmesi ve pazara hızlı bir şekilde ulaşması için altyapı temeli sağlayacağız.

Şirketimiz bir Microsoft mağazası olduğundan, yeni bulut altyapımızı Microsoft Azure’da kurma seçeneğimiz açıktı. Sonraki tercihimiz, otomasyon olanaklarını ve hem kod olarak altyapıyı hem de kod olarak güvenliği göz önünde bulundurarak mikro hizmet tabanlı uygulamalara geçmek oldu.

Güvenlik görevlilerimiz başlangıçta açık kaynak çözümlerine karşı temkinli olsa da, bulut araçlarını incelemek, bizi en iyi seçeneklerin hepsinin açık kaynak olduğunun farkına varmamızı sağladı. (Benim görüşüme göre, açık kaynakla ilgili güvenlik endişeleri modası geçmiş durumda. Arkalarında güçlü topluluklar bulunan sağlam teknolojiler, tescilli çözümler kadar olmasa da daha güvenlidir.) Bulut altyapımızın destekleyeceği projelerin bütçelerinin hesaba katılması gerekiyordu. ayrıca, bizi tescilli lisans ücretlerinden ve kilitlenmeden uzaklaştırmaya teşvik ediyor. Bu, açık kaynağa olan bağlılığımızı doğal bir seçim haline getirdi.

Ekibim, mikro hizmet altyapımızı düzenlemek için Kubernetes’i denemeye hevesliydi. Ancak ilk projemiz, Kubernetes’in hızlı yükselişinden hemen önce popüler bir seçenek olan lisanslı Docker Swarm’ı kullanmakta ısrar eden bir ekip için çalışmayı içeriyordu. Docker Swarm’ı kullanarak projeyi tamamladık, ardından Kubernetes’i aynı göreve koymayı deneyebileceğimiz düzenleme ile. Bu karşılaştırma, Kubernetes’in ihtiyaçlarımız için üstün bir seçim olduğunu açıkça kanıtladı. Daha sonra sonraki tüm projeler için Kubernetes’i kullandık.

Azure’daki Kubernetes küme mimarimiz

Dağıttığımız Kubernetes kümelerine, güvenlik sertifikalarıyla korunan gerçek URL’ler kullanılarak erişilebilir. Bunu başarmak için Azure üzerindeki mimarimiz, projeye ait bir yük dengeleyici ve bir DNS bölgesi, KeyVault (bir Azure güvenli sırlar deposu) ve bir Azure yerel nesne deposu kullanan bir depolama içerir. Mimarimiz ayrıca küme içinde tamamen Azure tarafından işlenen bir kontrol düzlemi içerir. Bu bileşenlerin her birine harici erişim, geleneksel güvenlik duvarları tarafından korunur ve erişimi yalnızca beyaz listeye alınmış belirli IP adresleriyle kesin olarak sınırlar. (Varsayılan olarak erişim kendi ağımızla da sınırlıdır.)

Yeni projeleri başlatmak için kullandığımız güçlendirici çerçevemiz, Kubernetes kümesi içinde çeşitli bileşenleri uygular. Bir giriş denetleyicisi, proje mikro hizmetleri gibi küme içinde dağıtılan kaynaklara dışarıdan erişimi açar. Buna, tüm girişlerin Azure AD tarafından yetkilendirildiğinden emin olan bir OAuth proxy’si dahildir. Harici bir DNS sunucusu, DNS bölgesinde DNS hizmetini oluşturur. Gizli dizi denetleyicimiz, Azure Key Vault’tan (kümede tutulmaması gereken ve kümenin yok edilmesi gerektiğinde kaybolmaması gereken bilgiler) sırları getirir. Bir S3 API, veri depolama kaynaklarıyla iletişim kurar. Bir sertifika yöneticisi, bizim durumumuzda Let’s Encrypt kullanarak ücretsiz olarak TLS erişimi için özel sertifikalar oluşturur.

Ayrıca izleme, günlüğe kaydetme ve izleme için araçlar kullanıyoruz. İzleme için Prometheus ve Grafana endüstri standartlarından yararlanıyoruz. Günlüğe kaydetme, Grafana Loki’yi kullanır. İzleme, Jaeger’ı kullanır. Ayrıca, Kubernetes dağıtımları için isteğe bağlı bir geliştirme olan koruyucu hizmet ağımız olarak Linkerd’den yararlandık.

Kubernetes güvenlik görünürlüğü ve otomasyonu

İsteğe bağlı olmayan şey, Kubernetes’e özel bir güvenlik çözümünün yerinde olmasıdır. Burada, uçtan uca uygulama görünürlüğü ve otomatik güvenlik açığı yönetimi için Kubernetes’te yerel bir kapsayıcı güvenlik platformu olarak NeuVector’u kullanıyoruz.

Bulutta güvenliğe yaklaşımımızı ilk düşündüğümüzde, güvenlik açığı taraması ve uygulama iş yükü koruması araçları, son savunma hattı ve doğru uygulanması gereken en önemli şey olarak öne çıktı. Kubernetes kümesi, hem giriş hem de çıkış maruziyeti yoluyla saldırılarla ve ortam içinde yükselen saldırı zincirleriyle karşı karşıya kalabilir.

Uygulama geliştirme ve dağıtımını korumak için, CI/CD ardışık düzeninin her aşamasının, kritik güvenlik açıkları veya yanlış yapılandırmalar (dolayısıyla NeuVector) için oluşturma aşamasından üretime kadar sürekli olarak taranması gerekir. Uygulamaların kapsayıcı açıklarından, sıfır gün saldırılarından ve içeriden gelen tehditlerden korunması gerekir. Kubernetes’in kendisi de son yıllarda açıklanan kritik güvenlik açıklarıyla bir saldırı hedefidir.

Etkili bir Kubernetes güvenlik aracı, Kubernetes ortamındaki tüm bağlantıların güvenliğini görselleştirip otomatik olarak doğrulayabilmeli ve tüm beklenmeyen etkinlikleri engellemelidir. Ayrıca, Kubernetes ortamında beklenen iletişimi beyaz listeye almak ve anormal davranışları işaretlemek veya engellemek için politikalar tanımlayabilmeniz gerekir. Bu çalışma zamanı korumalarıyla, bir saldırgan Kubernetes ortamına girip kötü niyetli bir süreç başlatsa bile, bu süreç hasara yol açmadan hemen ve otomatik olarak engellenir.

Kod olarak altyapının önemi

Kubernetes dağıtımlarımız, kod olarak altyapıdan (IaC) yararlanır; bu, mimarimizin yukarıda bahsedilen her bileşeninin basit YAML dosyaları kullanılarak oluşturulabileceği ve yeniden oluşturulabileceği anlamına gelir. IaC, projelerimiz ve kümelerimiz genelinde önemli tutarlılık ve yeniden üretilebilirlik sağlar. Örneğin, bir kümenin herhangi bir nedenle yok edilmesi gerekiyorsa veya bir değişiklik yapmak istiyorsanız, kümeyi yok edebilir, değişiklikleri uygulayabilir ve yeniden konuşlandırabilirsiniz. IaC, aynı ayarların çoğunu kullanan ve ardından tamamlamak için yalnızca basit değer değişiklikleri gerektiren ayakta geliştirme ve üretim kümelerine başlamak için de yararlıdır.

Daha da önemlisi, IaC, kümemize uygulanan tüm değişikliklerin denetlenmesini de sağlar. İnsanlar hatalara ve yanlış yapılandırmalara çok yatkındır. Bu yüzden otomasyona sahibiz. Otomasyon, güvenli dağıtımlarımızı yeniden üretilebilir hale getirir.

Kod olarak güvenliğin önemi

Aynı nedenlerle, otomasyon ve kod olarak güvenlik (SaC), Kubernetes güvenlik korumalarımızı ayarlamak için de çok önemlidir. Tercih ettiğiniz Kubernetes güvenlik aracınız, güvenlik politikalarını kolayca uygulamak ve kontrol etmek için kümeye YAML dosyaları olarak yüklediğiniz nesneler olan özel kaynak tanımlarından (CRD’ler) yararlanmayı mümkün kılmalıdır. IaC’nin altyapı için tutarlılık ve güvenilirlik sağlaması gibi SaC, karmaşık güvenlik duvarlarının ve güvenlik hizmetlerinin doğru şekilde uygulanmasını sağlar. Güvenlik korumalarını kod olarak tanıtma ve yeniden üretme yeteneği, hataları ortadan kaldırır ve etkinliği büyük ölçüde artırır.

Sıradaki ne

Kubernetes altyapımızın geleceğine baktığımızda, potansiyel bir dağıtım aracısı olarak Flux ile çerçevemizi dağıtmak için GitOps’u benimsemeyi amaçlıyoruz. Ayrıca, yetkili kapsayıcı oluşturma, ayrıcalıklı kapsayıcılar vb. üzerinde ilke denetimi sunan Open Policy Agent’ı Kubernetes ile entegre etmek için Gatekeeper kullanmayı planlıyoruz.

Bulutun ve Kubernetes’in potansiyelini keşfetmeye başlayan herhangi bir kuruluş için, özellikle otomasyon ve kod olarak altyapı ve kod olarak güvenlik uygulanması söz konusu olduğunda, burada ana hatlarıyla belirtilenlere benzer mimari ve güvenlik seçeneklerinin araştırılmasını şiddetle tavsiye ederim. Bunu yapmak, Kubernetes’ten başarıyla yararlanmanın ve birçok avantajından yararlanmanın daha kolay bir yolunu sunmalıdır.

Karl-Heinz Prommer, Münih Re’de teknik mimardır.

New Tech Forum, ortaya çıkan kurumsal teknolojiyi benzeri görülmemiş bir derinlikte ve genişlikte keşfetmek ve tartışmak için bir alan sağlar. Seçim, önemli olduğuna inandığımız ve InfoWorld okuyucularının en çok ilgisini çeken teknolojileri seçmemize dayalı olarak özneldir. InfoWorld, yayın için pazarlama teminatı kabul etmez ve katkıda bulunan tüm içeriği düzenleme hakkını saklı tutar. Tüm sorularınızı newtechforum@infoworld.com adresine gönderin.

Telif Hakkı © 2021 IDG Communications, Inc.



#Bulutta #Kubernetesin #güvenliğini #sağlamak #için #alınan #dersler