RBAC gán quyền cho vai trò, người dùng nhận vai trò: admin, editor, viewer. Quyết định chỉ dựa vào việc "anh là ai".
ABAC quyết định bằng thuộc tính của chủ thể, đối tượng, hành động và ngữ cảnh — một biểu thức được đánh giá tại thời điểm gọi:
allow if subject.department == resource.department
and resource.status != 'locked'
and now between 08:00 and 18:00| RBAC | ABAC | |
|---|---|---|
| Quyết định dựa trên | Vai trò tĩnh | Thuộc tính động + ngữ cảnh |
| Dễ hiểu / audit | Cao — liệt kê được ai có quyền gì | Thấp hơn — phải mô phỏng mới biết |
| Độ mịn | Theo chức năng | Theo từng đối tượng, từng điều kiện |
| Chi phí | Nhỏ | Cần policy engine, dữ liệu thuộc tính đầy đủ |
Dấu hiệu RBAC thuần đã hết đất dùng — "role explosion": bắt đầu xuất hiện các vai trò kiểu editor_marketing_apac_readonly, số role tăng theo tích các chiều (phòng ban × khu vực × mức độ). Hoặc khi yêu cầu nghiệp vụ có dạng "chỉ sửa được đơn của chi nhánh mình", "duyệt được khoản chi dưới 50 triệu" — những điều kiện phụ thuộc dữ liệu mà role không diễn đạt nổi.
Thực tế phần lớn hệ thống dùng lai: RBAC làm khung quyền chức năng (ai được vào màn hình nào), cộng thêm điều kiện thuộc tính ở tầng đối tượng (bản ghi nào trong màn hình đó). ReBAC (quan hệ, kiểu Google Zanzibar) là hướng thứ ba, hợp với miền chia sẻ tài nguyên phân cấp như Drive.
Dù mô hình nào, luôn tách điểm quyết định (policy) khỏi điểm thực thi (code nghiệp vụ) để chính sách kiểm thử và audit được độc lập.