ObjectOS
配置許可權

崗位

使用崗位對職能和受眾錨點進行建模。

崗位描述使用者所承擔的職能——"銷售經理"、"支援坐席"、"審計員"。 自 ObjectStack 13(許可權模型 v2,ADR-0090)起,崗位是唯一的人員分組概念: 舊的角色(Role)和簡檔(Profile)框架已合併為崗位,並從協議中移除。

崗位刻意保持扁平。崗位沒有 parent 欄位,也沒有崗位層級—— 彙報結構和基於子樹的可見性由業務單元樹承載。

崗位職責

使用崗位來建模:

  • 職能("銷售經理"、"招聘專員"、"審計員");
  • 應用、選項卡和知識庫(Book)的受眾定向;
  • 審批職責(型別為 position 的審批人會自動展開為當前崗位持有者);
  • 向持有相同職能的所有使用者分發許可權集

使用業務單元來建模組織架構(部門、區域、上下級結構),使用許可權集來授予具體的物件、欄位和系統能力。

系統物件

物件用途
sys_position崗位定義(扁平——無層級)
sys_user_position使用者的崗位分配
sys_position_permission_set通過崗位分發的許可權集
sys_business_unit用於層級和子樹共享的組織架構樹
sys_business_unit_member使用者在業務單元中的成員身份(function_in_business_unit

對 RBAC 關聯表(sys_user_positionsys_position_permission_setsys_user_permission_setsys_permission_set)的寫入需要租戶級管理員許可權或 委託管理範圍—— 僅對這些表授予普通 CRUD 許可權是不夠的。

受眾錨點:everyoneguest

每個部署都會預置兩個系統管理的崗位:

錨點持有者
everyone所有已認證的主體(隱式持有)
guest僅無會話(匿名)HTTP 主體

將許可權集繫結到 everyone 可為所有已登入使用者授予基線許可權;繫結到 guest 可向匿名訪問者開放內容。繫結是疊加式的,並且平臺會拒絕將高許可權集 (View All / Modify All、刪除/清除/轉移、系統許可權、萬用字元)繫結到這些錨點。

配置的基線許可權集(fallbackPermissionSet,預設 member_default)通過同一條 everyone 繫結路徑生效。注意:自 ObjectStack 14.2 起,成員基線不再包含刪除許可權—— 記錄刪除必須按物件通過崗位分發的許可權集顯式授予。

帶生效期的分配

崗位與許可權集分配支援可選的 valid_from / valid_until 時間視窗 (半開區間,UTC;null 表示無界)。過期的授權會立即失效——適用於臨時代班、 外包人員和與認證繫結的訪問。每條授權可以記錄 reason,委託授權還會記錄 delegated_from

標記為 delegatable: true 的崗位允許其當前持有者在有限時間視窗內將崗位自助 委託給其他使用者(必須設定未來的 valid_until,上限 30 天,且必須填寫原因)。 分發了管理範圍(adminScope)許可權集的崗位永遠不能被委託。

推薦模式

保持一組精簡、穩定、以職能為單位的崗位:

Sales Manager
Sales Representative
Support Manager
Support Agent

用業務單元建模組織架構:

Sales
  ├─ EMEA
  └─ AMER
Support

然後為崗位附加許可權集:

Sales Manager 岗位
  -> CRM User
  -> Sales Manager Access
  -> Report Viewer

這樣可以保持崗位穩定,同時允許許可權獨立演進。

應避免

  • 為每個使用者單獨建立一個崗位;
  • 在每個崗位中重複定義所有許可權;
  • 將崗位名稱用作業務邏輯判斷條件;
  • 在崗位上重建層級結構——子樹可見性屬於業務單元和記錄共享
  • 在記錄共享能更精確實現需求時,卻通過管理崗位授予寬泛的訪問許可權。

從角色遷移(13 之前)

如果你要升級針對 ObjectStack 12 或更早版本編寫的後設資料:

舊版現行
sys_role / sys_user_role / sys_role_permission_setsys_position / sys_user_position / sys_position_permission_set
defineRole / RoleSchema(含 parentdefinePosition / PositionSchema(扁平)
後設資料型別 roleprofileposition
共享接收者 role / role_and_subordinatesposition / unit_and_subordinates
PermissionSetSchema.isProfile已移除——isDefault 用於標記安裝時的建議分配範圍

角色層級必須重新建模為業務單元樹。os lint 會通過 security-role-word 規則標記遺留的角色詞彙。

On this page