ASP.NET Core: Những cân nhắc về bảo mật trong gRPC cho ASP.NET Core


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Trong bài viết này

  1. Bảo mật truyền tải (Transport Security)
  2. Ngoại lệ
  3. Giới hạn kích thước tin nhắn
  4. Xác thực chứng chỉ máy khách

Bài viết này cung cấp thông tin về cách bảo mật gRPC bằng .NET Core.

Bảo mật truyền tải (Transport Security)

Tin nhắn gRPC được gửi và nhận bằng HTTP/2. Lời khuyên đưa ra là bạn nên:

TLS được cấu hình trong Kestrel. Để biết thêm thông tin về cách định cấu hình điểm cuối Kestrel, hãy xem Cấu hình điểm cuối Kestrel.

Proxy chấm dứt TLS có thể được kết hợp với TLS. Cần cân nhắc lợi ích của việc sử dụng tính năng chấm dứt TLS trước các rủi ro bảo mật khi gửi yêu cầu HTTP không bảo mật giữa các ứng dụng trong mạng riêng.

Ngoại lệ

Thông báo ngoại lệ thường được coi là dữ liệu nhạy cảm không được tiết lộ cho máy khách. Theo mặc định, gRPC không gửi thông tin chi tiết về một ngoại lệ do dịch vụ gRPC gửi tới máy khách. Thay vào đó, máy khách nhận được một thông báo chung cho biết đã xảy ra lỗi. Việc gửi thông báo ngoại lệ tới máy khách có thể bị ghi đè (ví dụ: trong quá trình phát triển hoặc thử nghiệm) bằng EnableDetailedErrors. Thông báo ngoại lệ không được hiển thị cho máy khách trong ứng dụng production.

Giới hạn kích thước tin nhắn

Tin nhắn đến máy khách và dịch vụ gRPC sẽ được tải vào bộ nhớ. Giới hạn kích thước tin nhắn là một cơ chế giúp ngăn gRPC tiêu thụ quá nhiều tài nguyên.

gRPC sử dụng giới hạn kích thước mỗi tin nhắn để quản lý tin nhắn đến và đi. Theo mặc định, gRPC giới hạn tin nhắn đến ở mức 4 MB. Không có giới hạn về tin nhắn gửi đi.

Trên máy chủ, giới hạn tin nhắn gRPC có thể được định cấu hình cho tất cả các dịch vụ trong ứng dụng với AddGrpc:

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

Các giới hạn cũng có thể được định cấu hình cho một dịch vụ riêng lẻ bằng cách sử dụng AddServiceOptions<TService>. Để biết thêm thông tin về cách định cấu hình giới hạn kích thước tin nhắn, hãy xem cấu hình gRPC.

Xác thực chứng chỉ máy khách

Chứng chỉ máy khách ban đầu được xác thực khi kết nối được thiết lập. Theo mặc định, Kestrel không thực hiện xác thực bổ sung chứng chỉ máy khách của kết nối.

Lời khuyên là các dịch vụ gRPC được bảo mật bằng chứng chỉ máy khách nên sử dụng gói Microsoft.AspNetCore.Authentication.Certificate. Xác thực chứng chỉ ASP.NET Core sẽ thực hiện xác thực bổ sung trên chứng chỉ ứng dụng khách, bao gồm:

  • Chứng chỉ có cách sử dụng khóa mở rộng hợp lệ (EKU)
  • Đang trong thời hạn hiệu lực
  • Kiểm tra việc thu hồi chứng chỉ
Nguồn: learn.microsoft.com
» Tiếp: Các phương pháp hay nhất về hiệu suất với gRPC
« Trước: Ghi nhật ký và chẩn đoán trong gRPC trên .NET
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!