Xây dựng niềm tin thông qua Kiểm soát truy cập

Hầu hết các ứng dụng đều nghĩ rằng chúng an toàn chỉ vì có trang đăng nhập.

Đăng nhập chỉ là bước đầu tiên. Một khi người dùng đã vào được, bạn phải trả lời một câu hỏi: Người dùng này có thể làm gì?

Nhiều người thường nhầm lẫn giữa xác thực (authentication) và phân quyền (authorization).

• Xác thực (Authentication) hỏi: Bạn là ai? • Phân quyền (Authorization) hỏi: Bạn được phép làm gì?

Một người dùng có thể đăng nhập thành công. Điều này không có nghĩa là họ nên được xem mọi bản ghi hoặc chỉnh sửa mọi hồ sơ.

Hãy sử dụng Kiểm soát truy cập dựa trên vai trò (RBAC) để làm cho các quy tắc trở nên rõ ràng.

RBAC hoạt động bằng cách đối chiếu vai trò của người dùng với danh sách các vai trò được cho phép. Nếu không sử dụng kiểm soát truy cập, bạn sẽ đối mặt với các rủi ro như:

  • Các bảng điều khiển bị lộ quá nhiều thông tin
  • Quá nhiều quyền hạn nội bộ
  • Rò rỉ dữ liệu vô ý
  • Nhật ký kiểm tra (audit trails) kém
  • Mất niềm tin

Hãy tuân thủ nguyên tắc đặc quyền tối thiểu (principle of least privilege). Chỉ cấp cho người dùng những quyền truy cập cần thiết cho công việc của họ.

• Nhân viên hỗ trợ không nên xem tất cả hồ sơ khách hàng. • Các kỹ sư không nên có quyền truy cập vào môi trường production theo mặc định. • Dữ liệu nhân sự (HR) phải được phân tách. • Các vai trò quản trị (Admin) phải được hạn chế và có thể kiểm tra được.

Đôi khi các vai trò là chưa đủ. Bạn cần các quyền dựa trên hành động. Một người dùng có thể xem một bản ghi nhưng không thể xóa nó. Điều này giúp bạn có khả năng kiểm soát chi tiết (granular control).

Bạn cũng nên phân loại dữ liệu theo mức độ nhạy cảm: • Dữ liệu công khai: Tên và ảnh. • Dữ liệu riêng tư: Email và số điện thoại. • Dữ liệu nhạy cảm: Lương hoặc số định danh (ID).

Hãy xử lý các danh mục này khác nhau trong mã nguồn của bạn. Điều này giúp việc quản lý bảo mật trở nên dễ dàng hơn.

Niềm tin cũng đòi hỏi trách nhiệm giải trình. Mỗi khi có ai đó chạm vào dữ liệu nhạy cảm, hệ thống của bạn phải tạo ra một nhật ký kiểm tra (audit trail). Các hành động nhạy cảm phải để lại dấu vết.

Trước khi phát hành ứng dụng, hãy kiểm tra các điểm sau:

  • Luồng đăng nhập và phiên làm việc (session) có an toàn không?
  • Các quyền hạn có dựa trên vai trò và hành động không?
  • Dữ liệu nhạy cảm có được phân tách không?
  • Các cài đặt mặc định của bạn có tính hạn chế không?
  • Bạn có ghi nhật ký tất cả các lượt truy cập không?
  • Bạn có thể giải thích các quyền hạn cho người dùng của mình không?

Xác thực giúp người dùng vào được hệ thống. Phân quyền giúp hệ thống của bạn đáng tin cậy. Niềm tin là một tính năng của sản phẩm.

Nguồn: https://dev.to/samiatakande11/building-trust-into-authentication-practical-access-control-patterns-for-modern-apps-55pc