Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.
Warning
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущей версии см. версию .NET 10 этой статьи.
Автор: Джеймс Ньютон-Кинг (James Newton-King)
В этой статье содержатся сведения о защите gRPC с помощью .NET.
Безопасность транспорта
Сообщения gRPC отправляются и принимаются по протоколу HTTP/2. Мы рекомендуем:
- Для защиты сообщений в рабочих приложениях gRPC следует использовать протокол TLS.
- Службы gRPC должны ожидать передачи данных и отвечать только через защищенные порты.
TLS настраивается в Kestrel. Дополнительные сведения о настройке конечных точек Kestrel см. в статье Конфигурация конечной точки Kestrel.
TLS настраивается в Kestrel. Дополнительные сведения о настройке конечных точек Kestrel см. в статье Конфигурация конечной точки Kestrel.
Прокси-сервер завершения сеанса TLS можно сочетать с TLS. Преимущества использования завершения сеанса TLS следует рассматривать в сравнении с рисками безопасности при отправке незащищенных HTTP-запросов между приложениями в частной сети.
Exceptions
Сообщения об исключениях, как правило, считаются конфиденциальными данными, которые не следует раскрывать клиенту. По умолчанию gRPC не отправляет сведения об исключении, возникшем в службе gRPC, клиенту. Вместо этого клиент получает общее сообщение с указанием произошедшей ошибки. Доставку сообщений об исключениях клиенту можно переопределить (например, при разработке или тестировании) с помощью EnableDetailedErrors. В рабочих приложениях сообщения об исключениях не должны предоставляться клиенту.
Ограничения на размер сообщений
Входящие сообщения для клиентов и служб gRPC загружаются в память. Ограничения на размер сообщений позволяют предотвратить чрезмерное потребление ресурсов системой gRPC.
В gRPC используются ограничения на размер отдельных входящих и исходящих сообщений. По умолчанию максимальный размер входящего сообщения в gRPC составляет 4 МБ. На размер исходящих сообщений ограничений нет.
На сервере можно настроить ограничения на размер сообщений для всех служб приложения gRPC с помощью AddGrpc:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.MaxReceiveMessageSize = 1 * 1024 * 1024; // 1 MB
options.MaxSendMessageSize = 1 * 1024 * 1024; // 1 MB
});
}
С помощью AddServiceOptions<TService> можно также настроить ограничения для отдельной службы. Дополнительные сведения о настройке ограничений на размер сообщений см. в статье Настройка gRPC.
Проверка сертификата клиента
Сертификаты клиента изначально проверяются при установке соединения. По умолчанию Kestrel не выполняет дополнительную проверку сертификата клиента для подключения.
Рекомендуется, чтобы службы gRPC, защищенные с помощью сертификатов клиента, использовали пакет Microsoft.AspNetCore.Authentication.Certificate. При проверке подлинности на основе сертификата в ASP.NET Core выполняются дополнительные проверки сертификата клиента, включая следующие:
- сертификат имеет допустимое значение расширенного использования ключа (EKU);
- период действия сертификата не истек;
- проверка отзыва сертификата.
ASP.NET Core