密鑰策略是基於資源的策略,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰,KMS執行個體中的每個密鑰必須有且只有一個密鑰策略。本文介紹密鑰策略的詳細資料。
密鑰策略與 RAM 權限原則的關係
策略說明
密鑰策略(Key Policy)與 RAM 權限原則從不同維度控制對 KMS 密鑰的存取權限。在密鑰策略中添加 RAM 使用者或 RAM 角色後,還可配置 RAM 權限原則,管理RAM 使用者或 RAM 角色已在 RAM 控制台配置了相應的 KMS 密鑰操作許可權。
密钥策略:資源級策略,綁定在具體密鑰上,用於聲明哪些身份(RAM 使用者、RAM 角色或阿里雲帳號)可以管理或使用該密鑰。具體操作,請參見設定密鑰策略。
RAM 權限原則:身份級策略,綁定在 RAM 使用者或 RAM 角色上,用於聲明該身份可以執行哪些 KMS 操作。具體操作,請參見管理RAM使用者的許可權、管理RAM角色的許可權、Key Management Service自訂權限原則參考。
許可權判斷優先順序
當前帳號(密鑰建立者帳號)的RAM 使用者/角色:
判定原則:任一允許即可” (OR 邏輯),只要滿足以下 任意一個 條件,且沒有顯式拒絕(Explicit Deny),即允許訪問。
說明關於Explicit Deny(顯式拒絕)、Implicit Deny(隱式拒絕)的詳細介紹,請參見權限原則判定流程。
KMS 密鑰策略 中明確允許該使用者/角色。
RAM 權限原則 中明確允許該使用者/角色。
詳細規則:
KMS 密鑰策略 (資源側)
RAM 權限原則 (身份側)
判定結果
Allow(允許)
未配置
Allow(允許)
未配置
Allow(允許)
Allow(允許)
Allow(允許)
Allow(允許)
Allow(允許)
Allow(允許)
Deny(拒絕)
Deny(拒絕)
Deny(拒絕)
Allow(允許)
Deny(拒絕)
未配置
未配置
Deny(拒絕)
其他帳號的RAM 使用者/角色(跨帳號)
判定原則:“必須同時允許” (AND 邏輯)。必須同時滿足以下兩個條件,才允許訪問。
KMS 密鑰策略 中明確允許該外部使用者/角色(或外部帳號)。
RAM 權限原則 中明確允許該外部使用者/角色調用 KMS 相關介面。
詳細規則:
KMS 密鑰策略 (資源側)
RAM 權限原則 (身份側)
判定結果
Allow(允許)
Deny(拒絕)
Deny(拒絕)
Deny(拒絕)
Allow(允許)
Deny(拒絕)
Allow(允許)
Allow(允許)
Allow(允許)
未配置
未配置
Deny(拒絕)
注意事項
僅KMS執行個體中的密鑰支援通行金鑰策略。您可在建立密鑰時設定密鑰策略,也可在建立後進行修改,具體請參見建立密鑰、設定密鑰策略。
如果您授權給其他阿里雲帳號下的RAM使用者、RAM角色,會消耗KMS執行個體的已用多账号数量配額,按阿里雲帳號個數計算消耗的配額。如果您後續取消跨帳號的授權且該執行個體沒有其他資源分享給此帳號時,請等待約5分鐘再查看配額,配額會返還。
密鑰策略僅適用於通過KMS服務Endpoint存取金鑰時,對存取權限進行判定。如果您是通過KMS執行個體Endpoint存取金鑰,是否能訪問依賴於應用存取點AAP中配置的權限原則。
密鑰策略的內容長度不超過32768個位元組,且為JSON格式。
密鑰策略說明
完整的密鑰策略包含如下內容:
Version:密鑰策略的版本,目前版本僅支援設定為1。
Statement:密鑰策略的語句,每個密鑰策略包含一個或多個語句。每個語句包含以下幾個參數。
Sid
可選,表示自訂的語句標識符。內容長度小於等於128字元,支援的字元為:大寫英文字母(A-Z)、小寫英文字母(a-z)、數字(0-9),特殊字元( _/+=.@-)。
Effect
必選,表示是允許還是拒絕該策略語句中的許可權。取值為:
Allow或Deny。Principal
必選,表示權限原則的授權主體,支援設定為以下主體:
當前阿里雲帳號,即密鑰所屬的阿里雲帳號。
當前阿里雲帳號下的RAM使用者、RAM角色。
其他阿里雲帳號下的RAM使用者、RAM角色。
重要授權給其他阿里雲帳號下的RAM使用者、RAM角色後,您仍需在存取控制RAM側,使用該RAM使用者、RAM角色的阿里雲帳號為其授權使用該密鑰,RAM使用者、RAM角色才能使用該密鑰。
具體操作,請參見Key Management Service自訂權限原則參考、管理RAM使用者的許可權、管理RAM角色的許可權。
Action
必選,表示要允許或拒絕的API操作,內容必須以"kms:"開頭。操作許可權列表的範圍如下,如果您設定了列表外的操作,設定後也不會生效。
Resource
必選,表示權限原則生效的目標資源。
Resource取值只能為*,表示本 KMS 密鑰。Condition
可選,表示授權生效的限制條件。Condition元素也稱為條件塊(Condition Block),它是由一個或多個條件子句構成。一個條件子句由條件操作類型、條件關鍵字和條件值組成。詳細資料,請參見權限原則基本元素。
格式為
"Condition": {"condition operator": {"condition key": "condition value"}}。condition operator:具體請參見條件操作類型。condition key、condition value:密鑰策略支援的條件關鍵字及取值,具體請參見策略(Policy)條件鍵。
常見問題
如何查看密鑰建立者?
通過控制台:登入Key Management Service控制台,在密钥管理頁面,進入密鑰詳情頁面,查看建立者。
通過OpenAPI:調用DescribeKey介面,響應訊息中的
Creator即建立者。