產生一個隨機的資料密鑰。可以用資料密鑰進行本機資料的加密。
介面說明
注意事項
-
RAM 使用者或 RAM 角色調用該 OpenAPI 需要被授與權限策略詳情,請參見存取控制。
-
本介面可以通過共用網關或專屬網關調用。詳細介紹,請參見阿里雲 SDK。
共用網關:通過公網、VPC 網域名稱訪問 KMS,該方式需要開啟公網開關。具體操作,請參見通過公網訪問 KMS 執行個體中的密鑰。
專屬網關:通過 KMS 私網地址(
<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com)訪問 KMS。
QPS 限制
通過共用網關調用:本介面的單使用者 QPS 限制為 1000 次/秒。超過限制,API 呼叫將會被限流,這可能影響您的業務,請合理調用。
通過專屬網關調用:本介面的單使用者 QPS 限制以您 KMS 執行個體的計算效能規格為準。詳細介紹,請參見效能資料。
詳細說明
此 API 隨機產生一個資料密鑰,並通過您指定的對稱主要金鑰(Symmetric CMK)加密後,返回資料密鑰的密文。此 API 和 GenerateDataKey 提供完全相同的功能,唯一的區別是此 API 不會返回資料密鑰的明文。
您在請求中指定的 CMK,僅用於資料密鑰的加密,不會用於資料密鑰的產生。KMS 不會記錄或儲存隨機產生的資料密鑰。
此 API 適用於不需要立即使用資料密鑰完成資料加密的系統。系統需要加密時,通過調用 Decrypt 介面解開資料密鑰的密文。
此 API 也適用於具有不同信任等級的分布式系統。例如:您的系統將資料按照既定劃分策略儲存到不同的分區中。其中的一個模組會預先建立不同的資料分區,對每一個分區分別產生不同的資料密鑰。這一模組完成控制平面的初始化之後,並不參與資料的生產和消費,它是密鑰分發者。而資料平面的模組,在產生和消費資料的時候,首先擷取分區的資料密鑰密文,在解開之後使用資料密鑰的明文對資料執行加密或者解密操作,隨後清除記憶體中的資料密鑰明文。在這樣的系統中,密鑰分發者不需要擷取到資料密鑰的明文,只需要使用相關 CMK 的 GenerateDataKeyWithoutPlaintext 的許可權;而資料的生產和消費者,不需要產生新的資料密鑰,只需要使用相關 CMK 的 Decrypt 的許可權。
調試
您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。
調試
授權資訊
請求參數
|
名稱 |
類型 |
必填 |
描述 |
樣本值 |
| KeyId |
string |
是 |
主要金鑰(CMK)的通用唯一識別碼。該參數也可以被指定為 CMK 綁定的別名,詳情請參見別名使用說明。 |
599fa825-17de-417e-9554-bb032cc6**** |
| KeySpec |
string |
否 |
指定產生的資料密鑰的長度,取值:
說明
建議使用 KeySpec 或者 NumberOfBytes 來指定資料密鑰長度。如果兩者都不指定,KMS 產生 256 位的資料密鑰;如果兩者都被指定,KMS 會忽略 KeySpec 參數。 |
AES_256 |
| NumberOfBytes |
integer |
否 |
指定產生的資料密鑰的長度。 |
256 |
| EncryptionContext |
object |
否 |
key/value 對的 JSON 字串,如果指定了該參數,則在調用 Decrypt 時需要提供同樣的參數,詳情請參見 EncryptionContext 說明。 |
{"Example":"Example"} |
| DryRun |
string |
否 |
是否開啟 DryRun 模式。
DryRun 模式用於測試 API 呼叫,驗證您是否具有相應資源的許可權,以及請求參數是否配置正確。DryRun 模式開啟後,KMS 會始終返回失敗並提示失敗原因。失敗原因包含如下:
|
false |
返回參數
|
名稱 |
類型 |
描述 |
樣本值 |
|
object |
|||
| KeyVersionId |
string |
用於加密明文的密鑰版本標誌符。是指定 CMK 的主要版本。 |
2ab1a983-7072-4bbc-a582-584b5bd8**** |
| KeyId |
string |
CMK 的通用唯一識別碼。 說明
如果請求中的 KeyId 參數使用的是 CMK 的別名,在響應中會返回別名對應的 CMK 標誌符。 |
599fa825-17de-417e-9554-bb032cc6**** |
| CiphertextBlob |
string |
資料密鑰被指定 CMK 的主要版本加密後的密文。 |
ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS**** |
| RequestId |
string |
本次調用請求的 ID,是由阿里雲為該請求產生的唯一識別碼,可用於排查和定位問題。 |
7021b6ec-4be7-4d3c-8a68-1e85d4d515a0 |
樣本
正常返回樣本
JSON格式
{
"KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
"KeyId": "599fa825-17de-417e-9554-bb032cc6****",
"CiphertextBlob": "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****",
"RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0"
}
錯誤碼
|
HTTP status code |
錯誤碼 |
錯誤資訊 |
描述 |
|---|---|---|---|
| 400 | InvalidParameter | The specified parameter is not valid. | 參數非法。 |
| 404 | InvalidAccessKeyId.NotFound | The Access Key ID provided does not exist in our records. | |
| 404 | Forbidden.KeyNotFound | The specified Key is not found. | 指定的密鑰不存在。 |
訪問錯誤中心查看更多錯誤碼。
變更歷史
更多資訊,參考變更詳情。