ASP.NET Core için gRPC'de güvenlik konuları
Yayınlayan James Newton-King
Bu makalede gRPC'yi .NET Core ile güvenli hale getirme hakkında bilgi sağlanır.
Taşıma güvenliği
gRPC iletileri HTTP/2 kullanılarak gönderilir ve alınır. Şunları öneririz:
- Aktarım Katmanı Güvenliği (TLS), üretim gRPC uygulamalarında iletilerin güvenliğini sağlamak için kullanılır.
- gRPC hizmetleri yalnızca güvenli bağlantı noktaları üzerinden dinlemeli ve yanıt vermelidir.
TLS içinde Kestrelyapılandırılır. Uç noktaları yapılandırma Kestrel hakkında daha fazla bilgi için bkz Kestrel . uç nokta yapılandırması.
TLS içinde Kestrelyapılandırılır. Uç noktaları yapılandırma Kestrel hakkında daha fazla bilgi için bkz Kestrel . uç nokta yapılandırması.
TLS sonlandırma proxy'si TLS ile birleştirilebilir. TLS sonlandırma kullanmanın avantajları, özel ağdaki uygulamalar arasında güvenli olmayan HTTP istekleri göndermenin güvenlik risklerine karşı değerlendirilmelidir.
Özel durumlar
Özel durum iletileri genellikle istemciye açılmaması gereken hassas veriler olarak kabul edilir. Varsayılan olarak gRPC, bir gRPC hizmeti tarafından oluşan özel durumun ayrıntılarını istemciye göndermez. Bunun yerine, istemci bir hata oluştuğunu belirten genel bir ileti alır. İstemciye özel durum iletisi teslimi EnableDetailedErrors ile geçersiz kılınabilir (örneğin, geliştirme veya testte). Özel durum iletilerinin üretim uygulamalarında istemciye sunulmaması gerekir.
İleti boyutu sınırları
gRPC istemcilerine ve hizmetlerine gelen iletiler belleğe yüklenir. İleti boyutu sınırları, gRPC'nin aşırı kaynak kullanmasını önlemeye yardımcı olan bir mekanizmadır.
gRPC, gelen ve giden iletileri yönetmek için ileti başına boyut sınırları kullanır. Varsayılan olarak, gRPC gelen iletileri 4 MB ile sınırlar. Giden iletilerde sınır yoktur.
Sunucuda, gRPC ileti sınırları ile AddGrpc
bir uygulamadaki tüm hizmetler için yapılandırılabilir:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.MaxReceiveMessageSize = 1 * 1024 * 1024; // 1 MB
options.MaxSendMessageSize = 1 * 1024 * 1024; // 1 MB
});
}
Sınırlar, kullanılarak AddServiceOptions<TService>
tek bir hizmet için de yapılandırılabilir. İleti boyutu sınırlarını yapılandırma hakkında daha fazla bilgi için bkz . gRPC yapılandırması.
İstemci sertifikası doğrulaması
İstemci sertifikaları başlangıçta bağlantı kurulduğunda doğrulanır. Varsayılan olarak, Kestrel bağlantının istemci sertifikası için ek doğrulama gerçekleştirmez.
İstemci sertifikaları tarafından güvenliği sağlanan gRPC hizmetlerinin Microsoft.AspNetCore.Authentication.Certificate paketini kullanmasını öneririz. ASP.NET Core sertifikası kimlik doğrulaması, istemci sertifikasında ek doğrulama gerçekleştirir, örneğin:
- Sertifikanın geçerli bir genişletilmiş anahtar kullanımı var (EKU)
- Geçerlilik süresi içindedir
- Sertifika iptalini denetleme
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin