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完整的鑒權流程如下:
檢查請求訪問資源所屬帳號是否為資來源目錄RD(Resource Directory)成員帳號且已啟用管控策略。
如果請求訪問資源所屬帳號不是RD成員帳號或是RD成員但未啟用管控策略,則繼續進行身分識別驗證檢查。
如果請求訪問資源所屬帳號是RD成員帳號,且已啟用管控策略,則進行管控策略判定。
如果管控策略的判定結果為Explicit Deny或Implicit Deny,則拒絕訪問。
如果管控策略的判定結果為Allow,則繼續進行身分識別驗證檢查。
檢查身分識別驗證是否成功。
Table Store會對請求攜帶的簽名和服務端計算的簽名進行比對。
如果請求籤名不匹配,則拒絕訪問。
如果請求籤名匹配,則繼續判斷是否為基於角色的會話策略。
判斷是否為基於角色的會話策略。
如果判斷結果是基於角色的會話策略,則Table Store會對Session Policy進行許可權比對。
如果比對結果為Explicit Deny或Implicit Deny,則拒絕訪問。
如果比對結果為Allow,則繼續檢查請求介面來源。
如果判斷結果不是基於角色的會話策略,則會繼續檢查請求介面來源。
判斷請求介面來源。
Table Store的管控類API請求包括執行個體操作,例如CreateInstance。資料類API請求包括資料表相關操作、時序表相關操作、基礎資料操作等,例如CreateTable。更多資訊,請參見管控類API概覽和資料類API概覽。
如果請求介面來源為管控類API請求,則繼續檢查RAM Policy。
如果請求介面來源為資料類API請求,則繼續進行Network ACL的鑒權。
根據Network ACL進行鑒權時,需要結合請求使用者是否為執行個體Owner進行判斷。
如果判斷結果為未拒絕訪問,則繼續檢查RAM Policy和Instance Policy。
如果判斷結果為拒絕訪問,則拒絕訪問。
檢查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。
檢查合并結果中是否存在Explicit Deny策略。
如果存在Explicit Deny策略,則拒絕訪問。
如果不存在Explicit Deny策略,則繼續檢查是否存在Allow策略。
檢查是否存在Allow策略。
如果存在Allow策略,則允許訪問。
如果不存在Allow策略,則拒絕訪問。
相關文檔
關於管控策略、角色會話策略判定的更多資訊,請參見權限原則判定流程。
如需瞭解Table Store的許可權控制方式,請參見許可權控制概述、RAM Policy、Control Policy、Network ACL和Instance Policy。