Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Note
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.
Warning
Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 10 deste artigo.
Este artigo fornece informações sobre como proteger o gRPC com o .NET.
Segurança dos transportes
As mensagens gRPC são enviadas e recebidas usando HTTP/2. É recomendável:
- Transport Layer Security (TLS) deve ser usado para proteger mensagens em aplicativos gRPC no ambiente de produção.
- Os serviços gRPC só devem ouvir e responder através de portas seguras.
O TLS está configurado em Kestrel. Para obter mais informações sobre como configurar Kestrel pontos de extremidade, consulte Kestrel Configuração de pontos de extremidade.
O TLS está configurado em Kestrel. Para obter mais informações sobre como configurar Kestrel pontos de extremidade, consulte Kestrel Configuração de pontos de extremidade.
Um proxy de terminação TLS pode ser combinado com TLS. Os benefícios do uso da terminação TLS devem ser considerados em relação aos riscos de segurança do envio de solicitações HTTP não seguras entre aplicativos na rede privada.
Exceptions
As mensagens de exceção geralmente são consideradas dados confidenciais que não devem ser revelados a um cliente. Por padrão, o gRPC não envia os detalhes de uma exceção lançada por um serviço gRPC para o cliente. Em vez disso, o cliente recebe uma mensagem genérica indicando que ocorreu um erro. A entrega de mensagens de exceção ao cliente pode ser substituída (por exemplo, em desenvolvimento ou teste) por EnableDetailedErrors. As mensagens de exceção não devem ser expostas ao cliente em aplicativos de produção.
Limites de tamanho de mensagem
As mensagens de entrada para clientes e serviços gRPC são carregadas na memória. Os limites de tamanho de mensagem são um mecanismo para ajudar a evitar que o gRPC consuma recursos excessivos.
O gRPC usa limites de tamanho por mensagem para gerenciar mensagens de entrada e saída. Por padrão, o gRPC limita as mensagens recebidas a 4 MB. Não há limite para as mensagens enviadas.
No servidor, os limites de mensagens gRPC podem ser configurados para todos os serviços em um aplicativo com AddGrpc:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.MaxReceiveMessageSize = 1 * 1024 * 1024; // 1 MB
options.MaxSendMessageSize = 1 * 1024 * 1024; // 1 MB
});
}
Os limites também podem ser configurados para um serviço individual usando AddServiceOptions<TService>. Para obter mais informações sobre como configurar limites de tamanho de mensagem, consulte Configuração de gRPC.
Validação do certificado do cliente
Os certificados de cliente são inicialmente validados quando a conexão é estabelecida. Por padrão, Kestrel não executa validação adicional do certificado de cliente de uma conexão.
Recomendamos que os serviços gRPC protegidos por certificados de cliente usem o pacote Microsoft.AspNetCore.Authentication.Certificate . ASP.NET Core realizará autenticação por certificado com validação adicional sobre um certificado de cliente, incluindo:
- O certificado tem um uso estendido da chave (EKU) válido
- Está dentro do seu período de validade
- Verificar revogação do certificado