RBAC Đa Chiều: Phân Quyền Dynamic Roles Không Code
Trong bất kỳ tổ chức nào có hơn 20 nhân viên, câu hỏi "ai được làm gì?" không đơn giản như bạn nghĩ. Một hệ thống phân quyền cứng với 3 vai trò Admin / User / Guest sẽ nhanh chóng trở thành rào cản tăng trưởng — khi bạn cần Trưởng phòng A xem được dữ liệu phòng A nhưng không thấy phòng B, hoặc khi một nhân viên tham gia 3 dự án với 3 vai trò khác nhau. Bài viết này phân tích cách BanhCuonFlow giải quyết bài toán phân quyền enterprise với mô hình RBAC đa chiều.
Tại Sao Phân Quyền Truyền Thống Không Đủ?
Hầu hết các ứng dụng SaaS sử dụng mô hình phân quyền phẳng: mỗi user được gán một role cố định (Admin, Editor, Viewer). Cách tiếp cận này dễ triển khai nhưng gây ra 3 vấn đề nghiêm trọng trong môi trường enterprise:
❌ Vấn đề 1: Role Explosion
Khi tổ chức mở rộng, bạn phải tạo hàng chục role mới: "Admin Phòng Kế Toán", "Editor Dự Án X", "Viewer Báo Cáo Tài Chính"... Số lượng role tăng theo cấp số nhân, trở nên không thể quản lý.
❌ Vấn đề 2: Thiếu Data Scope
Một Editor có thể sửa được task — nhưng sửa task của ai? Của toàn công ty hay chỉ phòng ban mình? Phân quyền truyền thống không phân biệt được điều này vì thiếu "phạm vi dữ liệu".
❌ Vấn đề 3: Không Context-Aware
Cùng một người, ở dự án A là Trưởng nhóm (full quyền), ở dự án B chỉ là thành viên (read-only). Hệ thống phẳng không hỗ trợ "quyền thay đổi theo ngữ cảnh".
Mô Hình RBAC Đa Chiều Của BanhCuonFlow
BanhCuonFlow triển khai mô hình phân quyền 3 tầng, lấy cảm hứng từ cách Google Cloud IAM và AWS Organizations hoạt động — nhưng đơn giản hóa để Admin doanh nghiệp có thể tự cấu hình mà không cần developer:
Tầng 1: System
Quyền cấp toàn hệ thống — quản lý user, billing, cài đặt chung. Chỉ Super Admin mới có.
Tầng 2: Workspace
Quyền cấp phòng ban — xem danh sách dự án, quản lý thành viên phòng, phê duyệt đề xuất.
Tầng 3: Project
Quyền cấp dự án — tạo/sửa task, xem báo cáo, quản lý workflow. Mỗi dự án có role riêng.
Điểm mấu chốt: quyền ở tầng trên không tự động kế thừa xuống tầng dưới. Một người là Admin Workspace (quản lý phòng) nhưng ở một dự án cụ thể, họ chỉ có thể là Viewer nếu chưa được cấp quyền. Điều này giúp bảo mật dữ liệu nhạy cảm giữa các dự án, ngay cả trong cùng phòng ban.
Dynamic Roles: Tự Định Nghĩa Vai Trò
Thay vì dùng các role cố định (Admin, Editor, Viewer), BanhCuonFlow cho phép Admin tự tạo role với tên tuỳ ý: "Trưởng phòng", "Thư ký dự án", "Khách kiểm thử", "Kế toán nội bộ"... Mỗi role là một bộ permissions mà Admin kéo-thả để cấu hình.
Một user có thể được gán nhiều role khác nhau ở các Project khác nhau. Ví dụ thực tế: Nhân viên Nguyễn Văn A là "Trưởng nhóm" tại dự án website, đồng thời là "Thành viên" tại dự án mobile app, và là "Khách" tại dự án marketing. Mỗi khi A chuyển sang dự án khác, giao diện và quyền truy cập tự động thay đổi theo.
Permission Matrix 3 Chiều
Mỗi role được cấu hình theo 3 chiều quyền:
🖥️ Frontend Scope
Quyết định menu nào hiển thị. Nếu user không có quyền xem báo cáo → mục Report biến mất khỏi sidebar. Không phải ẩn bằng CSS mà là render có điều kiện phía server — user không biết menu đó tồn tại.
🔗 Backend Scope (API)
Quyết định API nào được phép gọi. Dù user cố gắng gọi trực tiếp API (bypass frontend), hệ thống vẫn chặn ở middleware. Mỗi request được kiểm tra permission trước khi xử lý logic business.
📊 Data Scope
Quyết định dữ liệu nào được xem. User chỉ thấy task của dự án mình tham gia, chỉ xem báo cáo phòng ban mình quản lý. Lọc dữ liệu tự động ở tầng DB query — không cần filter thủ công.
Ưu Điểm So Với Các Giải Pháp Khác
So với các hệ thống BPM phổ biến trên thị trường, cách tiếp cận của BanhCuonFlow có những ưu điểm nổi bật:
① Không cần developer: Admin tự cấu hình qua giao diện drag-and-drop, không cần viết policy file hay code custom middleware. ② Audit trail đầy đủ: Mọi thay đổi quyền đều được ghi log — ai cấp quyền, cho ai, lúc nào, quyền gì. ③ Instant propagation: Khi Admin thay đổi permission, hiệu lực áp dụng ngay lập tức — user không cần logout/login lại. ④ Principle of Least Privilege: Mặc định user mới không có quyền gì, phải được cấp từng permission cụ thể.
Kịch Bản Thực Tế
Hãy xem xét công ty X với 150 nhân viên, 5 phòng ban, 12 dự án đang chạy song song. Trước khi dùng BanhCuonFlow, công ty X quản lý quyền bằng Google Sheet: mỗi khi có nhân viên mới, HR phải gửi email cho IT, IT tạo tài khoản và gán quyền thủ công — mất trung bình 2 ngày. Với BanhCuonFlow, Trưởng phòng tự thêm thành viên vào Workspace của mình, gán role "Nhân viên mới" (role được cấu hình sẵn với quyền cơ bản), và mở rộng quyền dần theo thời gian. Thời gian onboarding giảm từ 2 ngày xuống 5 phút.