KMS外部密鑰管理實例支持將KMS密鑰與您云外密鑰管理設施中的密鑰進行關聯,云產品或應用通過引用KMS實例中的密鑰ID完成加解密操作,且加解密操作時云外密鑰管理設施中的密鑰不會離開密鑰管理設施邊界,該功能也稱為持有自己的密鑰(Hold Your Own Key,HYOK)。本文介紹如何在KMS外部密鑰管理實例中創建外部密鑰。
由于外部密鑰管理設施需要您自行維護,保障其安全性、可用性和穩定性,并承擔相關成本,對多數用戶而言,如果KMS軟件密鑰管理實例、硬件密鑰管理實例可以滿足您的安全、控制與監管要求,推薦您優先使用軟件密鑰管理實例或硬件密鑰管理實例。
KMS實例如何與外部密鑰管理設施通信
KMS實例通過外部密鑰代理服務(XKI Proxy代理服務)連接云外密鑰管理設施,該代理將所有請求從KMS實例傳輸到密鑰管理設施,并將來自密鑰管理設施的響應回傳到KMS實例。XKI Proxy代理服務的詳細介紹,請參見XKI Proxy服務器。
KMS實例支持通過公網或VPC終端節點服務與XKI Proxy代理服務連接。
公網連接:KMS實例使用公網通過Internet連接到XKI Proxy代理服務,XKI Proxy代理服必須可以通過公網訪問。
VPC終端節點服務連接:通過PrivateLink,KMS實例使用VPC終端節點服務與XKI Proxy外部代理連接。
注意事項
外部密鑰僅支持對稱密鑰,不支持非對稱密鑰。
如果密鑰管理設施中的密鑰丟失或刪除,則通過對應KMS外部密鑰加密的密文將無法恢復。
外部密鑰管理實例不支持導入密鑰材料、密鑰輪轉、備份管理、跨地域同步。
KMS外部密鑰管理實例的密鑰在外部,KMS實例中只有密鑰的元數據,因此密鑰的版本管理也是在外部,您無法在KMS調用與密鑰版本相關的接口:
通過外部密鑰管理實例進行密碼運算需要符合以下條件:
KMS外部密鑰管理實例中密鑰狀態必須是
Enabled
。外部密鑰代理服務(XKI Proxy代理服務)運行正確、配置正確,且狀態為已啟用(
Connected
)。外部密鑰代理服務(XKI Proxy代理服務)中的密鑰狀態必須是
ENABLED
。
前提條件
請確保已購買并啟用KMS外部密鑰管理實例。具體操作,請參見購買和啟用KMS實例。
請提前通過XKI Proxy代理服務,在密鑰管理設施中創建密鑰,并記錄密鑰ID。具體操作,請參見密鑰管理設施相關文檔。
創建外部密鑰
登錄密鑰管理服務控制臺,在頂部菜單欄選擇地域后,在左側導航欄單擊 。
在密鑰管理頁面,單擊用戶主密鑰頁簽,實例ID選擇外部密鑰管理實例,單擊創建密鑰。
在創建密鑰面板,完成配置項設置,然后單擊確定。
配置項
說明
外部密鑰ID
通過XKI管理服務生成的密鑰的密鑰ID。
說明支持使用同一個外部密鑰ID創建一個或多個KMS密鑰。
密鑰規格
密鑰的規格。關于密鑰規格遵循的標準、密鑰算法等詳細介紹,請參見密鑰管理類型和密鑰規格。
Aliyun_AES_256、Aliyun_SM4
密鑰用途
密鑰的用途。
Encrypt/Decrypt:數據加密和解密。
密鑰別名
密鑰的別名標識符。支持英文字母、數字、下劃線(_)、短劃線(-)和正斜線(/)。
標簽
密鑰的標簽,方便您對密鑰進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)。
標簽鍵不能以aliyun或acs:開頭。
每個密鑰最多可以設置20個標簽鍵值對。
描述信息
密鑰的說明信息。
高級選項
默認策略:如果密鑰由當前主賬號使用,或者資源共享單元中的主賬號使用,請選擇默認策略。
實例未共享給其他賬號:僅當前主賬號能管理及使用密鑰。
實例已共享給其他賬號:以主賬號1將KMS實例A共享給主賬號2為例介紹。
主賬號1創建的密鑰:僅主賬號1能管理及使用密鑰。
主賬號2創建的密鑰:主賬號1和主賬號2,都能管理及使用密鑰。
自定義策略:如果密鑰需要授權給RAM用戶、RAM角色,或授權給其他賬號使用,請選擇自定義策略。
重要選擇管理員、使用者時不消耗訪問管理數量配額。選擇其他賬號使用者時,會消耗KMS實例的訪問管理數量配額,按主賬號個數計算消耗的配額,如果您取消了授權,請等待約5分鐘,再查看配額,配額會返還。
管理員:對密鑰進行管控類操作,不支持密碼運算操作。支持選擇當前主賬號下的RAM用戶和RAM角色。
{ "Statement": [ { "Action": [ "kms:List*", "kms:Describe*", "kms:Create*", "kms:Enable*", "kms:Disable*", "kms:Get*", "kms:Set*", "kms:Update*", "kms:Delete*", "kms:Cancel*", "kms:TagResource", "kms:UntagResource", "kms:ImportKeyMaterial", "kms:ScheduleKeyDeletion" ] } ] }
使用者:僅支持使用密鑰進行密碼運算操作。支持選擇當前主賬號下的RAM用戶和RAM角色。
{ "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateAndExportDataKey", "kms:AsymmetricEncrypt", "kms:AsymmetricDecrypt", "kms:DescribeKey", "kms:DescribeKeyVersion", "kms:ListKeyVersions", "kms:ListAliasesByKeyId", "kms:TagResource" ] } ] }
其他賬號使用者:使用密鑰進行加解密,可以是其他阿里云賬號的RAM用戶或RAM角色。
RAM用戶:格式為
acs:ram::<userId>:user/<ramuser>
,例如acs:ram::119285303511****:user/testpolicyuser
。RAM角色:格式為
acs:ram::<userId>:role/<ramrole>
,例如acs:ram::119285303511****:role/testpolicyrole
。說明授權給RAM用戶、RAM角色后,您仍需在訪問控制RAM側,使用該RAM用戶、RAM角色的主賬號為其授權使用該密鑰,RAM用戶、RAM角色才能使用該密鑰。
具體操作,請參見密鑰管理服務自定義權限策略參考、為RAM用戶授權、為RAM角色授權。
{ "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateAndExportDataKey", "kms:AsymmetricEncrypt", "kms:AsymmetricDecrypt", "kms:DescribeKey", "kms:DescribeKeyVersion", "kms:ListKeyVersions", "kms:ListAliasesByKeyId", "kms:TagResource" ] } ] }
相關操作
禁用密鑰、開啟刪除保護、計劃刪除密鑰、密鑰關聯檢測、設置外部密鑰的別名、設置外部密鑰的標簽等操作,請參見管理密鑰。