Skip to content
工程

六種角色、26 項權限、部門範圍控管:JieGou 的 RBAC 運作機制

JieGou 角色存取控制系統的技術剖析——6 種角色、橫跨 8 類別的 26 項細緻權限、部門範圍覆寫、防提權規則,以及每次 API 呼叫的 O(1) 權限檢查。

JT
JieGou Team
· · 5 分鐘閱讀

AI 自動化平台處理敏感資料和關鍵的 workflow。客戶記錄流經 recipe 步驟。財務報表產生並分發。內部通訊起草後發出。存取控制模型必須與重要性相匹配。

「管理員或使用者」的二分法已不敷使用。你需要一個能閱讀稽核記錄但不能執行任何操作的合規人員。你需要管理團隊自動化但不能觸及其他部門的部門主管。你需要與組織架構相符的清晰界線,而非扁平的二元開關。

本文涵蓋 JieGou 的 RBAC 系統:6 種角色階層、26 項細緻權限、部門範圍覆寫,以及在每次 API 呼叫上執行的強制機制。

六種角色階層

JieGou 中的每位使用者都有一個全域角色——一個單一的數值等級,決定其在整個帳戶中的基準權限。

角色等級用途
Owner50帳戶建立者。完全存取權限,包括刪除帳戶。
Admin40完整管理權:帳單、使用者、API key、跨部門分析。
Dept Lead30部門領導者。編輯/刪除所屬部門的任何內容。安裝套件。推廣 workflow。
Member20標準使用者。建立內容、編輯自己的內容、執行 recipe/workflow、管理排程。
Auditor15稽核記錄、分析、治理的唯讀存取。無法建立或執行。
Viewer10內容的唯讀存取。無法執行任何操作。

數值等級並非任意設定。它們實現了 O(1) 權限檢查——系統不需遍歷角色清單,而是比較兩個整數。權限需要最低等級,使用者要麼符合要求,要麼不符合。

Auditor 角色

Auditor 是最新加入的角色,專為合規設計。它位於 Viewer(10)和 Member(20)之間,等級為 15。

與 Viewer 的關鍵差異:Auditor 擁有 audit:read 權限。他們可以存取稽核記錄、分析儀表板和治理報告。Viewer 不行。

與 Member 的關鍵差異:Auditor 無法建立內容、執行 recipe、執行 workflow 或管理排程。他們只觀察和報告。僅此而已。

這對受監管產業很重要。你的合規人員需要驗證 workflow 是否遵循政策、資料處理是否符合要求,以及使用者活動是否符合治理框架。他們不應需要——也不應擁有——修改或執行任何操作的能力。

Auditor 可用於 SSO 群組對角色的對應,因此你可以從 IdP 自動配置合規人員。將你的 compliance-teaminternal-audit 群組對應到 Auditor 角色,這些群組的新成員在首次登入時就能獲得正確的存取權限。無需手動指派角色。

橫跨 8 類別的 26 項權限

角色是簡寫。權限才是實際被檢查的項目。JieGou 定義了 26 項細緻權限,分為 8 個類別:

帳戶(4 項權限)

權限最低角色說明
account:deleteOwner刪除整個帳戶
account:adminAdmin管理操作(SSO 設定、帳戶設定)
account:settingsAdmin管理帳戶層級設定
account:billingAdmin管理帳單和訂閱

使用者(2 項權限)

權限最低角色說明
users:manageAdmin管理帳戶中的所有使用者
users:manage-departmentDept Lead管理自己部門內的使用者

內容(6 項權限)

權限最低角色說明
content:createMember建立新的 recipe、workflow、文件
content:edit-ownMember編輯自己建立的內容
content:editDept Lead編輯部門內的內容
content:edit-anyAdmin編輯所有部門的任何內容
content:delete-anyAdmin刪除所有部門的任何內容
content:readViewer讀取內容(recipe、workflow、文件)

執行(3 項權限)

權限最低角色說明
execution:runMember執行 recipe 和 workflow
execution:schedulesMember建立和管理排程執行
execution:triggersMember設定事件驅動的觸發器

分析(2 項權限)

權限最低角色說明
analytics:read-departmentAuditor讀取自己部門的分析資料
analytics:read-allAdmin讀取所有部門的分析資料

功能(4 項權限)

權限最低角色說明
features:chatMember使用 AI 聊天介面
features:documentsMember管理 knowledge base 文件
features:packsDept Lead安裝和管理部門套件
features:connectorsAdmin設定 MCP connector 和整合

治理(3 項權限)

權限最低角色說明
governance:auditAuditor讀取稽核記錄和治理報告
governance:environmentsDept Lead管理部署環境
governance:promoteDept Lead在環境之間推廣 workflow

安全(2 項權限)

權限最低角色說明
security:byokAdmin管理 BYOK API key
security:embedded-apiAdmin設定 embedded API

角色到權限的對應是靜態的。Dept Lead(等級 30)自動擁有所有最低角色為 30 或以下的權限。沒有個別使用者權限覆寫,沒有自訂角色定義。這使模型保持可稽核性——你可以查看使用者的角色,就能確切知道他們能做什麼和不能做什麼。

部門範圍的角色覆寫

全域角色適用於所有地方。但組織並非扁平結構。產品經理可能在全域需要 Member 存取權限,但在產品部門需要 Dept Lead 存取權限來管理團隊的自動化。

部門範圍覆寫解決了這個問題。使用者有一個全域角色,加上零個或多個特定部門的角色覆寫。

範例:Sarah 在全域是 Member。她在銷售部門有 Dept Lead 覆寫。在銷售部門,她可以編輯任何內容、安裝套件並推廣 workflow。在工程部門,她是標準 Member——她只能編輯自己的內容。

關鍵設計原則:覆寫只能提升,永不降低。如果你是全域 Admin,但在工程部門有 Viewer 覆寫,你在工程部門的有效角色仍然是 Admin。覆寫會被忽略,因為它會降低存取權限。這防止配置錯誤的覆寫意外鎖定某人應該能存取的部門。

有效角色解析

當系統需要確定使用者在特定部門可以做什麼時,它會執行此解析:

  1. 檢查此使用者在此部門是否存在部門覆寫
  2. 如果覆寫存在,回傳全域角色和覆寫中的較高者
  3. 如果沒有覆寫,回傳全域角色

偽代碼:

effectiveRole(user, department):
  override = getDepartmentOverride(user, department)
  if override exists:
    return max(user.globalRole, override.role)
  return user.globalRole

部門範圍的權限檢查使用此有效角色。當 Sarah 嘗試在銷售部門安裝套件時,系統解析她在銷售部門的有效角色(Dept Lead,等級 30),檢查 features:packs 所需的最低等級(30),並授予存取權限。當她在工程部門嘗試相同操作時,她的有效角色是 Member(20),低於所需等級。

防提權規則

角色變更是系統中最敏感的安全操作。四項規則防止權限提升:

  1. 你不能變更自己的角色。 不能自我晉升。想成為 owner 的 admin 需要另一個 owner 進行變更。

  2. 你不能指派 Owner 角色。 Owner 轉移是一個獨立、刻意的操作,有自己的保護措施。它不會透過標準角色變更 API 發生。

  3. 你不能指派大於或等於自己角色的角色(除非你是 Owner)。Admin(40)可以指派 Dept Lead(30)、Member(20)、Auditor(15)或 Viewer(10)。他們不能指派 Admin(40)或 Owner(50)。只有 Owner 可以建立其他 Admin。

  4. 你不能變更角色大於或等於自己角色的人的角色(除非你是 Owner)。Admin 不能修改另一個 Admin 的角色。Dept Lead 不能修改 Admin 的角色。階層向上嚴格執行。

這些規則完美組合。綜合起來,它們保證沒有使用者可以提升自己或同儕的權限——只有 Owner 不受此約束。

權限如何強制執行

JieGou 中的每個 API 路由在執行任何業務邏輯之前,都會經過三步驗證防護

步驟 1:驗證 session cookie。 HTTP cookie 的 session token 會對 Firebase Auth 進行驗證。結果會快取在 Redis 中,TTL 為 5 分鐘,因此來自同一 session 的重複請求不會在每次呼叫時都存取 Firebase Auth。

步驟 2:查找 AccountUser 記錄。 從 Firestore 取得使用者的帳戶成員資格——包括其全域角色和部門覆寫。這也會快取在 Redis 中,TTL 為 5 分鐘。

步驟 3:根據角色階層檢查權限。 所需權限對應到其最低角色等級。使用者的有效角色(如果檢查是部門範圍的,則考慮部門覆寫)會與之比較。這是 O(1)——一次雜湊查找以找到最低等級,加上一次數值比較。

權限檢查時不需要資料庫查詢。不需要遍歷權限清單。兩次快取查找和一次整數比較。

資源層級檢查

除了基於角色的權限之外,個別資源(recipe、workflow、文件)還有基於所有權的存取規則:

  • Owner、Admin、Dept Lead——可以修改其範圍內的任何資源
  • Member——只能修改自己建立的資源
  • Auditor、Viewer——不能修改任何資源

這與角色層級權限結合。擁有 content:edit-own 的 Member 只能編輯 resource.createdBy === user.id 的資源。擁有 content:edit 的 Dept Lead 可以編輯部門內的任何資源,無論是誰建立的。

與平台功能整合

RBAC 並非孤立的——它連接到每個主要的平台子系統:

審批閘道。 審批資格遵守角色階層。你可以設定審批步驟需要最低角色——例如,只有 Dept Lead 或以上才能在 workflow 輸出投入生產前批准。

執行可見度。 Workflow 執行有 4 種可見度範圍:private(僅執行者)、department(同部門的任何人)、group(指定群組)和 account(所有人)。RBAC 決定誰可以看到執行結果,誰不行。

環境推廣。 不同環境(development、staging、production)可以要求不同的最低角色。Development 可能允許 Member 等級推廣。Production 可能需要 Admin。RBAC 控管每個轉換。

治理報告。 治理儀表板顯示帳戶中的角色分佈、每位使用者可存取的資源計數,以及權限使用情況。Auditor 可以審查這些資料,以確保存取模式符合政策。

可用性

RBAC 在所有方案中都可用。每個 JieGou 帳戶都能取得完整的 6 種角色階層和 26 項權限。部門範圍覆寫Auditor 角色在 Team 和 Enterprise 方案中可用。探索所有功能開始免費試用

rbac security permissions departments governance architecture
分享這篇文章

喜歡這篇文章嗎?

在您的信箱中獲取工作流程技巧、產品更新和自動化指南。

No spam. Unsubscribe anytime.