憑據策略是基于資源的策略,用于控制哪些阿里云賬號、RAM用戶、RAM角色有權限來管理或使用KMS憑據,KMS實例中的每個憑據必須有且只有一個憑據策略。本文介紹憑據策略的詳細信息。
憑據策略與訪問控制RAM的權限策略的關系
憑據策略支持將當前阿里云賬號(憑據所屬的阿里云賬號)下的RAM用戶、RAM角色設置為管理員或使用者,將其他阿里云賬號下的RAM用戶、RAM角色設置為使用者。
除了在KMS上設置憑據策略外,您也可以在訪問控制RAM上設置基于身份的策略,用于指定阿里云賬號、RAM用戶、RAM角色可以管理或使用哪些憑據。具體操作,請參見為RAM用戶授權、為RAM角色授權、密鑰管理服務自定義權限策略參考。
當阿里云賬號、RAM身份(RAM用戶或RAM角色)通過阿里云控制臺、OpenAPI或CLI發起KMS資源訪問請求時,都需要執行權限策略的判定流程,根據判定結果決定是否被允許訪問。具體請參見如下流程圖和說明。
判定結果遵循如下原則:
如果是當前阿里云賬號下的RAM用戶、RAM角色:判定結果A或者判定結果B中,有一個是允許(Allow)且無Explicit Deny(顯式拒絕),即允許管理或使用該憑據。
說明當前阿里云賬號,即憑據創建者的阿里云賬號。您可以通過如下方式查看憑據創建者:
通過控制臺:登錄密鑰管理服務控制臺,在憑據管理頁面,進入憑據詳情頁面,查看創建者。
通過OpenAPI:調用DescribeSecret接口,響應消息中的
Creator
即創建者。
如果是其他阿里云賬號下的RAM用戶、RAM角色:判定結果A和判定結果B,必須都是允許(Allow),才允許使用該憑據。
通過上述判斷流程,您可以了解到:
如果您想允許當前阿里云賬號下的RAM用戶、RAM角色管理或使用憑據,只需在KMS側設置憑據策略允許其管理或使用憑據,或者在RAM側設置權限策略允許其管理或使用憑據。
如果您想允許其他阿里云賬號下的RAM用戶、RAM角色使用憑據,不僅需要在KMS側設置憑據策略允許其使用憑據,同時還要在RAM側設置權限策略允許其使用憑據。
注意事項
憑據策略說明
完整的憑據策略包含如下內容:
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角色才能使用該憑據。
具體操作,請參見憑據管理服務自定義權限策略參考、為RAM用戶授權、為RAM角色授權。
Action
必選,表示要允許或拒絕的API操作,內容必須以"kms:"開頭。操作權限列表的范圍如下,如果您設置了列表外的操作,設置后也不會生效。
"Action": [ "kms:List*", "kms:Describe*", "kms:PutSecretValue", "kms:Update*", "kms:DeleteSecret", "kms:RestoreSecret", "kms:RotateSecret", "kms:TagResource", "kms:UntagResource" "kms:GetSecretValue" ]
Resource
必選,取值只能是
*
,表示本KMS憑據。Condition
可選,表示授權生效的限制條件。Condition元素也稱為條件塊(Condition Block),它是由一個或多個條件子句構成。一個條件子句由條件操作類型、條件關鍵字和條件值組成。詳細信息,請參見權限策略基本元素。
格式為
"Condition": {"condition operator": {"condition key": "condition value"}}
。
憑據策略示例
為阿里云賬號(119285303511****)下的憑據設置憑據策略。示例表示:
允許當前阿里云賬號(119285303511****)對該憑據的完全訪問權限,即管理和使用憑據。
允許當前阿里云賬號(119285303511****)下的RAM用戶(secret_ramuser1)管理憑據。
允許當前阿里云賬號(119285303511****)下的RAM用戶(secret_ramuser2)、其他阿里云賬號(190325303126****)下的RAM用戶(secret_ramuser3)使用憑據。
{
"Statement": [
{
"Action": [
"kms:*"
],
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:*"
]
},
"Resource": [
"*"
],
"Sid": "kms default secret policy"
},
{
"Action": [
"kms:List*",
"kms:Describe*",
"kms:PutSecretValue",
"kms:Update*",
"kms:DeleteSecret",
"kms:RestoreSecret",
"kms:RotateSecret",
"kms:TagResource",
"kms:UntagResource"
],
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:user/secret_ramuser1"
]
},
"Resource": [
"*"
]
},
{
"Action": [
"kms:List*",
"kms:Describe*",
"kms:GetSecretValue"
],
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:user/secret_ramuser2",
"acs:ram::190325303126****:user/secret_ramuser3"
]
},
"Resource": [
"*"
]
}
],
"Version": "1"
}