全部產品
Search
文件中心

Key Management Service:憑據策略概述

更新時間:Dec 27, 2024

憑據策略是基於資源的策略,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS憑據,KMS執行個體中的每個憑據必須有且只有一個憑據策略。本文介紹憑據策略的詳細資料。

憑據策略與存取控制RAM的權限原則的關係

憑據策略支援將當前阿里雲帳號(憑據所屬的阿里雲帳號)下的RAM使用者、RAM角色設定為管理員或使用者,將其他阿里雲帳號下的RAM使用者、RAM角色設定為使用者。

除了在KMS上設定憑據策略外,您也可以在存取控制RAM上設定基於身份的策略,用於指定阿里雲帳號、RAM使用者、RAM角色可以管理或使用哪些憑據。具體操作,請參見為RAM使用者授權為RAM角色授權Key Management Service自訂權限原則參考

當阿里雲帳號、RAM身份(RAM使用者或RAM角色)通過阿里雲控制台、OpenAPI或CLI發起KMS資源訪問請求時,都需要執行權限原則的判定流程,根據判定結果決定是否被允許訪問。具體請參見如下流程圖和說明。

判定結果遵循如下原則:

  • 如果是當前阿里雲帳號下的RAM使用者、RAM角色:判定結果A或者判定結果B中,有一個是允許(Allow)且無Explicit Deny(顯式拒絕),即允許管理或使用該憑據。

    說明

    當前阿里雲帳號,即憑據建立者的阿里雲帳號。您可以通過如下方式查看憑據建立者:

  • 如果是其他阿里雲帳號下的RAM使用者、RAM角色:判定結果A和判定結果B,必須都是允許(Allow),才允許使用該憑據。

通過上述判斷流程,您可以瞭解到:

  • 如果您想允許當前阿里雲帳號下的RAM使用者、RAM角色管理或使用憑據,只需在KMS側設定憑據策略允許其管理或使用憑據,或者在RAM側設定權限原則允許其管理或使用憑據。

  • 如果您想允許其他阿里雲帳號下的RAM使用者、RAM角色使用憑據,不僅需要在KMS側設定憑據策略允許其使用憑據,同時還要在RAM側設定權限原則允許其使用憑據。

注意事項

  • 僅KMS執行個體中的憑據支援憑據策略。您可在建立憑據時設定憑據策略,也可在建立後進行修改,具體請參見管理及使用憑據設定憑據策略

  • 如果您授權給其他阿里雲帳號下的RAM使用者、RAM角色,會消耗KMS執行個體的訪問管理數量配額,按阿里雲帳號個數計算消耗的配額。如果您後續取消跨帳號的授權且該執行個體沒有其他資源分享給此帳號時,請等待約5分鐘再查看配額,配額的消耗數量會相應減少。

  • 憑據策略僅適用於通過KMS服務Endpoint訪問憑據時,對存取權限進行判定。如果您是通過KMS執行個體Endpoint訪問憑據,是否能訪問依賴於應用存取點AAP中配置的權限原則。

  • 憑據策略的內容長度不超過32768個位元組,且為JSON格式。

憑據策略說明

完整的憑據策略包含如下內容:

  • Version:憑據策略的版本,目前版本僅支援設定為1。

  • Statement:憑據策略的語句,每個憑據策略包含一個或多個語句。每個語句包含以下幾個參數。

    • Sid

      可選,表示自訂的語句標識符。內容長度小於等於128字元,支援的字元為:大寫英文字母(A-Z)、小寫英文字母(a-z)、數字(0-9),特殊字元( _/+=.@-)。

    • Effect

      必選,表示是允許還是拒絕該策略語句中的許可權。取值為:AllowDeny

    • 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"}}

      • condition operator:具體請參見條件操作類型

      • condition keycondition 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"
}