Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
Kapsayıcılar, çeşitli kaynaklara sınırlı erişim sağlamak için konağa güvenebilecekleri gerçeğine göre azaltılmış görüntü boyutlarını ödünç verir. Kapsayıcı, konağın belirli bir eylem kümesini gerçekleştirmek için gereken işlevselliği sağlayabileceğini biliyorsa, kapsayıcının ilgili yazılımı temel görüntüsüne eklemesi gerekmez. Ancak kaynak paylaşımının kapsamı, kapsayıcının hem performansı hem de güvenliği üzerinde önemli bir etkiye sahip olabilir. Çok fazla kaynak paylaşılıyorsa, uygulamanın konakta bir işlem olarak çalışmasının daha uygun olabileceği düşünülebilir. Kaynaklar çok az paylaşılıyorsa kapsayıcı bir VM'den ayırt edilemez hale gelir. Her iki yapılandırma da birçok senaryo için geçerlidir, ancak kapsayıcıları kullanan çoğu kişi genellikle ortadaki bir şeyi tercih eder.
Bir Windows kapsayıcısının güvenliği, ana bilgisayarıyla gerçekleşen paylaşım derecesinden türetilir. Kapsayıcının güvenlik sınırı, kapsayıcıyı konaktan ayıran yalıtım mekanizmaları tarafından oluşturulur. En önemlisi, bu yalıtım mekanizmaları kapsayıcıdaki hangi işlemlerin konakla etkileşim kurabileceğini tanımlar. Kapsayıcının tasarımı, yükseltilmiş (yönetici) bir işlemin konakla etkileşim kurmasına izin veriyorsa, Microsoft bu kapsayıcıyı sağlam bir güvenlik sınırına sahip olarak değerlendirmez.
Windows Server kapsayıcıları ile Linux kapsayıcıları karşılaştırması
İşlemden yalıtılmış Windows Server kapsayıcıları ve Linux kapsayıcıları benzer yalıtım derecelerini paylaşır. Her iki kapsayıcı türü için de geliştirici, konaktaki yükseltilmiş bir işlem aracılığıyla gerçekleştirilebilecek herhangi bir saldırının kapsayıcıdaki yükseltilmiş bir işlem aracılığıyla da gerçekleştirilebileceğini varsaymalıdır. Her ikisi de ilgili konak çekirdekleri tarafından sunulan ilkel özelliklerle çalışır. Kapsayıcı görüntüleri, konak çekirdeği tarafından sağlanan API'leri kullanan kullanıcı alanı ikili dosyalarını içerecek şekilde oluşturulur. Konak çekirdeği, kullanıcı alanında çalışan her kapsayıcıya aynı kaynak yalıtımı ve yönetim özelliklerini sağlar. Çekirdeğin güvenliği ihlal edilirse, bu çekirdeği paylaşan her kapsayıcı da etkilenir.
Linux ve Windows server kapsayıcılarının temel tasarımı, güvenliği esneklikle takas eder. Windows Server ve Linux kapsayıcıları, işletim sistemi tarafından sağlanan temel bileşenlerin üzerine kurulmuştur. Kaynakları ve ad alanlarını kapsayıcılar arasında paylaşmak, esneklik sağlar; ancak bu esneklik, sömürüye açık ek karmaşıklık da getirir. Genel olarak belirtildiği gibi, çekirdeği çok kiracılı saldırgan iş yükleri için yeterli bir güvenlik sınırı olarak görmüyoruz.
Hipervizörle yalıtılmış kapsayıcılarla çekirdek yalıtımı
Hiper yöneticiden yalıtılmış kapsayıcılar, işlemden yalıtılmış Windows Server veya Linux kapsayıcılarından daha yüksek bir yalıtım derecesi sağlar ve sağlam güvenlik sınırı olarak kabul edilir. Hipervizörden yalıtılmış kapsayıcılar, ultra hafif bir VM ile sarılmış bir Windows Server kapsayıcısından oluşur ve ardından Microsoft'un hipervizörü aracılığıyla konak işletim sistemi ile birlikte çalıştırılır. Sanallaştırma yöneticisi, konak ve diğer kapsayıcılar arasında son derece sağlam bir güvenlik sınırı içeren donanım düzeyinde yalıtım sağlar. Bir açıktan yararlanma, Windows Server kapsayıcısından kaçsa bile, hipervizör tarafından yalıtılmış bir sanal makine içinde sınırlandırılmış olacaktır.
Ne Windows Server kapsayıcıları ne de Linux kapsayıcıları, Microsoft'un sağlam bir güvenlik sınırı olarak değerlendirdiği özellikleri sağlamaz ve çok kiracılı düşman senaryolarında kullanılmamalıdır. Bir kapsayıcıyı kötü niyetli bir kapsayıcı işleminin konak veya diğer kiracılarla etkileşimde bulunmasını önlemek amacıyla, ayrılmış bir VM ile sınırlandırmak gerekir. Hiper yönetici yalıtımı bu derece ayrımı sağlarken, geleneksel VM'lere göre çeşitli performans kazanımları da sunar. Bu nedenle, düşmanca çok kiracılı senaryolarda, hiper yönetici tarafından yalıtılmış kapsayıcıların tercih edilmesi şiddetle önerilir.
Kapsayıcı güvenliği hizmet kriterleri
Microsoft, belirlenmiş yalıtım sınırını bozan herhangi bir Windows kapsayıcı türündeki tüm açıkları ve kaçışları yamalayarak düzeltme yapma konusunda kararlıdır. Ancak, yalnızca bir güvenlik sınırını bozan açıklardan yararlananlara Microsoft Güvenlik Yanıt Merkezi (MSRC) işlemi aracılığıyla hizmet sağlanır. Yalnızca hipervizörle yalıtılmış kapsayıcılar bir güvenlik sınırı sağlar, işlemle yalıtılmış kapsayıcılar ise sağlamaz. İşlemden yalıtılmış bir kapsayıcıdan kaçış için hata oluşturmanın tek yolu, yönetici olmayan bir işlemin ana sisteme erişim sağlayabilmesidir. Bir açıktan yararlanma kapsayıcıdan çıkmak için yönetici yetkisine sahip bir işlem kullanırsa, Microsoft bunu güvenlik açığı olmayan bir hata olarak kabul eder ve normal bakım işlemine göre düzeltir. Bir açık, güvenlik sınırını ihlal eden bir eylem gerçekleştirmek için yönetici olmayan bir işlem kullanırsa, Microsoft bunu oluşturulmuş güvenlik hizmeti ölçütlerine göre araştırır.
Çok kiracılı iş yükünü düşman kılan nedir?
Paylaşılan altyapı ve kaynaklarda birden çok iş yükü çalıştığında çok kiracılı ortamlar vardır. Bir altyapıda çalışan bir veya daha fazla iş yüküne güvenilemiyorsa, çok kiracılı ortam düşmanca kabul edilir. Hem Windows Server hem de Linux kapsayıcıları konak çekirdeğini paylaşır, bu nedenle tek bir kapsayıcıda gerçekleştirilen tüm açıklardan yararlanma işlemleri paylaşılan altyapıda çalışan diğer tüm iş yüklerini etkileyebilir.
Örneğin pod güvenlik ilkeleri, AppArmor ve rol tabanlı erişim denetimi (RBAC) kullanarak bir güvenlik açığından yararlanma olasılığını azaltmak için adımlar atabilirsiniz, ancak saldırganlara karşı garantili koruma sağlamaz. Çok kiracılı senaryolar için küme yalıtımı en iyi yöntemlerimizi izlemenizi öneririz.
ContainerAdmin ve ContainerUser kullanıcı hesapları ne zaman kullanılır?
Windows Server kapsayıcıları, her biri kendi amaçlarına sahip iki varsayılan kullanıcı hesabı (ContainerUser ve ContainerAdministrator) sunar. ContainerAdministrator hesabı kapsayıcıyı yönetim amacıyla kullanmanıza olanak tanır: hizmetleri ve yazılımları yükleme (kapsayıcı içinde IIS'yi etkinleştirme gibi), yapılandırma değişiklikleri yapma ve yeni hesaplar oluşturma. Bu görevler, özel, şirket içi dağıtım ortamlarında çalışan bir dizi BT senaryosu için önemlidir.
ContainerUser hesabı, Windows'ta yönetici ayrıcalıklarının gerekli olmadığı diğer tüm senaryolar için mevcuttur. Örneğin, Kubernetes'te kullanıcı ContainerAdministrator ise ve ana makine hacimlerinin pod'a monte edilmesine izin verilmişse, kullanıcı .ssh klasörünü monte edip bir ortak anahtar ekleyebilir. ContainerUser olarak bu örnek mümkün olmaz. Yalnızca konakla etkileşim kurması gerekmeyen uygulamalar için tasarlanmış kısıtlı bir kullanıcı hesabıdır. Bir Windows sunucu kapsayıcısını, uygulamanızın ContainerUser hesabı aracılığıyla çalıştırılacak şekilde çok kiracılı herhangi bir ortama dağıtırken bunu yapmanız şiddetle önerilir. Çok kiracılı bir ortamda, en az ayrıcalık ilkesini izlemek her zaman en iyisidir çünkü bir saldırgan iş yükünüzü tehlikeye atırsa paylaşılan kaynak ve komşu iş yüklerinin de etkilenme olasılığı daha düşüktür. Kapsayıcıların ContainerUser hesabıyla çalıştırılması, ortamın bir bütün olarak tehlikeye atılması olasılığını büyük ölçüde azaltır. Ancak, bu yine de sağlam bir güvenlik sınırı sağlamaz, bu nedenle güvenlik sorun olduğunda hiper yöneticiden yalıtılmış kapsayıcılar kullanmanız gerekir.
Kullanıcı hesabını değiştirmek için dockerfile dosyanızda USER deyimini kullanabilirsiniz:
USER ContainerUser
Alternatif olarak, yeni bir kullanıcı oluşturabilirsiniz:
RUN net user username ‘<password>’ /ADD
USER username
Windows hizmetleri
Eski adı NT hizmetleri olan Microsoft Windows hizmetleri, kendi Windows oturumlarında çalışan uzun süre çalışan yürütülebilir uygulamalar oluşturmanıza olanak tanır. bu hizmetler işletim sistemi başlatıldığında otomatik olarak başlatılabilir, duraklatılabilir ve yeniden başlatılabilir ve herhangi bir kullanıcı arabirimi göstermez. Hizmetleri, oturum açmış kullanıcıdan veya varsayılan bilgisayar hesabından farklı olan belirli bir kullanıcı hesabının güvenlik bağlamında da çalıştırabilirsiniz.
Windows hizmeti olarak çalışan bir iş yükünü kapsayıcılı hale getirme ve güvenliğini sağlama sırasında dikkat edilmesi gereken bazı ek noktalar vardır. İlk olarak, hizmetin arka plan işlemi olarak çalışması nedeniyle, kapsayıcının ENTRYPOINT iş yükü olmayacağı belirtilmelidir. Genellikle, ENTRYPOINT, hizmet izleyici) veya günlük izleyici) gibi bir araç olacaktır. İkincisi, iş yükünün altında çalıştığı güvenlik hesabı, dockerfile içindeki USER yönergesi tarafından değil, hizmet tarafından yapılandırılır.
Get-WmiObject win32_service -filter "name='<servicename>'" | Format-List StartNameçalıştırarak hizmetin hangi hesapta çalıştırılacağını de kontrol edebilirsiniz.
Örneğin, ASP.NET (Microsoft Artifact Registry) görüntüsünü kullanarak bir IIS web uygulaması barındırırken kapsayıcının ENTRYPOINT'si "C:\\ServiceMonitor.exe", "w3svc"'tir. Bu araç, IIS hizmetini yapılandırmak ve hizmetin kesintisiz çalıştığını izlemek için kullanılabilir. Hizmet herhangi bir nedenle durursa, bu durum kapsayıcının kapanmasıyla sonuçlanır. Varsayılan olarak, IIS hizmeti ve dolayısıyla web uygulaması kapsayıcı içinde düşük ayrıcalıklı bir hesap altında çalışır, ancak hizmet izleme aracı, hizmeti yapılandırmak ve izlemek için yönetim ayrıcalıkları gerektirir.