Sanallaştırma Metotları
Sanallaştırma, doğrudan gerçek kaynaklar yerine sanal bilgi işlem kaynaklarını kullanma eylemidir. Örneğin, bir programı doğrudan gerçek donanım üzerinde çalıştırmak yerine, işlemciyi, belleği vb. taklit ederek bilgisayarın sanal bir versiyonunda çalıştırabilirsiniz. Bu, programın kullandığı kaynakları sınırlayabilmeniz veya programın kendisini önemli ölçüde değiştirmenize gerek kalmadan yalıtılmış ortamlarda birden fazla program çalıştırabilmeniz açısından bazı avantajlar sunar. Sanal bilgi işlemin tipik olarak gerçekleştirildiği birkaç yol vardır:
Sanal Makineler
Sanal makine, bütün bir fiziksel bilgisayar gibi davranmak için yazılım kullanan bir kaynaktır. Sanal makineler, bir konuk işletim sisteminin yüklü olduğu donanımı taklit eder. Sanal makineyi çalıştıran makinenin işletim sistemi ana bilgisayar işletim sistemi olarak adlandırılır.
Sanal makineler, bir şeyin nasıl çalıştırılacağı konusunda büyük bir esneklik sağlar. Makine duraklatılabilir, yeniden başlatılabilir ve hatta mevcut durumunun anlık görüntüleri saklanabilir. Bazı sanal makinelerin çalışması için yükseltilmiş ayrıcalıklar bile gerekmez, yani ayrıcalıklı bir ortamı ayrıcalıksız bir ortamda taklit edebilirsiniz. Bu da onları güvenilmeyen programları korumalı alana almak için mükemmel bir seçim haline getirir.
Ne yazık ki sanal makineler, tüm işletim sistemini sanallaştırmayı gerektirdikleri için oldukça yoğun kaynak gerektirir. Bu kaynak kullanımı sorunu ve sanallaştırmanın artan popülaritesi, konteynerler gibi daha hafif çözümlerin yaratılmasına yol açtı.
Konteynerler
Bir konteyner, ana bilgisayarla aynı işletim sistemi çekirdeğini kullanarak sanal makineyi basitleştirir. Bu, konteyneri izole etmek için Linux çekirdeğinin özel özellikleri kullanılarak gerçekleştirilir. Cgroups tarafından kontrol edilen Linux isim alanları, bir daemon'un (Docker, podman, vb.) uygulamanın tüm sisteme sınırlı erişime sahip olduğu bir ortam oluşturmasına olanak tanır. Tipik olarak konteynerler, tek bir uygulamayı gerçek bir ana bilgisayarda tek başına çalışıyormuş gibi çalıştırmak için kullanılır. Bu, bazı uygulamaların gerektirdiği benzersiz ortamları dağıtmayı kolaylaştırır.
Bariz güvenlik endişesi izolasyonda yatmaktadır. Bir konteyner başka bir konteynerin kaynaklarına erişirse ne olur? Rakip şirketlere ait konteynerlerin bulutta aynı makinede yan yana çalışıyor olabileceği düşünüldüğünde, kötü niyetli bir konteynerin diğerine erişmesi veya onu bozmasının riskleri nelerdir?
Konteyner Orkestrasyon Sistemleri
Konteynerler ayrıca uygulamaları yeniden başlatmayı veya ölçeklendirmeyi de kolaylaştırır. Konteyner düzenleme sistemleri, konteynerleri izleyerek ve gerektiğinde yukarı veya aşağı getirerek bundan yararlanır. En popüler konteyner düzenleme sistemi, Google tarafından web uygulamalarını yönetmek için geliştirilen Kubernetes'tir.
Orkestrasyon sistemlerinin gerektiğinde imajlardan konteynerler oluşturduğu düşünüldüğünde, bariz endişe alanlarından biri bu imajların bütünlüğüdür. Bir imaj kayıt defteri tehlikeye girerse, orkestrasyon sistemi burada depolanan imajları dağıtmaya devam eder ve genellikle sorunu çok daha kötü hale getirir. Konteynerlerin günlük kaydı açısından yönetilmesi de zor olabilir ve bu da uyumluluk sorunlarına neden olabilir. Bir şirket geçmişte tek bir sunucunun günlüklerini izleyebilirken, şimdi bir sunucuda çalışan yüzlerce konteynerin günlüklerini izlemek zorunda.
IaaS
IaaS, hizmet olarak altyapı anlamına gelir ve bir sağlayıcıdan VM'ler veya konteyner kaynakları satın almayı ifade eder. Bazı popüler IaaS şirketleri Amazon Web Systems, Microsoft Azure ve Linode'dur. Her birinin satın alınan kaynakları güvende tutmaya yardımcı olmak için bazı temel güvenlik araçları ve varsayılan politikaları vardır, ancak sonuçta kaynakların güvende olduğundan emin olmak için güvenlik sorumluluğunun çoğu kaynağı satın alan gruba aittir.
PaaS
PaaS, hizmet olarak platform anlamına gelir ve bir uygulamayı bir IaaS hizmeti üzerinde çalışan önceden kurulmuş bir ortamda dağıtan daha üst düzey bir hizmeti ifade eder. Heroku bu tür hizmetlere harika bir örnektir.
Heroku birçok farklı uygulamayı destekler, ancak hepsi nispeten aynı şekilde çalışır: Dağıtılması gereken bir Django web uygulamasının git deposu olduğunu düşünün. Heroku, AWS üzerinde çalışan bir Amazon EC2 örneğini alacak, depoyu klonlayacak, gerekli bağımlılıklarla birlikte bir Python sanal ortamı kuracak ve sisteme bir üretim Django web sunucusu kuracaktır.
Kullanıcı bu adımları kendi başına atabilirken, PaaS bir uygulamanın dağıtımını kolaylaştırır.
SaaS
Hizmet olarak yazılım (SaaS) oldukça alışık olduğumuz bir metodoloji. SaaS bir web uygulamasını alır ve bir abonelik için kullanılabilir hale getirir. Bazı örnekler Webex, Dropbox, Google Workspace vb. olabilir. SaaS, yazılımdan para kazanmanın popüler bir yoludur.
SaaS ile ilgili güvenlik endişelerinden biri, bilgileri tek bir sağlayıcıda birleştirmesidir. Yazılımı çalıştıran sunucu tehlikeye girerse, milyonlarca kişinin PII'si sızdırılabilir.
Yorumlar
Yorum Gönder