Chuyển tới nội dung chính

Phân quyền Arkon

Tra cứu các role Arkon, phạm vi department so với global và cách role Space được đồng bộ sang quyền tri thức.

Hai khái niệm nền: Employee.global_role là enum cố định (viewer | contributor | knowledge_manager | admin) + tư cách thành viên EmployeeDepartment (một người thuộc nhiều dept; zero-dept chỉ thấy global). Quyền có format {resource}:{action}:{scope} với own_dept vs all.

Bảng role​

RoleQuyền cốt lõi (ROLE_PERMISSIONS_MAP)Là ai
viewerdoc/wiki/skill:read:own_dept, org:departments:read, org:employees:readĐọc tri thức trong dept mình + global
contributorviewer + doc:create:own_dept, wiki:write:own_dept, skill:create:own_deptUpload tài liệu, propose draft Wiki/skill
knowledge_managerdoc/wiki/skill:*:all + skill:contribution:review + org:departments:read/manage, org:employees:read/manage, org:audit:readDuyệt nội dung toàn hệ thống, quản category và department
adminALL_PERMISSIONS (bypass mọi check)Quản trị hệ thống

Chưa gán role mặc định: doc:read/create:own_dept, wiki:read/write:own_dept, skill:read:own_dept, org:departments:read.

Scope Department vs Global​

  • Department: cô lập theo phòng ban (HR, Legal, Engineering…). Không có hàng liên kết department = tài liệu global (SOP/chính sách chung).
  • Out-of-scope chỉ lộ tên scope, không lộ tiêu đề/nội dung.
Đừng cấu hình theo tài liệu Workspace cũ

Tài liệu Arkon cũ còn mô tả Workspace realm + routers/projects.py, nhưng code hiện tại không còn — thực tế dùng Department / Global scope.

Map Space → Arkon (AGENTBOARD_ARKON_RBAC_SYNC)​

Role Space (Board)global_role ArkonĐược gì ở Arkon
owneradminToàn quyền
adminknowledge_managerwiki:write:all — duyệt draft, merge/close nhánh, rollback
membercontributorwiki:write:own_dept — đề xuất, không duyệt
viewerviewerChỉ đọc

Mọi thao tác tri thức đi qua hai cổng, cả hai phải mở: cổng Board (AUTHZ_RULES theo space_members — xem Phân quyền Board) và cổng Arkon (quyền theo global_role ở bảng trên).

Hệ quả thực tế: 403 từ Arkon nổi lên ở Board thành 502 kèm nguyên văn detail của Arkon. Thấy 502 mà detail nói về quyền → đó là cổng thứ hai, không phải Arkon sập.

CẤM nâng role='admin' Arkon để "cho chạy"

role là role hệ thống Arkon: role='admin' làm bộ lọc department trả về rỗng, tài khoản đó đọc wiki mọi Space khác — vỡ cách ly Space. Cách sửa đúng là cấp quyền (wiki:write:all qua global_role), không bao giờ nâng role.

Ngưỡng viết vs duyệt​

  • propose draft cần wiki:write:* (contributor làm được).
  • Direct edit / approve cần wiki:write:all (chỉ manager/admin) — contributor không tự duyệt bài mình.

MCP token scope​

Token HMAC-SHA256, verify mỗi request (đổi role/dept/revoke hiệu lực ngay, không cache). MCP_TOKEN_PEPPER bắt buộc. User tự phục vụ ở Profile → McpTokenCard; admin cấp/thu hồi ở Employees (POST/DELETE /api/employees/{id}/token). Chi tiết dùng: Board ↔ Wiki, Skills & MCP.