Todos os produtos
Search
Central de documentação

Key Management Service:GenerateAndExportDataKey

Última atualização: Jun 28, 2026

Gera uma chave de dados aleatória, criptografa-a usando uma CMK e uma chave pública que você especificar e retorna ambos os textos cifrados.

Descrição da operação

Observações

  • Para obter mais informações sobre a política de acesso necessária para que um usuário do RAM ou uma função do RAM use esta operação, consulte Resource Access Management.

  • Esta operação pode ser acessada por meio de um gateway compartilhado ou um gateway dedicado. Para obter mais informações, consulte Alibaba Cloud SDK.

    • Gateway compartilhado: Você pode acessar o KMS pela Internet ou por uma VPC. Para acessar o KMS pela Internet, você deve ativar o acesso à Internet. Para obter mais informações, consulte Acessar instâncias do KMS pela Internet.

    • Gateway dedicado: Você pode acessar o KMS usando o endpoint privado do KMS (<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com).

Descrição

Recomendamos que você importe a chave de dados para um módulo criptográfico para criptografia e descriptografia de dados da seguinte forma:

1. Chame a operação GenerateAndExportDataKey para obter a chave de dados criptografada por uma chave do KMS e uma chave pública especificada.

2. Salve o texto cifrado da chave de dados que é criptografado pela chave do KMS no KMS ou em um serviço de armazenamento, como o ApsaraDB, para backup e recuperação de chaves.

3. Importe o texto cifrado da chave de dados que é criptografado pela chave pública para o módulo criptográfico que contém a chave privada correspondente. Esse processo distribui a chave do KMS para o módulo criptográfico. Em seguida, você pode usar a chave de dados para criptografar e descriptografar dados.

Nota

A chave do KMS que você especifica na solicitação é usada apenas para criptografar a chave de dados e não é usada para gerar a chave de dados. O KMS não registra nem armazena a chave de dados gerada aleatoriamente. Você é responsável por registrar a chave de dados ou seu texto cifrado.

Experimente agora

Experimente esta API no OpenAPI Explorer, sem necessidade de assinatura manual. Chamadas bem-sucedidas geram automaticamente código SDK correspondente aos seus parâmetros. Faça o download com segurança de credenciais integrada para uso local.

Testar

Autorização RAM

Nenhuma autorização necessária para esta operação. Se você encontrar problemas com esta operação, entre em contato com o suporte técnico.

Parâmetros da solicitação

Parâmetro

Tipo

Obrigatório

Descrição

Exemplo

KeyId

string

Sim

O ID da chave. Você também pode especificar o alias ou o Amazon Resource Name (ARN) da chave. Para obter mais informações sobre aliases, consulte Gerenciar aliases.

Nota

Para acessar uma chave em outra conta da Alibaba Cloud, você deve especificar o ARN da chave. O ARN da chave está no formato acs:kms:${region}:${account}:key/${keyid}.

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

KeySpec

string

Não

O comprimento da chave de dados que você deseja gerar. Valores válidos:

  • AES_256: uma chave simétrica de 256 bits.

  • AES_128: uma chave simétrica de 128 bits.

Nota

Recomendamos que você use o parâmetro KeySpec ou NumberOfBytes para especificar o comprimento de uma chave de dados. Se você não especificar nenhum dos parâmetros, o KMS gerará uma chave de dados de 256 bits. Se você especificar ambos os parâmetros, o KMS ignorará o parâmetro KeySpec.

AES_256

NumberOfBytes

integer

Não

O comprimento da chave de dados que você deseja gerar.

Valores válidos: 1 a 1024.

Unidade: bytes.

32

EncryptionContext

object

Não

Uma string JSON que consiste em pares chave-valor. Se você especificar este parâmetro, deverá especificar o mesmo parâmetro ao chamar a operação Decrypt ou outras operações para recriptografar a chave de dados. Para obter mais informações, consulte EncryptionContext.

{"Example":"Example"}

PublicKeyBlob

string

Sim

A chave pública codificada em Base64.

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

WrappingKeySpec

string

Sim

O tipo da chave especificada por PublicKeyBlob. Para obter mais informações sobre os tipos de chave, consulte Introdução às chaves assimétricas.
Valores válidos:

  • RSA_2048

  • EC_SM2

RSA_2048

WrappingAlgorithm

string

Sim

O algoritmo de criptografia que é usado para criptografar a chave de dados usando a chave pública especificada por PublicKeyBlob. Para obter mais informações sobre algoritmos de criptografia, consulte AsymmetricDecrypt.
Valores válidos:

  • RSAES_OAEP_SHA_256

  • RSAES_OAEP_SHA_1

  • SM2PKE

RSAES_OAEP_SHA_256

DryRun

string

Não

Especifica se deve ativar o recurso de dry run.

  • true: ativa o recurso.

  • false (padrão): desativa o recurso.

O modo DryRun é usado para testar chamadas de API e verificar as permissões nos recursos aos quais você tem acesso e a validade dos parâmetros da solicitação. Se você ativar o modo DryRun, o KMS sempre retornará uma resposta de falha e a causa da falha. As seguintes causas de falha estão incluídas:

  • DryRunOperationError: A solicitação teria sido bem-sucedida se o parâmetro DryRun não fosse especificado.

  • ValidationError: Os parâmetros especificados na solicitação são inválidos.

  • AccessDeniedError: Você não está autorizado a realizar esta operação no recurso do KMS.

false

Elementos de resposta

Elemento

Tipo

Descrição

Exemplo

object

KeyVersionId

string

O ID da versão da chave que é usada para criptografar o texto simples. É a versão principal da chave do KMS especificada.

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

KeyId

string

O ID da chave. Se você usar um alias de chave ou ARN de chave na solicitação, o ID da chave será retornado.

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

CiphertextBlob

string

O texto cifrado da chave de dados. A chave de dados é criptografada usando a versão principal da chave do KMS especificada.

ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****

RequestId

string

O ID da solicitação, que é um identificador exclusivo gerado pela Alibaba Cloud. Você pode usar o ID da solicitação para solucionar problemas.

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

ExportedDataKey

string

A chave de dados exportada que é protegida pela chave pública.

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

Exemplos

Resposta de sucesso

JSON formato

{
  "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*******"
}

Códigos de erro

Código de status HTTP

Código de erro

Mensagem de erro

Descrição

400 InvalidParameter The specified parameter is not valid. An invalid value is specified for the parameter.
500 InternalFailure InternalFailure
404 Forbidden.KeyNotFound The specified Key is not found. The error message returned because the specified CMK does not exist.
404 InvalidAccessKeyId.NotFound The Access Key ID provided does not exist in our records.

Consulte Códigos de Erro para uma lista completa.

Notas de versão

Consulte Notas de Versão para uma lista completa.