Mục tiêu phòng thủ
Công cụ MCP kết nối các yêu cầu do mô hình định hướng với những hệ thống có thể đọc dữ liệu, sửa đổi bản ghi, thực thi tiến trình hoặc gọi các dịch vụ bên ngoài. Trong môi trường production, hãy xem mọi lần gọi công cụ là một yêu cầu đi qua ranh giới tin cậy. Mô hình không phải là hệ thống ủy quyền và phần mô tả công cụ không phải là biện pháp kiểm soát bảo mật. Hãy thực thi chính sách trên server hoặc thành phần sở hữu tài nguyên được bảo vệ, nơi các quyết định có thể được kiểm tra một cách nhất quán.
Bài học này áp dụng các biện pháp kiểm soát theo nhiều lớp cho một công cụ trích xuất văn bản từ tài liệu. Yêu cầu có thể bị định dạng sai, quá rộng hoặc chịu ảnh hưởng của nội dung không đáng tin cậy. Tích hợp cũng có thể bị xâm phạm hoặc trả về dữ liệu được thiết kế để đánh lừa các thành phần xử lý tiếp theo. Không có một bước xác thực đơn lẻ nào có thể giải quyết tất cả những rủi ro này: kiểm tra đầu vào, ủy quyền, cô lập thực thi, xử lý đầu ra và các giới hạn vận hành giải quyết những chế độ lỗi khác nhau.
Xác thực đầu vào và đầu ra
Xác thực các đối số của công cụ theo một schema nghiêm ngặt trước khi thực thi. Bắt buộc các trường và kiểu dữ liệu được mong đợi, từ chối các trường không được khai báo khi khả thi, đồng thời áp đặt các giới hạn như độ dài đường dẫn hoặc kích thước tài liệu tối đa. Việc xác thực schema xác lập cấu trúc, chứ không xác lập quyền. Một chuỗi có thể đúng kiểu dữ liệu nhưng vẫn chỉ đến một tệp nhạy cảm hoặc khai thác một parser ở downstream, vì vậy hãy áp dụng các kiểm tra ngữ nghĩa dựa trên chính sách thực tế của thao tác.
Đối với công cụ đọc tệp, hãy chấp nhận mã định danh tài liệu hoặc phân giải đường dẫn bên dưới một thư mục gốc được cấu hình. Chuẩn hóa đường dẫn, sau đó xác minh rằng đích đã phân giải vẫn nằm bên trong thư mục gốc đó; chỉ kiểm tra xem chuỗi ban đầu có bắt đầu bằng tên thư mục hay không là chưa đủ. Hãy cân nhắc symbolic link, dấu phân cách đường dẫn đặc thù theo nền tảng và các race condition kiểu time-of-check/time-of-use. Ưu tiên mở tệp thông qua directory handle bị giới hạn hoặc sử dụng mã định danh ở cấp ứng dụng được ánh xạ đến một đối tượng đã được phê duyệt.
Xác thực kết quả trước khi trả về cho client MCP. Áp đặt giới hạn kích thước đầu ra và cấu trúc được mong đợi, xử lý rõ ràng các lỗi giải mã, đồng thời tránh trả về secret, đường dẫn nội bộ hoặc thông tin chi tiết thô từ exception. Hãy xem văn bản được trích xuất là dữ liệu không đáng tin cậy: văn bản có thể chứa chỉ dẫn hoặc những khẳng định gây hiểu lầm. Việc xác thực có thể xác lập rằng một phản hồi chấp nhận được về mặt cấu trúc; nhưng không thể xác lập rằng nội dung của phản hồi là đúng sự thật hoặc an toàn để làm theo.
Danh sách cho phép công cụ và ủy quyền
Chỉ cung cấp các công cụ cần thiết cho deployment. Danh sách cho phép rõ ràng cần xác định tên các công cụ được phép và, khi phù hợp, các giá trị đối số hoặc phạm vi tài nguyên được phép. Không được chỉ dựa vào việc ẩn công cụ khỏi danh sách hiển thị cho mô hình như một hạn chế duy nhất: request có thể bị định dạng sai, các client có thể khác nhau và việc ủy quyền phải được kiểm tra tại thời điểm gọi.
Tách biệt khả năng sử dụng công cụ khỏi quyền ủy quyền của người dùng. Người dùng có thể gọi một công cụ trích xuất tài liệu không đồng nghĩa với việc họ được tự động đọc mọi tài liệu mà tiến trình máy chủ có thể nhìn thấy. Trước khi thực thi, hãy kiểm tra danh tính chủ thể đã xác thực, tài nguyên được yêu cầu và hành động thực hiện theo chính sách. Khi được hỗ trợ, hãy truyền cho lớp tích hợp một thông tin xác thực có phạm vi hẹp và thời hạn ngắn hoặc một capability có phạm vi giới hạn; tránh cấp thông tin xác thực dịch vụ tổng quát cho mọi công cụ.
Đảm bảo allowlist và chính sách ủy quyền có thể được rà soát và quản lý phiên bản. Khi thêm một tích hợp bên thứ ba, hãy ghi lại chủ sở hữu, mục đích, các quyền cần thiết, luồng dữ liệu và cách xử lý lỗi. Xóa các công cụ và thông tin xác thực không còn sử dụng. Ghi nhật ký các quyết định chính sách với đủ ngữ cảnh để điều tra, đồng thời loại trừ nội dung tài liệu, access token và các giá trị nhạy cảm khác.

Cô lập quá trình thực thi và giới hạn tài nguyên
Chạy các tích hợp với mức đặc quyền tối thiểu cần thiết cho nhiệm vụ của chúng. Bộ trích xuất tài liệu không nên kế thừa quyền truy cập rộng vào hệ thống tệp của máy chủ, quyền truy cập mạng không hạn chế hoặc đặc quyền quản trị viên. Sử dụng ranh giới cô lập ở cấp hệ điều hành hoặc container phù hợp với mô hình mối đe dọa, chỉ mount dữ liệu cần thiết, chuyển các hệ thống tệp không cần thiết sang chế độ chỉ đọc và hạn chế các kết nối đi ra. Chỉ dùng container không tạo thành một sandbox hoàn chỉnh; cấu hình của container, kernel máy chủ, các secret được mount và quyền của runtime quyết định phần lớn mức độ bảo vệ.
Thiết lập giới hạn tài nguyên cho thời gian, bộ nhớ, CPU, số lượng tiến trình, kích thước tệp và dung lượng lưu trữ tạm thời ở những nơi nền tảng hỗ trợ. Chấm dứt các tác vụ vượt quá thời hạn và đảm bảo các tệp tạm thời được dọn dẹp. Đối với một dịch vụ bên thứ ba từ xa, việc cô lập cũng bao gồm giới hạn dữ liệu được gửi, xác thực đích đến, kiểm tra bảo mật của kênh truyền và xác định cách xử lý lỗi hoặc timeout. Tránh gửi toàn bộ tài liệu khi một đoạn trích nhỏ hơn hoặc một mã định danh đã được phê duyệt là đủ.
Thiết kế cách xử lý lỗi một cách có chủ đích. Timeout hoặc phản hồi không hợp lệ phải khiến các hành động nhạy cảm fail closed: không âm thầm thay thế bằng kết quả chưa được xác minh hoặc tiếp tục bằng thông tin xác thực dự phòng có phạm vi rộng hơn. Trả về cho bên gọi một lỗi được kiểm soát, lưu giữ chi tiết chẩn đoán trong các log được bảo vệ và tránh để lộ stack trace hoặc secret trong phản hồi của công cụ.
Giới hạn tốc độ và biện pháp bảo vệ vận hành
Áp dụng giới hạn theo từng chủ thể và công cụ, không chỉ đặt một ngưỡng toàn cục duy nhất. Giới hạn số tác vụ đồng thời, số yêu cầu trong một khoảng thời gian, kích thước đầu vào và các thao tác tốn kém. Chọn ngưỡng dựa trên tải dự kiến và chi phí tài nguyên, sau đó theo dõi tỷ lệ từ chối và độ trễ. Cho phép burst có thể hỗ trợ lưu lượng thông thường, trong khi giới hạn số tác vụ đồng thời ngăn một vài lệnh gọi chậm chiếm dụng toàn bộ worker.
Rate limiting giúp giảm hành vi lạm dụng và tình trạng quá tải ngoài ý muốn, nhưng không thay thế cho việc ủy quyền hoặc sandboxing. Đảm bảo cách áp dụng giới hạn có thể dự đoán: từ chối hoặc trì hoãn phần việc vượt giới hạn bằng một lỗi rõ ràng nhưng không chứa thông tin nhạy cảm, đồng thời tránh các vòng lặp retry làm khuếch đại tải. Nếu client retry, hãy sử dụng số lần retry có giới hạn kèm backoff và đảm bảo các thao tác làm thay đổi trạng thái có cơ chế xử lý idempotency phù hợp.
Đối với các tích hợp không đáng tin cậy hoặc bên thứ ba, hãy duy trì thông tin về chủ sở hữu và phiên bản, pin hoặc rà soát các bản cập nhật dependency, đồng thời kiểm thử các thay đổi trước khi triển khai production. Theo dõi số lượng lần gọi công cụ, timeout, lỗi xác thực, tài nguyên bị từ chối và kích thước đầu ra bất thường. Cảnh báo khi có sai lệch đáng kể và chuẩn bị phương án vô hiệu hóa một tích hợp hoặc thu hồi thông tin xác thực của tích hợp đó. Log phải hỗ trợ ứng phó sự cố mà không trở thành bản sao thứ hai của dữ liệu nhạy cảm.
Rà soát thực tiễn và các lỗi thường gặp
Rà soát một lần gọi từ yêu cầu đến phản hồi. Xác nhận rằng các tham số không hợp lệ bị từ chối trước khi phát sinh side effect; các tham số hợp lệ vẫn được kiểm tra theo quyền của bên gọi; quy trình không thể truy cập các tệp hoặc mạng không liên quan; dữ liệu trả về được giới hạn và kiểm tra. Kiểm thử các trường hợp biên như đường dẫn traversal, liên kết tượng trưng, tài liệu vượt quá kích thước cho phép, encoding không hợp lệ, tích hợp phản hồi chậm, phản hồi sai định dạng và các yêu cầu lặp lại.
Các lỗi phổ biến gồm coi việc validation schema là authorization, tin tưởng đường dẫn do model tạo ra, cấp credential quá rộng cho một tool vì lý do tiện lợi, cho rằng container mặc nhiên an toàn, và trả về output thô từ bên thứ ba như thể đó là các chỉ dẫn đáng tin cậy. Một sai lầm vận hành khác là ghi log toàn bộ tham số và phản hồi để debug, điều này có thể làm lộ thông tin nhạy cảm. Mặc định hãy redact và chỉ lưu lại những trường cần thiết cho việc giám sát bảo mật.
Một bộ kiểm soát trong môi trường production cần có owner và phương thức verification. Với mỗi control, hãy nêu rõ nó ngăn chặn điều gì, được enforcement ở đâu và bằng chứng nào cho thấy nó đang hoạt động. Một bài kiểm thử xác nhận rằng đường dẫn không được cấp quyền bị từ chối hữu ích hơn một tài liệu policy chỉ nói rằng các đường dẫn bị hạn chế. Chạy lại các kiểm tra này khi code của tool, quyền hạn, dependency hoặc ranh giới triển khai thay đổi.
Bài kiểm tra cuối bài
Ôn lại kiến thức, thử sức và nhận góp ý cho bài làm.