Bỏ qua nội dung chính
BẢNG THUẬT NGỮ

Fail open vs fail closed

Toshendra Sharma

Bởi Toshendra SharmaNhà sáng lập và CEO, AgentCredia · Updated November 13, 2026

Hệ thống làm gì khi một kiểm tra không thể hoàn tất: fail open cho yêu cầu đi tiếp như bình thường, fail closed áp dụng đường xử lý chặt hơn hoặc từ chối.

Ý nghĩa của các thuật ngữ

Mỗi kiểm tra nằm trong đường xử lý của một yêu cầu đều có thể không trả được câu trả lời: một phụ thuộc bị timeout, một signal bị thiếu, một key không thể được lấy. Fail open nghĩa là yêu cầu tiếp tục như thể không có kiểm tra đó. Fail closed nghĩa là yêu cầu đi theo đường chặt hơn: bị từ chối, bị challenge hoặc được chuyển sang một kiểm soát mạnh hơn đã có sẵn.

Không có cách nào đúng trong mọi trường hợp. Lựa chọn phù hợp phụ thuộc vào route đó làm gì và một quyết định sai có giá bao nhiêu.

Vì sao điều này quan trọng với kiểm tra actor

Kiểm tra actor thêm ngữ cảnh cho yêu cầu: tương tác có vẻ là con người, có AI hỗ trợ, do agent điều khiển hay không xác định. Khi ngữ cảnh đó không có sẵn, ứng dụng vẫn phải phản hồi. Hai kiểu thất bại thường gặp là:

  • Vô tình fail closed. Một timeout hoặc signal bị thiếu bị xem là đáng ngờ, và người dùng thật bị chặn trong lúc hệ thống gián đoạn.
  • Vô tình fail open với hành động nhạy cảm. Kết quả bị thiếu bị âm thầm xem như con người, và một hành động có tác động lớn được thực hiện với ít mức kiểm tra hơn dự kiến.

Cả hai đều xuất phát từ việc không quyết định rõ ràng. Cách khắc phục là quyết định một cách tường minh, theo từng route. Bài viết của chúng tôi về thiết kế chính sách ở cấp ứng dụng cho con người và agent AI cho thấy hành vi khi lỗi phù hợp như thế nào trong một chính sách theo từng route.

Cách lựa chọn

Một cách tiếp cận thực tế là nhóm các route theo mức độ rủi ro:

  • Tác động thấp (trang công khai, tài liệu, route danh mục chỉ đọc): fail open. Kết quả actor bị thiếu không nên làm thay đổi gì.
  • Tác động trung bình (đăng ký, gửi biểu mẫu, tìm kiếm có chi phí): thường fail open kèm ghi log, hoặc áp dụng một điều chỉnh nhẹ như rate limit tiêu chuẩn.
  • Tác động cao (thay đổi tài khoản, xuất dữ liệu, hành động không thể đảo ngược): fail closed về kiểm soát mạnh hơn hiện có của bạn, chẳng hạn xác thực lại hoặc xác nhận. Mục đích không phải là chặn, mà là quay về kiểm tra mà bạn vốn sẽ dùng.

Sau đó, hãy xác định cùng một hành vi cho các trường hợp liên quan:

  • Timeout: kiểm tra không trả lời kịp thời.
  • Thiếu telemetry: tích hợp không chạy hoặc một signal bị thiếu.
  • Unknown: kiểm tra đã chạy nhưng bằng chứng không đủ để đi đến kết luận.
  • Bằng chứng cũ: kết quả là từ trước đó và không nên được dùng lại cho một hành động nhạy cảm hơn.

Các hiểu lầm phổ biến

  • "Fail closed an toàn hơn." Nó chuyển chi phí sang người dùng hợp lệ. Với các route tác động thấp, fail closed trong lúc sự cố có thể gây hại nhiều hơn rủi ro mà nó ngăn chặn.
  • "Unknown là một lỗi." Unknown là một kết quả hợp lệ. Nó cần được xử lý riêng một cách rõ ràng, và cách xử lý đó có thể giống hoặc không giống với cách xử lý timeout của bạn.
  • "Kết quả bị thiếu nghĩa là con người." Không bao giờ suy ra actor class chỉ từ việc thiếu bằng chứng.

Proof of Actor xử lý điều này như thế nào

Proof of Actor không bao giờ gán Human cho một timeout hoặc một kết quả Unknown, và việc cài đặt không chặn gì cả: các nhóm bắt đầu ở chế độ quan sát. Hành vi fail open hoặc fail closed cho từng route và từng mức rủi ro là lựa chọn của chủ sở hữu ứng dụng, được áp dụng trong code của bạn thông qua Route. Điều đó giữ cho enforcement có thể dự đoán được và cho phép bạn kiểm tra kết quả trước khi bất kỳ chính sách nào đi vào hoạt động.

Đọc cách các quyết định định tuyến được áp dụng, hoặc đăng ký quyền truy cập sớm.

Xem actor intelligence trong ứng dụng của bạn.

Bạn muốn trao đổi trước? Trao đổi với những người sáng lập