Nhân viên ngân hàng không thể tự tăng hạn mức chuyển tiền cho chính mình

Có một điều mình từng thấy khá thú vị khi làm thủ tục ở ngân hàng.

Một nhân viên có thể xử lý giao dịch cho khách hàng cả ngày.

Có thể xác minh giấy tờ.

Có thể duyệt nhiều bước trong quy trình.

Nhưng nếu chính tài khoản của họ cần tăng hạn mức chuyển tiền, họ không thể tự sửa.

Việc đó phải đi qua một người khác.

Lúc đầu mình thấy khá bất tiện.

Nếu hệ thống đã biết người đó là nhân viên ngân hàng, tại sao không cho phép luôn?

Sau này nghĩ lại mới thấy, có lẽ điều ngân hàng đang bảo vệ không phải là hạn mức.

Họ đang bảo vệ ranh giới giữa người thực thi và người viết luật cho việc thực thi.

Điều đó làm mình nghĩ khá nhiều khi đọc về cách @NewtonProtocol xây authorization.

Điều mình để ý không phải là một agent có được phép thực hiện action hay không.

Mà là một câu hỏi xảy ra sớm hơn.

Ai là người quyết định điều gì được phép?

Đó là một khác biệt rất lớn.

Trong nhiều hệ thống, chúng ta thường dành nhiều thời gian để kiểm tra người thực thi.

Action có hợp lệ không?

Permission có đúng không?

Execution có nằm trong giới hạn không?

Nhưng Newton dường như còn quan tâm tới một lớp sâu hơn.

Ai được quyền thay đổi chính những giới hạn đó?

Nếu người thực thi cũng đồng thời là người có thể sửa policy đang kiểm soát mình, thì mọi lần kiểm tra phía sau đều trở nên rất mong manh.

Lúc đó, vấn đề không còn nằm ở execution.

Vấn đề nằm ở việc người chơi cũng có thể tự sửa luật của trò chơi.

Đó là lý do mình thấy việc tách người viết policy và người thực thi policy không chỉ là một lựa chọn về phân quyền.

Nó là một quyết định kiến trúc.

Một quyết định nhằm giữ cho policy vẫn còn ý nghĩa ngay cả khi execution diễn ra hoàn toàn tự động.

Tự phản biện.

Nhưng việc tách quyền cũng luôn có cái giá của nó.

Quay lại ngân hàng.

Có những lúc khách hàng cần tăng hạn mức rất gấp.

Nhân viên biết rõ hồ sơ đã đầy đủ.

Biết giao dịch hoàn toàn hợp lệ.

Nhưng họ vẫn phải chờ một người khác xác nhận vì hệ thống không cho phép tự sửa giới hạn của mình.

Trải nghiệm đó chắc chắn chậm hơn.

Thậm chí đôi khi còn khiến người dùng cảm thấy quy trình quá cứng nhắc.

Nhưng nếu bỏ luôn ranh giới đó chỉ để mọi thứ nhanh hơn, thì toàn bộ cơ chế kiểm soát cũng mất đi ý nghĩa.

Người thực thi không còn bị giới hạn bởi policy.

Họ có thể thay đổi policy trước, rồi thực hiện action sau.

Lúc đó, thứ bị phá vỡ không phải một giao dịch.

Mà là niềm tin vào chính hệ thống.

Điều mình muốn thấy rõ hơn từ @NewtonProtocol không phải là có bao nhiêu loại policy.

Mà là cách hệ thống giữ được khoảng cách giữa người định nghĩa policy và người chỉ được phép hành động bên trong policy đó.

Với mình, một authorization layer chỉ thực sự đáng tin khi người có quyền thực thi không đồng thời có quyền viết lại luật để hợp thức hóa chính hành động của mình.

Nếu Newton Protocol giữ được ranh giới đó một cách rõ ràng và minh bạch, thì giá trị của nó sẽ không nằm ở việc hệ thống kiểm tra nhiều hơn.

Mà nằm ở chỗ không ai có thể âm thầm đổi luật rồi tự mình hưởng lợi từ chính sự thay đổi đó.

#Newt $NEWT $NVDAB $SPCXB