角色及權限範圍
OpenFactory儲存組織、單位和團隊中的獨立角色 水平。角色名稱描述了一個範圍;這不是一個普遍的許可 自動套用於每個 API 或產品功能。
範圍模型
organization membership: owner | admin | member
└── unit membership: unit_admin | base_creator | base_approver | member
└── team membership: team_lead | variant_creator | variant_deployer | variant_user組織成員資格是外部邊界。使用者必須是組織 管理員可以將他們添加到其單位或團隊之一之前。 每個級別的會員資格都經過獨立檢查;不要推斷一個單位或團隊 來自另一個上下文中顯示的組織角色的角色。
組織角色
目前的組織管理 API 強制執行這些權限:
| 營運 | 業主 | 管理員 | 會員 |
|---|---|---|---|
| 查看組織、成員、群組、單位和團隊 | 是的 | 是的 | |
| 編輯組織名稱或描述 | 是的 | 是的 | 沒有 |
| 建立、編輯或刪除群組並管理群組成員 | 是的 | 是的 | 沒有 |
| 邀請或刪除普通會員 | 是的 | 是的 | 沒有 |
| 更改普通成員/管理員角色 | 是的 | 是的 | 沒有 |
| 邀請或提升業主 | 是的 | 沒有 | 沒有 |
| 更改或刪除現有所有者 | 是的 | 沒有 | 沒有 |
| 建立或刪除單位 | 是的 | 是的 | 沒有 |
| 刪除組織 | 是的 | 沒有 | 沒有 |
| 離開組織 | 是的,除非唯一的所有者 | 是的 | 是的 |
一個組織可以有多個所有者。 API 防止唯一所有者
直到存在其他所有者或組織被刪除為止。那裡
此 API 中沒有單獨的「轉讓所有權」操作;一個所有者改變了另一個所有者
成员的角色为 owner,然后可以按预期更改或删除先前的所有者。
單位角色
組織所有者和管理員可以管理每個單位。在一個單位內,
当前的组织管理 API 授予 unit_admin 以下功能
行政運作:
- 編輯單位;
- 新增、刪除和更改單位成員角色;
- 建立、編輯和刪除該單元中的團隊;
- 新增和管理該單位的團隊成員。
只有組織所有者或管理員才能刪除單位本身。
base_creator、base_approver 和单元 member 是存储的角色标签
基礎映像工作流程策略。組織 CRUD 路由本身並不
證明其他地方的每個創建、批准或部署操作都會強制執行這些操作
標籤。驗證特定建置或核准的授權行為
工作流程,然後再依賴它作為控制項。
團隊角色
组织所有者/管理员和上级单位的 unit_admin 可以管理团队
會員資格。 team_lead 可以:
- 編輯團隊的名稱或描述;
- 新增和刪除團隊成員;
- 改變團隊成員的角色。
team_lead 无法通过当前组织 API 删除团队;
此操作是為組織所有者/管理員或家長保留的
unit_admin。
variant_creator、variant_deployer 和 variant_user 表示预期的
變體工作流程職責。它們不應被視為證明每個
變體端點強制執行完整的建立/編輯/部署矩陣。測試準確
已部署版本中的工作流程和拒絕路徑。
群組不同
群組是組織層級的共享集合,而不是另一個角色層次結構。 擁有者和管理員建立群組並管理群組成員資格;所有組織 成員可以列出群組及其成員。團體成員資格並不意味著 使用者轉變為組織管理員、單位管理員或團隊領導。
安全地改變角色
- 確認目標組織、單位或團隊。
- 記錄使用者目前在所有三個範圍的有效會員資格。
- 應用一項角色變更。
- 使用該使用者自己的操作測試允許的操作和拒絕的操作 會議。
- 檢查快取的 UI 狀態和現有會話是否反映了變更。
- 如果您的策略需要的話,請在角色標籤之外保留審核記錄。
在沒有拒絕路徑測試的情況下更改標籤並不足以證明 強制執行最小特權。
常見的邊緣狀況
- 管理員無法將任何人提升為擁有者或更改現有所有者的角色。
- 使用者無法新增到某個單位或團隊,除非他們屬於該單位或團隊 組織。
- 單位和團隊成員可以自行撤離;組織成員資格仍然存在 除非單獨移除。
- 刪除組織會員資格時應檢查陳舊的單位、團隊、 版本中的分組、分享和會話效果。
- UI 徽章顏色用於展示,而不是安全控制。永遠依靠 伺服器端授權和拒絕路徑測試。