帳戶

基於角色的存取控制

RBAC(基於角色的存取控制)文件

概覽

系統實施全面的 RBAC 模型,以管理不同資源和操作的存取控制。它由角色、政策和使用者角色分配組成。

核心元件

資源

系統定義了以下受保護的資源:

  • Audit
  • DevPod
  • Image
  • Payment
  • Pubkey
  • Registry
  • Region
  • Resource
  • Serverless
  • Storage
  • Team
  • Role
  • UserRole

操作

資源上可用的操作:

  • List
  • Get
  • Create
  • Update
  • Delete

角色系統

角色是權限的集合,定義了使用者可以對特定資源執行的操作。角色透過將相關權限分組在一起,有效地組織和管理存取權限。

預定義角色

  1. AccountAdmin

    • 對帳戶級資源的完全存取
    • 可以管理團隊成員
    • 可以配置帳戶設定
  2. Developer

    • 可以管理 DevPods
    • 可以管理 Serverless 資源
    • 可以管理 Images
    • 可以管理 Storage(僅建立/讀取)
  3. Auditor

    • 對 Audit 日誌的唯讀存取
  4. Finance

    • 對 Payment 功能的完全存取
  5. Ops

    • 對 DevPods 和 Serverless 的讀取存取
    • 對 Images、Storage、Pubkey 和 Resources 的完全存取

政策

政策是存取控制的基本構建塊,定義了特定權限。每個政策代表一個規則,授予在特定資源上執行某些操作的權限。

政策結構

  • Resource:目標資源
  • Action:允許的操作

政策分配

  • 政策透過 RolePolicy 對應分配給角色
  • 可以將多個政策分配給單個角色
  • 政策分配對每個角色是唯一的

使用者權限控制

系統透過三層模型實施權限控制:使用者、角色和政策。角色充當使用者和政策之間的橋樑,提供靈活且可管理的方式來控制存取權限。

控制流程

  1. 使用者分配

    • 使用者被分配一個或多個角色
    • 角色分配特定於每個帳戶
    • 使用者可以在不同帳戶中擁有不同角色
  2. 角色作為橋樑

    • 角色充當政策集合的容器
    • 每個角色定義一組特定的責任
    • 角色使權限管理更易於維護
  3. 政策執行

    • 政策定義實際權限
    • 每個請求都根據使用者角色的政策進行驗證
    • 僅當存在匹配的政策時才授予存取權限

授權程序

  1. 請求處理

    • 提取帳戶資訊
    • 識別目標資源和操作
    • 驗證使用者角色和政策
  2. 權限檢查

    • 根據目標帳戶驗證特定於帳戶的角色
    • 政策匹配考慮精確匹配和萬用字元
  3. 存取控制

    • 如果任何分配的角色具有匹配的政策,則授予存取權限
    • 被拒絕的請求返回空結果而不是錯誤
    • 稽核日誌記錄在 RBAC 驗證之後進行

最佳實踐

  1. 角色管理

    • 盡可能使用預定義角色
    • 使用所需的最低權限建立自訂角色
    • 定期審查角色分配
  2. 安全考慮

    • 始終驗證帳戶上下文
    • 實施基於角色的 UI 限制
    • 維護角色變更的稽核日誌
  3. 效能

    • 角色和政策分配已快取
    • 批次操作可用於大量分配
    • 針對權限檢查最佳化資料庫查詢