全部產品
Search
文件中心

Tablestore:鑒權流程詳解

更新時間:Dec 17, 2024

RAM身份(RAM使用者或RAM角色)通過阿里雲控制台、API或CLI對錶格儲存資源發起訪問請求時,都需要執行權限原則的判定流程,只有判定成功才允許訪問資源。本文為您介紹權限原則詳細的判定流程。

鑒權說明

收到使用者請求時,Table Store會通過管控策略判定、身分識別驗證、基於角色的會話策略、基於身份的策略(RAM Policy)、Instance Policy、Network ACL等鑒權結果來判斷是允許或拒絕該請求。

以上鑒權流程包含的許可權狀態說明如下:

  • Allow:允許訪問請求,即比對Policy命中了Allow規則,且沒有命中Deny規則。

  • Explicit Deny:顯式拒絕訪問請求,即比對Policy命中了Deny規則。

  • Implicit Deny:隱式拒絕訪問請求,即Policy不存在、比對Policy未命中Allow或Deny規則。

重要
  • 如果請求同時命中了Allow和Deny語句,遵循Deny優先原則,判定結果為顯式拒絕。

  • RAM身份預設沒有執行任何操作的許可權,沒有被顯式允許執行的操作都會判定為隱式拒絕。

鑒權流程

Table Store完整的鑒權流程如下:

  1. 檢查請求訪問資源所屬帳號是否為資來源目錄RD(Resource Directory)成員帳號且已啟用管控策略。

    • 如果請求訪問資源所屬帳號不是RD成員帳號或是RD成員但未啟用管控策略,則繼續進行身分識別驗證檢查。

    • 如果請求訪問資源所屬帳號是RD成員帳號,且已啟用管控策略,則進行管控策略判定。

      • 如果管控策略的判定結果為Explicit Deny或Implicit Deny,則拒絕訪問。

      • 如果管控策略的判定結果為Allow,則繼續進行身分識別驗證檢查。

  2. 檢查身分識別驗證是否成功。

    Table Store會對請求攜帶的簽名和服務端計算的簽名進行比對。

    • 如果請求籤名不匹配,則拒絕訪問。

    • 如果請求籤名匹配,則繼續判斷是否為基於角色的會話策略。

  3. 判斷是否為基於角色的會話策略。

    • 如果判斷結果是基於角色的會話策略,則Table Store會對Session Policy進行許可權比對。

      • 如果比對結果為Explicit Deny或Implicit Deny,則拒絕訪問。

      • 如果比對結果為Allow,則繼續檢查請求介面來源。

    • 如果判斷結果不是基於角色的會話策略,則會繼續檢查請求介面來源。

  4. 判斷請求介面來源。

    Table Store的管控類API請求包括執行個體操作,例如CreateInstance。資料類API請求包括資料表相關操作、時序表相關操作、基礎資料操作等,例如CreateTable。更多資訊,請參見管控類API概覽資料類API概覽

    • 如果請求介面來源為管控類API請求,則繼續檢查RAM Policy。

    • 如果請求介面來源為資料類API請求,則繼續進行Network ACL的鑒權。

      根據Network ACL進行鑒權時,需要結合請求使用者是否為執行個體Owner進行判斷。

      • 如果判斷結果為未拒絕訪問,則繼續檢查RAM Policy和Instance Policy。

      • 如果判斷結果為拒絕訪問,則拒絕訪問。

  5. 檢查RAM Policy或Instance Policy。

    • RAM Policy是基於身份的策略。您可以使用RAM Policy控制使用者可以訪問您名下哪些資源的許可權。對於使用者層級的訪問,需要根據請求的帳號類別判斷是否允許或拒絕訪問請求。

      • 如果使用RAM使用者AccessKey或STS的AccessKey訪問,但是訪問的執行個體不屬於阿里雲帳號或者RAM角色Owner,則直接返回Implicit Deny。

      • 如果調用RAM服務提供的鑒權介面對普通請求進行身份鑒權,Table Store支援RAM服務通過帳號和Instance所屬資源群組進行鑒權,則檢查返回結果為Allow、Explicit Deny或Implicit Deny。

    • Instance Policy是基於資源的授權策略,執行個體Owner可以通過Instance Policy為RAM使用者授予執行個體或執行個體內資源精確的操作許可權。

      • 如果未設定Instance Policy,則直接返回Implicit Deny。

      • 如果設定了Instance Policy,Table Store會對Instance Policy進行鑒權,則檢查返回結果為Allow、Explicit Deny或Implicit Deny。

  6. 檢查合并結果中是否存在Explicit Deny策略。

    • 如果存在Explicit Deny策略,則拒絕訪問。

    • 如果不存在Explicit Deny策略,則繼續檢查是否存在Allow策略。

  7. 檢查是否存在Allow策略。

    • 如果存在Allow策略,則允許訪問。

    • 如果不存在Allow策略,則拒絕訪問。

相關文檔