Core platform · controlplane · 07/7/2026

cp-rbac — RBAC catalog & export CORE

Catalog quyền ở CP: Module/App → FeatureGroup → Feature → Permission + Role/RoleGroup gán theo user × workspace; export contract opengate-rbac-export/v1 cho runtime ingest.

Đánh giá: ⚠ Hai nguồn sự thật — cần hợp nhất · Chi tiết khuyến nghị ở mục 3 — tham chiếu hệ thống phổ biến.
1

Thành phần chính

Thành phầnVai trò
Module · App · FeatureGroup · Feature · PermissionCatalog quyền 4 cấp — nguồn khai từ manifest module
Role · RoleGroup · rbacServiceBó quyền, gán user theo workspace
rbacExportServiceXuất RBAC per-workspace → JSON contract cho RT ingest (service-to-service Bearer)
RT phía nhậnrt_role với origin='cp' (sync replace ghi đè) vs origin='local' (sống sót qua pull)
2

Hiện trạng (đọc từ code)

  • Mô hình catalog 4 cấp khớp convention manifest key.group.feature.action — nhất quán
  • Cơ chế sync CP → RT có phân biệt origin (cp/local) — module cài runtime mà CP không quản vẫn phân quyền được
  • Hai nguồn sự thật đang chạy song song: permissionCache (CP identity) UNION engine (rt_role) trong authorize.js — đúng cho giai đoạn chuyển tiếp nhưng khó suy luận quyền
  • ⚠ Data scope (row-level) thiết kế xong chưa nối — đã có plan riêng
3

Khuyến nghị — tham chiếu hệ phổ biến

Tham chiếuKhuyến nghị
Casbin / OPA — một policy store duy nhấtHoàn tất RT-16: engine (rt_role) làm authority duy nhất ở runtime; CP chỉ là nguồn sync + UI quản trị. Gỡ nhánh UNION trong authorize.js khi di cư xong
Odoo record rulesNối data scope theo plan-data-scope đã viết (grant kind:rule → buildWhere) — pilot module student
AWS IAMThêm policy simulator nhỏ: màn hình admin nhập user + permission code → trả allow/deny + lý do (role nào cấp) — cứu debug phân quyền rất nhiều
4

Liên kết trong core

  • rt-authz — phía thực thi
  • sdk — manifest khai permissions[]
  • cp-identity — session mang quyền
Phân quyền

Ma trận tác nhân × năng lực

Core không phải module nghiệp vụ — thay ma trận vai trò bằng tác nhân × năng lực, kèm cơ chế/quyền gate từng năng lực. R đọc · W thực hiện · A duyệt.

Năng lựcCơ chế / quyền gateSUPEROWNER/QTHTDEVSVCUSER
Catalog permission (từ manifest)sync tự động khi cài moduleRW (sync)
Role / RoleGroup per workspacequyền quản trị WS trên CPWW
Gán role cho membermembership + quyền quản trịW
Export RBAC → runtimeBearer service-to-serviceR

SUPER = super admin CP · OWNER/QTHT = chủ workspace / quản trị WS · DEV = developer/publisher · SVC = service-to-service (runtime/hook) · USER = người dùng cuối. Mục ghi (đích) = theo khuyến nghị P1–P5, chưa có ở hiện trạng.