GenerateAndExportDataKey - 生成一个数据密钥并加密导出

随机生成一个数据密钥,通过您指定的主密钥(CMK)和公钥加密后,返回CMK加密数据密钥的密文和公钥加密数据密钥的密文。

接口说明

注意事项

  • RAM 用户或 RAM 角色调用该 OpenAPI 需要被授予的权限策略详情,请参见访问控制

  • 本接口可以通过共享网关或专属网关调用。详细介绍,请参见阿里云 SDK

    • 共享网关:通过公网、VPC 域名访问 KMS,该方式需要打开公网开关。具体操作,请参见通过公网访问 KMS 实例中的密钥

    • 专属网关:通过 KMS 私网地址(<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com)访问 KMS。

详细说明

建议您使用以下方式将数据密钥导入到密码模块中,用于数据加密和数据解密:

1.调用 GenerateAndExportDataKey 接口,获得 KMS 密钥加密和指定公钥加密的数据密钥。

2.将 KMS 密钥加密数据密钥得到的密文保存在 KMS,或者云数据库等存储服务中,用于密钥的备份和恢复。

3.将公钥加密数据密钥的密文,导入到公钥对应私钥所在的密码模块,实现 KMS 到密码模块的密钥分发,使用数据密钥对相应的数据进行加解密运算。

说明

在请求中指定的 KMS 密钥,仅会被用作数据密钥的加密,和数据密钥的生成没有关系。KMS 也不会记录或存储随机生成的数据密钥,您需要负责记录数据密钥或数据密钥的密文。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

当前API暂无授权信息透出。

请求参数

名称

类型

必填

描述

示例值

KeyId

string

密钥的 ID,也可以指定为密钥别名或密钥资源名称(ARN)。关于别名的详细介绍,请参见管理密钥别名

说明

访问其他阿里云账号下的密钥时,必须输入密钥 ARN。密钥 ARN 的格式为acs:kms:${region}:${account}:key/${keyid}

1234abcd-12ab-34cd-56ef-12345678****

KeySpec

string

指定生成的数据密钥的长度,取值:

  • AES_256:256 位的对称密钥。

  • AES_128:128 位的对称密钥。

说明

建议使用 KeySpec 或者 NumberOfBytes 来指定数据密钥长度。如果两者都不指定,KMS 生成 256 位的数据密钥;如果两者都被指定,KMS 会忽略 KeySpec 参数。

AES_256

NumberOfBytes

integer

指定生成的数据密钥的长度。

取值:1~1024。

单位:字节。

32

EncryptionContext

object

key/value 对的 JSON 字符串,如果指定了该参数,则在解密或者使用其他密钥转加密时需要提供同样的参数,详情请参见 EncryptionContext 说明

{"Example":"Example"}

PublicKeyBlob

string

Base64 编码的公钥。

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAndKfC2ReLL2+y8a0+ZBBeAft/uBYo86GZiYJuflqgUzKxpyuvlo3uQkBv6b+nx+0tz8g8v7GhpPWMSW5L9mNHYsvYFsa7jTxsYdt17yj6GlUHPuMIs8hr5qbwl38IHU1iIa7nYWwE2fb3ePOvLDACRJVgGpU0yxioW80d2QD+9aU4jF5dlAahcfgsNzo2CXzCUc1+xbmNuq7Rp+H9VJB9dyYOwqnW3RhOLBo21FzpORapf0UiRlrHRpk1V6ez+aE1dofaYh/9bh0m6ioxj7j5hpZbWccuEZTMBKd+cbuBkRhJzc6Tti6qwZbDiu4fUwbZS0Tqpuo1UadiyxMW********

WrappingKeySpec

string

PublicKeyBlob 密钥的类型。密钥类型详情,请参见非对称密钥简介
取值:

  • RSA_2048

  • EC_SM2

RSA_2048

WrappingAlgorithm

string

使用 PublicKeyBlob 所指定的公钥,加密(Wrap)数据密钥时的加密算法。算法详情,请参见 AsymmetricDecrypt
取值:

  • RSAES_OAEP_SHA_256

  • RSAES_OAEP_SHA_1

  • SM2PKE

RSAES_OAEP_SHA_256

DryRun

string

是否开启 DryRun 模式。

  • true:开启

  • false(默认值):关闭

DryRun 模式用于测试 API 调用,验证您是否具有相应资源的权限,以及请求参数是否配置正确。DryRun 模式开启后,KMS 会始终返回失败并提示失败原因。失败原因包含如下:

  • DryRunOperationError:不配置 DryRun 参数时,请求会成功。

  • ValidationError:请求中指定的参数有误。

  • AccessDeniedError:您无权在 KMS 资源上执行该操作。

false

返回参数

名称

类型

描述

示例值

object

KeyVersionId

string

用于加密明文的密钥版本标识符。是指定 KMS 密钥的主版本。

2ab1a983-7072-4bbc-a582-584b5bd8****

KeyId

string

密钥 ID。如果请求中的 KeyId 参数使用的是密钥别名、密钥 ARN,在响应中也会返回密钥 ID。

599fa825-17de-417e-9554-bb032cc6****

CiphertextBlob

string

数据密钥被指定 KMS 密钥的主版本加密后的密文。

ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****

RequestId

string

本次调用请求的 ID,是由阿里云为该请求生成的唯一标识符,可用于排查和定位问题。

7021b6ec-4be7-4d3c-8a68-1e85d4d515a0

ExportedDataKey

string

公钥加密保护导出的数据密钥。

BQKP+1zK6+ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H+hIH6DoM25fTLNcKj+mFB0Xnh9m2+HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz+f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ//ZC6t0AWcUoKL6QDm/dg5koQalcleRinpB+QadFm894sLbVZ9+N4GVs*******

示例

正常返回示例

JSON格式

{
  "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
  "KeyId": "599fa825-17de-417e-9554-bb032cc6****",
  "CiphertextBlob": "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****",
  "RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0",
  "ExportedDataKey": "BQKP+1zK6+ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H+hIH6DoM25fTLNcKj+mFB0Xnh9m2+HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz+f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ//ZC6t0AWcUoKL6QDm/dg5koQalcleRinpB+QadFm894sLbVZ9+N4GVs*******"
}

错误码

HTTP status code

错误码

错误信息

描述

400 InvalidParameter The specified parameter is not valid. 参数非法。
500 InternalFailure InternalFailure
404 Forbidden.KeyNotFound The specified Key is not found. 指定的密钥不存在。
404 InvalidAccessKeyId.NotFound The Access Key ID provided does not exist in our records.

访问错误中心查看更多错误码。

变更历史

更多信息,参考变更详情