Aspekty zabezpečení v gRPC pro ASP.NET Core

Autor: James Newton-King

Tento článek obsahuje informace o zabezpečení gRPC s .NET Core.

Zabezpečení přenosu

Zprávy gRPC se odesílají a přijímají pomocí protokolu HTTP/2. Naše doporučení:

Protokol TLS je nakonfigurovaný v Kestrelprotokolu . Další informace o konfiguraci Kestrel koncových bodů najdete v tématu Kestrel Konfigurace koncového bodu.

Protokol TLS je nakonfigurovaný v Kestrelprotokolu . Další informace o konfiguraci Kestrel koncových bodů najdete v tématu Kestrel Konfigurace koncového bodu.

Proxy ukončení protokolu TLS je možné kombinovat s protokolem TLS. Výhody používání ukončení protokolu TLS by se měly považovat za rizika zabezpečení při odesílání nezabezpečených požadavků HTTP mezi aplikacemi v privátní síti.

Výjimky

Zprávy o výjimce se obecně považují za citlivá data, která by neměla být klientovi odhalena. Ve výchozím nastavení gRPC neodesílá klientovi podrobnosti o výjimce vyvolané službou gRPC. Místo toho se klientovi zobrazí obecná zpráva oznamující, že došlo k chybě. Doručování zpráv o výjimkách klientovi je možné přepsat (například ve vývoji nebo testu) pomocí enableDetailedErrors. Zprávy o výjimce by neměly být klientovi vystaveny v produkčních aplikacích.

Omezení velikosti zpráv

Příchozí zprávy klientům a službám gRPC se načtou do paměti. Omezení velikosti zpráv jsou mechanismus, který pomáhá zabránit tomu, aby gRPC spotřebovávají nadměrné prostředky.

GRPC používá omezení velikosti jednotlivých zpráv ke správě příchozích a odchozích zpráv. Ve výchozím nastavení gRPC omezuje příchozí zprávy na 4 MB. Odchozí zprávy nejsou nijak omezeny.

Na serveru je možné nakonfigurovat limity zpráv gRPC pro všechny služby v aplikaci s AddGrpc:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGrpc(options =>
    {
        options.MaxReceiveMessageSize = 1 * 1024 * 1024; // 1 MB
        options.MaxSendMessageSize = 1 * 1024 * 1024; // 1 MB
    });
}

Omezení lze také nakonfigurovat pro jednotlivé služby pomocí AddServiceOptions<TService>. Další informace o konfiguraci omezení velikosti zpráv najdete v tématu konfigurace gRPC.

Ověření klientského certifikátu

Klientské certifikáty se na začátku ověřují při navázání připojení. Ve výchozím nastavení Kestrel neprovádí další ověření klientského certifikátu připojení.

Služby gRPC zabezpečené klientskými certifikáty doporučujeme použít balíček Microsoft.AspNetCore.Authentication.Certificate . ASP.NET ověření certifikace Core provede další ověření klientského certifikátu, včetně:

  • Certifikát má platné rozšířené použití klíče (EKU)
  • Je v době platnosti.
  • Kontrola odvolání certifikátu