Bằng chứng sau sự cố: chúng tôi trả lời «ai đã cho phép điều này» thế nào
Một tình huống giả định, vấn đề đằng sau nó, và những gì chúng tôi xây để nó không lặp lại
Một tình huống giả định, vấn đề đằng sau nó, và những gì chúng tôi xây để nó không lặp lại
Tình huống
Một khách hàng đến với chúng tôi — không phải startup, mà là doanh nghiệp có quy trình: yêu cầu, phê duyệt, thanh toán. Chúng tôi triển khai một tác tử đảm nhận một phần quy trình đó. Hai tháng sau xảy ra sự cố: tác tử gửi một khoản thanh toán mà không ai phê duyệt.
Cuộc rà soát bắt đầu bằng một câu đơn giản: «cho chúng tôi xem nó dựa trên cơ sở nào». Và hóa ra không có gì để trình ra.
Có log. Có lịch sử trò chuyện. Có bản xuất từ CRM. Nhưng không mảnh nào trong số đó trả lời được: tác tử có quyền làm hành động ấy đúng giây phút đó hay không, và ai đã cấp quyền. Thẩm quyền ở một nơi, quyết định ở nơi khác, việc gửi đi ở nơi thứ ba, còn sự kiện thực thi ở phía người nhận — và chưa ai kiểm tra chúng cùng nhau.
Vấn đề
Chúng tôi phát biểu nó như sau: có một khoảng trống giữa thẩm quyền, quyết định, việc gửi đi và hiệu ứng, và ngành đang lấp khoảng trống ấy bằng lời trấn an thay vì bằng chứng.
Chứng thực và các tiêu chuẩn định danh trả lời «ai ở phía bên kia»: workload nào, khóa nào. Điều đó cần, nhưng không trả lời «bằng quyền gì mà hành động». Một máy chủ được chứng thực đúng vẫn có thể nhận một hành động ngoài phạm vi ủy quyền mà không thuộc tính chứng thực nào bị vi phạm.
Log trả lời «đã xảy ra gì», không trả lời «có được phép không». Một bản ghi có thể đầy đủ mà vẫn mô tả hành động không ai cho phép.
Vì vậy sau sự cố, khách hàng còn nhiều dữ liệu và không có câu trả lời. Còn nhà cung cấp còn câu «mọi thứ đều được ghi log», và nó không trụ được khi bị rà soát.
Những gì chúng tôi đã xây
Chúng tôi không xây thêm một bản triển khai tác tử. Chúng tôi xây một công cụ cho phép kiểm chứng các khẳng định về thẩm quyền — của chúng tôi và của người khác — theo cùng một bộ quy tắc.
Một hợp đồng so sánh. Bốn tình huống phá vỡ gần như mọi thiết kế: từ chối tại điểm quyết định, quyết định trên bằng chứng cũ, bên phê duyệt không liên lạc được, thu hồi sau khi gửi. Mười bốn trường bắt buộc — từ thẩm quyền và quyết định đến hiệu ứng thực tế, biên nhận, digest hành động, thời hạn và số lần thử lại. Bốn trạng thái bằng chứng: đã đo, không áp dụng, không phát ra, không đo.
Trạng thái cuối là mấu chốt. Nó cấm thao tác phổ biến nhất trong báo cáo: trình bày «chúng tôi không đo» như «không áp dụng».
Một trình kiểm chứng ngoại tuyến với đối chứng âm. Phép kiểm phải từ chối gói mà trong đó một tình huống bị xóa, bị nhân đôi, một phán quyết bị đảo, một bản ghi được trích bị bỏ, hoặc hai dòng hoán đổi biên nhận. Và phải chấp nhận gói không sửa. Nghe như thủ tục cho đến khi nó kích hoạt: trong một gói đã công bố, một bản ghi khẳng định bên thực thi đã từ chối tại ranh giới của mình, trong khi bản ghi công việc cho thấy một lần thử bị treo và một từ chối đến sau, khi thử lại. Không kiểm tra toàn vẹn nào bắt được điều đó — chỉ có đối chiếu khẳng định với bản ghi.
Tính mở. Hợp đồng, các tình huống và quy tắc từ chối được công bố; công việc diễn ra trong một nhóm làm việc mở về định danh và tin cậy, với kết quả trong kho công khai và một bài báo đang được phản biện. Chúng tôi không xin được tin bằng lời: bất kỳ ai cũng có thể lấy một gói và chạy phép kiểm.
Điều này mang lại gì cho khách hàng
Sau sự cố — không phải «log», mà là phân tích: thẩm quyền nào áp dụng, quyết định nào đã được đưa ra, đã gửi gì, phía nhận đã xảy ra gì và chỗ nào thiếu bằng chứng. Trước sự cố — khả năng thỏa thuận trước điều gì là bình thường và điều gì là sự cố.
Và quan trọng nhất: khả năng kiểm chứng chúng tôi qua bên thứ ba. Đó chính là điều thường thiếu trong câu «hãy tin chúng tôi, mọi thứ trong tầm kiểm soát».
Điều chúng tôi không tuyên bố
Chúng tôi không cấp chứng nhận và không tuyên bố tuân thủ tiêu chuẩn nào. Chúng tôi chưa chứng minh tác tử an toàn nói chung. Chúng tôi nói rõ rằng một phần bảo đảm nằm ở bên thực thi và ở đích: chúng tôi có thể cho thấy quyết định được đưa ra trong thẩm quyền đã cấp, nhưng không thể một mình chứng minh phía nhận đã thực thi đúng hành động đó.
Và chúng tôi nêu rõ giới hạn của phương pháp: so sánh diễn ra ngoại tuyến trên bản ghi được lưu; nó không xác lập việc cưỡng chế trực tiếp hay hiệu ứng phía đích.
Trông thế nào trong thực tế
Một thử nghiệm: chúng tôi xem bản ghi của tác tử bạn đang chạy, đưa qua hợp đồng và chỉ ra chúng chứng minh được gì và không chứng minh được gì. Sau đó hoặc cải thiện cách ghi, hoặc đổi ranh giới thẩm quyền, hoặc ghi trung thực phần chưa được phủ vào hợp đồng.
Nếu bạn có tác tử đang vận hành và câu hỏi «chúng ta sẽ trình ra gì nếu có sự cố» — chúng tôi bắt đầu từ đó.