Service Fabric uygulama ve hizmet güvenliği
Mikro hizmetler mimarisi birçok avantaj sağlayabilir. Ancak mikro hizmetlerin güvenliğini yönetmek, geleneksel monolitik uygulama güvenliğini yönetmekten farklı bir zorluk ve farklıdır.
Monolit ile uygulama genellikle bir ağ içindeki bir veya daha fazla sunucuda çalışır ve kullanıma sunulan bağlantı noktalarını, API'leri ve IP adresini tanımlamak daha kolaydır. Genellikle korunacak bir çevre veya sınır ve bir veritabanı vardır. Bu sistem bir güvenlik ihlali veya saldırı nedeniyle tehlikeye girerse, sistem içindeki her şey saldırgan tarafından kullanılabilir olacaktır. Mikro hizmetlerde sistem daha karmaşıktır. Hizmetler merkezi değildir ve birçok konak arasında dağıtılır ve konaktan konağa geçirilir. Uygun güvenlikle, bir saldırganın edinebileceği ayrıcalıkları ve tek bir saldırıda kullanılabilen veri miktarını tek bir hizmeti ihlal ederek sınırlarsınız. İletişim dahili değildir, ancak ağ üzerinden gerçekleşir ve hizmetler arasında birçok açık bağlantı noktası ve etkileşim vardır. Bu hizmet etkileşimlerinin ne olduğunu ve ne zaman gerçekleştiğini bilmek, uygulama güvenliğiniz için çok önemlidir.
Bu makale mikro hizmet güvenliğine yönelik bir kılavuz değildir, çevrimiçi ortamda bu tür birçok kaynak mevcuttur, ancak Service Fabric'te güvenliğin farklı yönlerinin nasıl gerçekleştirilebileceğini açıklar.
Kimlik doğrulaması ve yetkilendirme
Genellikle bir hizmet tarafından kullanıma sunulan kaynakların ve API'lerin belirli güvenilen kullanıcılar veya istemciler ile sınırlı olması gerekir. Kimlik doğrulaması, bir kullanıcının kimliğini güvenilir bir şekilde doğrulama işlemidir. Yetkilendirme, API'leri veya hizmetleri bazı kimliği doğrulanmış kullanıcıların kullanımına sunan ancak diğerleri tarafından kullanılamayan işlemdir.
Kimlik Doğrulaması
API düzeyinde güven kararları vermenin ilk adımı kimlik doğrulamasıdır. Kimlik doğrulaması, bir kullanıcının kimliğini güvenilir bir şekilde doğrulama işlemidir. Mikro hizmet senaryolarında kimlik doğrulaması genellikle merkezi olarak işlenir. API Gateway kullanıyorsanız, kimlik doğrulamasını ağ geçidine boşaltabilirsiniz. Bu yaklaşımı kullanırsanız, ağ geçidinden gelen veya gelmeyen iletilerin kimliğini doğrulamak için ek güvenlik sağlanmadığı sürece tek tek hizmetlere doğrudan (API Gateway olmadan) ulaşılamadığından emin olun.
Hizmetlere doğrudan erişilebiliyorsa, kullanıcıların kimliğini doğrulamak için Microsoft Entra ID gibi bir kimlik doğrulama hizmeti veya güvenlik belirteci hizmeti (STS) olarak davranan ayrılmış bir kimlik doğrulama mikro hizmeti kullanılabilir. Güven kararları, güvenlik belirteçleri veya tanımlama bilgileriyle hizmetler arasında paylaşılır.
ASP.NET Core için kullanıcıların kimliğini doğrulamaya yönelik birincil mekanizma ASP.NET Core Identity üyelik sistemidir. ASP.NET Core Identity, kullanıcı bilgilerini (oturum açma bilgileri, roller ve talepler dahil) geliştirici tarafından yapılandırılan bir veri deposunda depolar. ASP.NET Çekirdek Kimlik, iki öğeli kimlik doğrulamasını destekler. Dış kimlik doğrulama sağlayıcıları da desteklenir, böylece kullanıcılar Microsoft, Google, Facebook veya X gibi sağlayıcılardan gelen mevcut kimlik doğrulama işlemlerini kullanarak oturum açabilir.
Yetkilendirme
Kimlik doğrulamasının ardından hizmetlerin kullanıcı erişimini yetkilendirmesi veya kullanıcının neler yapabileceğini belirlemesi gerekir. Bu işlem, bir hizmetin API'leri bazı kimliği doğrulanmış kullanıcılar için kullanılabilir hale getirmesine olanak tanır, ancak tümü için kullanılamaz. Yetkilendirme, bir kullanıcının kim olduğunu belirleme işlemi olan kimlik doğrulamasından bağımsızdır. Kimlik doğrulaması, geçerli kullanıcı için bir veya daha fazla kimlik oluşturabilir.
ASP.NET Temel yetkilendirme , kullanıcıların rollerine göre veya talepleri veya diğer buluşsal yöntemleri incelemeyi içerebilen özel ilkeye göre yapılabilir.
API ağ geçidi kullanarak erişimi kısıtlama ve güvenli bir şekilde sağlama
Bulut uygulamalarının normalde kullanıcılar, cihazlar ve diğer uygulamalara tek giriş noktası sağlamak için bir ön uç ağ geçidine ihtiyacı vardır. API ağ geçidi , istemciler ve hizmetler arasında yer alır ve uygulamanızın sağladığı tüm hizmetlerin giriş noktasıdır. İstemcilerden gelen istekleri hizmetlere yönlendiren ters proxy işlevi görür. Ayrıca kimlik doğrulaması ve yetkilendirme, TLS sonlandırma ve hız sınırlama gibi çeşitli çapraz kesme görevleri de gerçekleştirebilir. Ağ geçidi dağıtmazsanız istemcilerin doğrudan ön uç hizmetlerine istek göndermesi gerekir.
Service Fabric'te ağ geçidi, ASP.NET Core uygulaması gibi durum bilgisi olmayan herhangi bir hizmet veya Trafik girişi için tasarlanmış Traefik, Event Hubs, IoT Hub veya Azure API Management gibi başka bir hizmet olabilir.
API Management, Service Fabric ile doğrudan tümleştirerek arka uç Service Fabric hizmetlerinizde zengin bir yönlendirme kuralları kümesine sahip API'ler yayımlamanıza olanak tanır. Arka uç hizmetlerine erişimin güvenliğini sağlayabilir, azaltma kullanarak DOS saldırılarını önleyebilir veya API anahtarlarını, JWT belirteçlerini, sertifikalarını ve diğer kimlik bilgilerini doğrulayabilirsiniz. Daha fazla bilgi edinmek için Bkz . Azure API Management ile Service Fabric'e genel bakış.
Uygulama parolalarını yönetme
Gizli diziler depolama bağlantı dizesi, parolalar veya düz metin olarak işlenmemesi gereken diğer değerler gibi hassas bilgiler olabilir. Bu makalede anahtarları ve gizli dizileri yönetmek için Azure Key Vault kullanılır. Ancak, bir uygulamada gizli dizilerin kullanılması, uygulamaların her yerde barındırılan bir kümeye dağıtılması için bulut platformunda bağımsızdır.
Hizmet yapılandırma ayarlarını yönetmenin önerilen yolu, hizmet yapılandırma paketleridir. Yapılandırma paketleri, sistem durumu doğrulama ve otomatik geri alma ile yönetilen sıralı yükseltmeler aracılığıyla sürümlenir ve güncelleştirilebilir. Bu, genel hizmet kesintisi olasılığını azalttığı için genel yapılandırmaya tercih edilir. Şifrelenmiş gizli diziler özel durum değildir. Service Fabric, sertifika şifreleme kullanarak bir yapılandırma paketi Settings.xml dosyasındaki değerleri şifrelemeye ve şifresini çözmeye yönelik yerleşik özelliklere sahiptir.
Aşağıdaki diyagramda bir Service Fabric uygulamasında gizli dizi yönetimi için temel akış gösterilmektedir:
Bu akışta dört ana adım vardır:
- Veri şifreleme sertifikası alın.
- Sertifikayı kümenize yükleyin.
- Bir uygulamayı sertifikayla dağıtırken gizli dizi değerlerini şifreleyin ve bir hizmetin Settings.xml yapılandırma dosyasına ekleyin.
- Aynı şifreleme sertifikasıyla şifresini çözerek şifrelenmiş değerleri Settings.xml dışında okuyun.
Azure Key Vault burada sertifikalar için güvenli bir depolama konumu olarak ve Azure'daki Service Fabric kümelerine yüklenen sertifikaları alma yolu olarak kullanılır. Azure'a dağıtmıyorsanız, Service Fabric uygulamalarında gizli dizileri yönetmek için Key Vault kullanmanız gerekmez.
Örnek için bkz . Uygulama gizli dizilerini yönetme.
Barındırma ortamının güvenliğini sağlama
Azure Service Fabric'i kullanarak, farklı kullanıcı hesapları altında kümede çalışan uygulamaların güvenliğini sağlayabilirsiniz. Service Fabric ayrıca, dağıtım sırasında uygulamalar tarafından kullanılan kaynakların (örneğin, dosyalar, dizinler ve sertifikalar) kullanıcı hesapları altında güvenli bir şekilde kullanılmasına da yardımcı olur. Bu, paylaşılan barındırılan bir ortamda bile uygulamaların çalıştırılmasını birbirlerinden daha güvenli hale getirir.
Uygulama bildirimi, gerekli hizmet ve güvenli kaynakları çalıştırmak için gereken güvenlik sorumlularını (kullanıcılar ve gruplar) bildirir. Bu güvenlik sorumlularına farklı çalıştır, uç nokta bağlaması, paket paylaşımı veya güvenlik erişim ilkeleri gibi ilkelerde başvurulur. İlkeler daha sonra uygulama bildiriminin ServiceManifestImport bölümünde hizmet kaynaklarına uygulanır.
Sorumluları bildirirken, birlikte yönetilecek her gruba bir veya daha fazla kullanıcının eklenebilmesi için kullanıcı grupları tanımlayabilir ve oluşturabilirsiniz. Bu, farklı hizmet giriş noktaları için birden çok kullanıcı olduğunda ve grup düzeyinde kullanılabilen belirli ortak ayrıcalıklara sahip olmaları gerektiğinde kullanışlıdır.
Varsayılan olarak, Service Fabric uygulamaları Fabric.exe işleminin altında çalıştığı hesap altında çalışır. Service Fabric ayrıca, uygulama bildiriminde belirtilen yerel bir kullanıcı hesabı veya yerel sistem hesabı altında uygulamaları çalıştırma özelliği sağlar. Daha fazla bilgi için bkz . Bir hizmeti yerel kullanıcı hesabı veya yerel sistem hesabı olarak çalıştırma. Bir hizmet başlangıç betiğini yerel kullanıcı veya sistem hesabı olarak da çalıştırabilirsiniz.
Service Fabric'i bir Windows tek başına kümesinde çalıştırırken, Active Directory etki alanı hesapları veya grup tarafından yönetilen hizmet hesapları altında bir hizmet çalıştırabilirsiniz.
Güvenli kapsayıcılar
Service Fabric, kapsayıcı içindeki hizmetlerin Windows veya Linux kümesindeki düğümlere (sürüm 5.7 veya üzeri) yüklenmiş bir sertifikaya erişmesi için bir mekanizma sağlar. Bu PFX sertifikası, uygulamanın veya hizmetin kimliğini doğrulamak veya diğer hizmetlerle güvenli iletişim için kullanılabilir. Daha fazla bilgi için bkz . Kapsayıcıya sertifika içeri aktarma.
Ayrıca Service Fabric, Windows kapsayıcıları için gMSA'yı (grup Yönetilen Hizmet Hesapları) da destekler. Daha fazla bilgi için bkz . Windows kapsayıcıları için gMSA'yı ayarlama.
Güvenli hizmet iletişimi
Service Fabric'te bir hizmet, service Fabric kümesinde bir yerde çalışır ve genellikle birden çok VM'ye dağıtılır. Service Fabric, hizmet iletişimlerinizin güvenliğini sağlamak için çeşitli seçenekler sağlar.
ASP.NET Core veya Java web hizmetlerinizde HTTPS uç noktalarını etkinleştirebilirsiniz.
Ters proxy ile hizmetler arasında güvenli bağlantı kurarak uçtan uca güvenli kanalı etkinleştirebilirsiniz. Güvenli hizmetlere bağlanma yalnızca ters ara sunucu HTTPS'de dinleyecek şekilde yapılandırıldığında desteklenir. Ters ara sunucuyu yapılandırma hakkında bilgi için Bkz . Azure Service Fabric'te ters ara sunucu. Güvenli bir hizmete bağlanma, ters ara sunucu ile hizmetler arasında güvenli bağlantının nasıl kurulduğunu açıklar.
Reliable Services uygulama çerçevesi, güvenliği geliştirmek için kullanabileceğiniz önceden oluşturulmuş birkaç iletişim yığını ve aracı sağlar. Hizmet uzaktan iletişimini (C# veya Java'da) veya WCF'yi kullanırken güvenliği geliştirmeyi öğrenin.
Service Fabric uygulamalarına uç nokta sertifikası ekleme
Uygulama uç noktası sertifikanızı yapılandırmak için, uygulama bildirimine asıl hesabın User öğesiyle birlikte bir EndpointCertificate öğesi ekleyerek sertifikayı ekleyin. Varsayılan olarak asıl hesap NetworkService'tir. Bu, sağlanan sorumlu için uygulama sertifikası özel anahtar ACL'sinin yönetimini sağlar.
<ApplicationManifest … >
...
<Principals>
<Users>
<User Name="Service1" AccountType="NetworkService" />
</Users>
</Principals>
<Certificates>
<EndpointCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
</Certificates>
</ApplicationManifest>
Bekleyen uygulama verilerini şifreleme
Azure’da çalışan bir Service Fabric kümesindeki her düğüm türü, bir sanal makine ölçek kümesi tarafından desteklenir. Azure Resource Manager şablonunu kullanarak, Service Fabric kümesini oluşturan ölçek kümelerine veri diskleri ekleyebilirsiniz. Hizmetleriniz ekli bir veri diskine veri kaydederse, uygulama verilerinizi korumak için bu veri disklerini şifreleyebilirsiniz.