8 Maddede Uçtan Uca Konteyner Güvenliği
Osman Karan5 Dakika Okuma Süresi5 Temmuz 2019Yorum Ekle
Şirketlerdeki yazılım ekiplerinin ezeli sorunlarından biri olan kaynak yönetimi, konteyner teknolojisiyle mutlu sona ulaşıyor. Şimdi ise akıllarda aynı soru var: Konteynerlerin güvenliği nasıl sağlanacak?
Bir yazılımcının en büyük sorunlarından birisi, üzerinde çalıştığı dijital ürünü diğer tüm süreçlerden bağımsız olarak test edebileceği bir ortam yaratmaktır. Bu durum, olası hataların tespit ve çözüm süreçlerini çok daha hızlı hale getirir. Bunu sağlayabilmek için ise birbirinden bağımsız sistemlere ihtiyaç duyarız. Bu sistemlere tüm ekip tarafından kolayca erişebilmesi ve uygulamanın her yazılımcı için aynı sonuçları üretmesi gerekir. Burada ise karşımıza bir problem çıkar: Kaynak yönetimi.
Bir sepette on yumurtanız olduğunu düşünün. Sepeti elinizden düşürdüğünüzde tüm yumurtalar kırılacaktır. Her yumurtayı ayrı bir sepete koyarak bu durumun önüne geçebilirsiniz. Innovera gibi işi yazılımdan geçen her firma birbirinden bağımsız sistemlere işte bu yüzden ihtiyaç duyuyor. Ayrı görevlere sahip her bir kod parçacığını, ayrı bir sepete koyuyoruz. Ancak teknoloji dünyasının sepetleri; yani bilgisayarlar oldukça pahalı araçlar. Üstelik yeri geldiğinde on değil, yüz binlerce sepete ihtiyaç duyabiliyoruz.
Kaynak sorununu bitiren teknoloji: Konteynerler
Teknoloji dünyasında “sepet” başlangıçta “yeni bilgisayar” anlamına geliyordu. Geliştirilen uygulamanın test edilmesi, stabil çalışması ve sürecin sağlıklı bir şekilde ilerleyebilmesi için sayısız bilgisayarı yan yana getirip kablolarla birbirine bağlıyorduk. Ancak bu çok pahalı bir çözümdü. Sonra “sanallaştırma” teknolojisiyle tanıştık. Tek bir bilgisayarın içine birbirinden bağımsız onlarca işletim sistemi kuruyor; bir diğer deyişle bir sepeti küçük parçalara ayırıyorduk. Bu yöntem çok daha ucuzdu, ancak performansta hala sorun yaşıyorduk.
“Konteyner” teknolojisi ile tüm bu sorunlar sona erdi. Artık sadece tek bir sepet kullanıyoruz. Oluşturduğumuz her yeni konteyner ile aslında var olmayan, sanal sepetler oluşturuyoruz. Uygulamalar, bu sanal sepetleri gerçeklerinden ayırt edemiyor. Bu sayede her bir işlemi tamamen bağımsız sistemlerde geliştirirken, aynı zamanda her geliştiricinin birebir aynı şartlara sahip olmasını sağlıyoruz. Böylelikle hem paramız cebimizde kalıyor hem de kolumuz yorulmuyor. Yapmamız gereken tek şey bu sepeti en iyi şekilde korumak oluyor. Peki bunu nasıl yapıyoruz?
1- Sistemi sağlam temeller üzerine kurun
Konteyner teknolojilerini kullanmadan önce, tüm sürecin uçtan uca güvenli bir şekilde tasarlanması büyük önem taşıyor. Dolayısıyla olası tüm problemleri en baştan düşünmek ve gerekli önlemleri almak durumundayız. Bu önlemler, çoğunlukla tecrübeli ve uzman kişiler tarafından alınıyor. Sistemin kaynağında gözden kaçan bir hatanın ileride büyük sorunlara yol açmaması için binayı sağlam temeller üzerine kurduğumuza emin olmamız gerekiyor.
2- İmaj zafiyetlerini sürekli kontrol edin
Açık kaynak anlayışını benimseyen konteyner teknolojisinde, uygulamalarımızı çalıştıracağımız sanal işletim sistemlerini “imaj” adını verdiğimiz paket yazılımlarla yaratıyoruz. Farklı işlemler için başkaları tarafından önceden hazırlanıp paketlenmiş sayısız imaj dosyasını, internetten indirip kolaylıkla kullanabiliyoruz. Ancak bu imajlar, direkt olarak sistem çekirdeğiyle iletişime geçtiğinden olası bir güvenlik açığının bizi büyük tehlikelerle karşı karşıya bırakabileceğinin farkında olmamız gerekiyor.
Bu sebeple atak yüzeylerini daraltma olarak da tabir edebileceğimiz bir yöntemle, imajların sahip olduğu açıkları minimuma indiriyoruz. İmajı paketleyen kişi için risk oluşturmayan, hatta belki de uygulamasının çalışması için özellikle bırakılan bir açık, projemizde güvenlik zafiyeti yaratabiliyor. Bu yüzden denetimi sıkı tutmamız gerekiyor. Belirli aralıklarla imajları tekrar tekrar gözden geçiriyor, yapılan tüm güncellemeleri yakından takip ediyoruz.
3- Siber saldırganlara geçit vermeyin
Konteyner sistemimiz tamamen güvenli olsa bile siber saldırılarla her zaman karşılaşabiliriz. Bu yüzden gerekli önlemleri almamız ve kendimizi en yeni teknolojilerle güçlendirmemiz gerekiyor. Gerekli güvenlik politikalarını belirleyerek, olası saldırıları en kısa sürede engelleyebilmemiz şart. Konteynerlerimizin nasıl tasarlandığı bu noktada tekrar önem kazanıyor. Günün sonunda iyi tasarlanmış konteynerler saldırılara çok daha dayanıklı hale geliyor.
4- Parolaları tek tek kontrol edin
Yazılımcılar uygulama geliştirirken bazen kendi parolalarını apaçık bir şekilde imajın içinde unutabiliyor. Bu durumda paylaştıkları imaj dosyası, büyük bir güvenlik açığı yaratabiliyor. Bu dosyayı indiren herhangi birisi, ilgili parolayı kullanarak sisteminize rahatlıkla erişim sağlayabiliyor. Innovera olarak bu durumun önüne geçebilmek adına Beyond Trust ile birlikte çalışıyoruz. Password Vault ile gözden kaçan tüm parolaları tespit ederek sistemi koruma altına alıyoruz.
5- Uygulamanızı yayındayken de koruyun
Geliştirme süreci tamamlandığında uygulamamızı herkesin kullanımına sunduğumuz yayın dönemi (runtime) başlıyor. Bu noktada ise karşımıza farklı sorunlar çıkabiliyor. Örneğin bir işlemin binlerce kez üst üste çalışması gerekebiliyor. Bunu sağlayan kodların sorun çıkarmadığına emin olmak ve gerektiğinde problemi hızla çözmek durumundayız. Yapay zeka ve makine öğrenimi gibi teknolojilerden de faydalanarak artık çok daha hızlı çözümler elde etmek mümkün.
6- Görevler ayrılığı ilkesini benimseyin
Hangi geliştiricinin hangi konteyner alanına erişeceğini en baştan çok iyi belirlemek gerekiyor. Hiçbir yazılımcının yetkili olmadığı bir konteynere müdahale edememesi çok önemli. Bu hem çalışanı hem de sistemin kendisini koruyor. Belirlenen doğru politikalar ile bu sorunu ortadan kaldırmak mümkün. Profesyonel bir çözüm ortağıyla çalıştığınızda görevlerin etkili bir şekilde dağıtılmasını sağlıyor, işlerin birbirine karışmasının da önüne geçiyorsunuz.
7- Mikroservis ve entegrasyonları denetliyoruz
Uygulamalarımızda sayısız mikro servis ve entegrasyon kullanıyoruz. Tüm bu teknolojiler gerektiğinde birbirleriyle iletişime geçiyor; diğer bir deyişle konuşuyor. Örneğin Facebook API’si ile sunucumuzu konuşturarak internet sitemize yüklediğimiz her fotoğrafın aynı zamanda Facebook’ta da paylaşılmasını sağlayabiliyoruz. Dolayısıyla Facebook’ta oluşacak bir güvenlik zafiyeti günün sonunda bizi de etkiliyor. Bu yüzden kullandığımız tüm dış kaynakların kendi aralarında sağlıklı ilişkilere sahip olması gerekiyor. Entegrasyonların doğru kurgulanması, güvenli bir konteyner sistemi için hayati önem taşıyor.
8- Yasa ve regülasyonlara dikkat edin
Uygulama geliştirirken bir yandan da belirli regülasyonlara dikkat etmemiz gerekiyor. Kullanıcı verilerini korumak için getirilen KVKK yasası buna iyi bir örnek. Konteynerlerimizin bu kurallara uyduğuna emin olmamız ve gerektiğinde hızlı güncellemelerle çözüm üretebilmemiz şart. Bu yüzden müşterilerimize ilgili tüm düzenlemelere hakim olan profesyonel bir çözüm ortağıyla çalışmalarını tavsiye ediyoruz.
Kaleme alan Osman Karan
YouTube Hack’lemeye Yönelik Videoları Yasakladı