Files
sys-analysis-design/.claude/skills/ba-2-analysis/templates/rbac-matrix.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

5.1 KiB
Raw Blame History

RBAC — Ma trận phân quyền — <Tên module>

Version 1.0
Date YYYY-MM-DD
Author (skill ba-2-analysis)
Status 🟡 Draft
Approved by —
Source
Scope

Change Log

Version Date Người sửa Thay đổi CR

1. Vai trò

ID Vai trò Ai thuộc vai trò này Số người ước tính Phạm vi dữ liệu Vai trò hệ thống hiện có
ROLE-01 Toàn hệ thống / Theo cửa hàng / Chỉ bản ghi của mình

Phạm vi dữ liệu là cột hay bị bỏ và là nguồn của lỗ hổng bảo mật phổ biến nhất: hai người cùng vai trò nhưng chỉ được xem dữ liệu của đơn vị mình.

2. Ma trận vai trò × hành động

Ô ghi: ✅ được · ❌ không · 🔶 được nhưng có điều kiện. 🔴 Ô 🔶 bắt buộc ghi điều kiện ngay trong ô. 🔶 không điều kiện = chưa phân tích xong.

Hành động ROLE-01
Nhân viên
ROLE-02
Trưởng nhóm
ROLE-03
Kế toán
ROLE-04
Admin
BR
Xem danh sách 🔶 chỉ cửa hàng phụ trách ✅ ✅ ✅ BR-030
Xem chi tiết 🔶 chỉ cửa hàng phụ trách ✅ ✅ ✅
Tạo mới ✅ ✅ ❌ ✅
Sửa 🔶 chỉ khi trạng thái Nháp ✅ ❌ ✅ BR-005
Xoá ❌ 🔶 chỉ Nháp, cần lý do ❌ ✅ BR-006
Gửi duyệt ✅ ✅ ❌ ✅
Duyệt ❌ 🔶 không tự duyệt bản ghi mình tạo ❌ ❌ SoD-01
Xuất dữ liệu 🔶 cần nhập lý do ✅ ✅ ✅ BR-031
Xem lịch sử thay đổi ❌ ✅ ✅ ✅

Kiểm tra chất lượng ma trận: một cột toàn ✅ hoặc một hàng toàn ✅ ⇒ chưa phân tích. Luôn hỏi ngược "vai trò nào KHÔNG được làm việc này?" — câu phủ định ép ra ranh giới thật.

3. Separation of Duties (SoD)

Bắt buộc với mọi hành động phê duyệt / chốt sổ / thanh toán / cấp quyền.

ID Cặp hành động xung đột Quy tắc Hệ thống chặn thế nào Ai giám sát
SoD-01 Tạo ↔ Duyệt Người tạo không được duyệt bản ghi của chính mình Ẩn nút Duyệt khi createdBy = currentUser Kiểm toán nội bộ
SoD-02 Duyệt ↔ Chi tiền

Ngoại lệ SoD — nếu tổ chức quá nhỏ để tách vai:

Ngoại lệ Điều kiện Bù đắp bằng Ai phê chuẩn ngoại lệ
(vd: chi nhánh <3 người) Log + báo cáo hằng tháng cho trưởng phòng

Không có SoD trong nghiệp vụ tài chính là phát hiện của kiểm toán, không phải chi tiết nhỏ.

4. Dữ liệu nhạy cảm

Trường/dữ liệu Loại Ai được xem Che thế nào Xuất được không Lưu bao lâu Căn cứ
Số CMND/CCCD PII ROLE-03, ROLE-04 Che 6 số giữa 🔶 cần lý do 5 năm
Số tài khoản PII tài chính ROLE-03 Che 4 số cuối ❌

5. Lưu vết (audit)

Hành động Ghi vết Nội dung ghi Giữ bao lâu Ai xem được
Sửa bản ghi ✅ ai · lúc nào · trường nào · trước→sau 2 năm ROLE-02+
Duyệt ✅ ai · lúc nào · ghi chú 5 năm ROLE-02+
Xuất dữ liệu ✅ ai · lúc nào · lý do · số bản ghi 5 năm ROLE-04
Đăng nhập thất bại ✅

Ba câu hỏi cho mỗi hành động nhạy cảm — trả lời đủ mới coi là phân tích xong:

  1. Ai được xem dữ liệu này? Có phải thông tin cá nhân không?
  2. Có cần lưu vết không? Lưu bao lâu?
  3. Có cần nhập lý do khi thực hiện không?

6. Hành vi khi không đủ quyền

Quy tắc W7 — ba trạng thái khác nhau, phải chọn rõ cho từng trường hợp.

Tình huống Hành vi Lý do
Không có quyền xem màn hình Không hiện trong menu + chặn ở route Tránh lộ sự tồn tại của chức năng
Có quyền xem, không có quyền sửa Hiện, ở chế độ read-only Vẫn cần tra cứu
Có quyền nhưng sai trạng thái Hiện nút, disable, có tooltip nêu lý do Người dùng cần biết vì sao không bấm được
Gọi thẳng API không đủ quyền Trả 403 + ghi log Chặn ở cả FE và BE

🔴 Chặn ở giao diện là trải nghiệm, chặn ở backend mới là bảo mật. Ghi rõ cả hai.

7. Thay đổi so với phân quyền hiện tại

Chỉ dùng khi làm enhancement.

Vai trò Quyền cũ Quyền mới Ai bị mất quyền Đã thông báo chưa

Mất quyền mà không báo trước là sự cố vận hành ngày go-live.

8. Open Questions

ID Câu hỏi Hỏi ai Từ ngày Chặn gì