Gera uma chave de dados (DK) aleatória para criptografia de dados local.
Descrição da operação
-
Para obter detalhes sobre a política de acesso necessária para que usuários ou funções do Resource Access Management (RAM) chamem esta operação de API, consulte Controle de acesso.
-
Você pode chamar esta operação de API por meio de um gateway compartilhado ou um gateway dedicado. Para obter mais informações, consulte Alibaba Cloud SDK.
Gateway compartilhado: Acesse o KMS pela Internet ou por meio de um endpoint de VPC. Este método exige que você ative o acesso à rede pública. Para obter mais informações, consulte Chaves de acesso em uma instância do KMS pela Internet.
Gateway dedicado: Acesse o KMS por meio do endpoint privado do KMS (
<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com).
Limites de QPS
Gateway compartilhado: O limite de QPS por usuário para esta operação de API é de 1.000 chamadas por segundo. Se o limite for excedido, as chamadas de API serão limitadas, o que pode afetar seus negócios. Faça chamadas de API em uma frequência razoável.
Gateway dedicado: O limite de QPS por usuário para esta operação de API depende das especificações de desempenho de computação da sua instância do KMS. Para obter mais informações, consulte Dados de desempenho.
Descrição
A chave de dados (DK) gerada aleatoriamente é criptografada usando a chave mestra do cliente (CMK) especificada, e o texto cifrado e o texto simples da DK são retornados. Você pode usar o texto simples da DK retornado para criptografar dados localmente fora do KMS. Ao armazenar os dados criptografados, você também deve armazenar o texto cifrado da DK. Você pode obter o texto simples da DK no campo Plaintext da resposta e o texto cifrado da DK no campo CiphertextBlob.
A CMK especificada na solicitação é usada apenas para criptografar a DK e não está envolvida na geração da DK. O KMS não registra nem armazena a DK gerada aleatoriamente. Você é responsável por persistir o texto cifrado da DK.
Recomendamos que você use o seguinte método para criptografar dados localmente:
-
Chame a operação GenerateDataKey para obter uma chave para criptografia de dados.
-
Use o texto simples da DK retornado no campo Plaintext da resposta para concluir a criptografia de dados offline localmente e, em seguida, limpe o texto simples da DK da memória.
-
Armazene o texto cifrado da DK retornado no campo CiphertextBlob da resposta junto com os dados criptografados localmente.
Para descriptografar dados localmente:
Chame a operação Decrypt para descriptografar o texto cifrado da DK no armazenamento local. Esta operação retorna o texto simples da DK.
Use o texto simples da DK para concluir a descriptografia de dados offline localmente e, em seguida, limpe o texto simples da DK da memória.
Este tópico fornece um exemplo de geração de uma DK aleatória para uma chave com o ID key-hzz630494463ejqjx****.
Experimente agora
Testar
Autorização RAM
|
Ação |
Nível de acesso |
Tipo de recurso |
Chave de condição |
Ação dependente |
|
kms:GenerateDataKey |
get |
*Chave.
|
|
Nenhuma |
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 Nome do Recurso do Alibaba Cloud (ARN) da chave. Para obter mais informações sobre aliases, consulte Gerenciar aliases de chave. Nota
Ao acessar uma chave que pertence a outra conta do Alibaba Cloud, você deve inserir o ARN da chave. O ARN de uma chave está no formato |
key-hzz630494463ejqjx**** |
| KeySpec |
string |
Não |
Especifica o comprimento da DK gerada. Valores válidos:
Nota
Use KeySpec ou NumberOfBytes para especificar o comprimento da DK. Se nenhum parâmetro for especificado, o KMS gera uma DK de 256 bits. Se ambos os parâmetros forem especificados, o KMS ignora o parâmetro KeySpec. |
AES_256 |
| NumberOfBytes |
integer |
Não |
Especifica o comprimento da DK gerada em bytes. Valores válidos: 1 a 1024. Valor padrão:
|
256 |
| EncryptionContext |
object |
Não |
A string JSON de pares chave-valor. Se este parâmetro for especificado, você deverá fornecer o mesmo parâmetro ao chamar a operação Decrypt. Para obter mais informações, consulte EncryptionContext. |
{"Example":"Example"} |
| DryRun |
string |
Não |
Especifica se o modo dry run deve ser ativado. Valores válidos:
Valor padrão: false. O modo dry run é usado para testar chamadas de API, verificar se você tem as permissões necessárias nos recursos e verificar se os parâmetros da solicitação estão configurados corretamente. Quando o modo dry run está ativado, o KMS sempre retorna uma falha e fornece a causa da falha. As causas incluem:
|
false |
| Recipient |
string |
Não |
As informações de autenticação do ambiente confiável.
Estrutura do AttestationDocument:
|
{ "AttestationDocument":"base64-encoded-attestion-document", "KeyEncryptionAlgorithm":"RSAES_OAEP_SHA_256" } |
Para obter mais informações sobre os parâmetros de solicitação comuns, consulte Parâmetros comuns.
Elementos de resposta
|
Elemento |
Tipo |
Descrição |
Exemplo |
|
object |
|||
| KeyVersionId |
string |
O ID da versão da chave. É o identificador globalmente exclusivo da versão da chave primária. |
2ab1a983-7072-4bbc-a582-584b5bd8**** |
| KeyId |
string |
O ID da chave. Se o parâmetro KeyId na solicitação estiver definido como o alias ou o ARN da chave, o ID da chave também será retornado na resposta. |
key-hzz630494463ejqjx**** |
| CiphertextBlob |
string |
O texto cifrado da DK criptografado usando a versão primária da chave especificada. |
ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS**** |
| RequestId |
string |
O ID da solicitação. É um identificador exclusivo gerado pelo Alibaba Cloud para a solicitação e pode ser usado para solucionar e localizar problemas. |
7021b6ec-4be7-4d3c-8a68-1e85d4d515a0 |
| Plaintext |
string |
O texto simples da DK codificado em Base64. |
QmFzZTY0IGVuY29kZWQgcGxhaW50**** |
| CiphertextForRecipient |
string |
Quando o parâmetro Recipient é transmitido, a DK em texto simples é criptografada usando a chave pública no extendUserData do Recipient, e o resultado é codificado em Base64. Importante Este parâmetro entra em vigor apenas quando você chama a operação de API por meio de um gateway dedicado. |
NIahY6pgjK4ZMP2R0EmsmBqntrv0AI2rcDyU7Su6uOT9Le7EOvlCpjHJfr9z3M0vkfulQoyuETmKSpYDfixE3auE4MwxloT6D9Gfsk6hm5FV2iAxL//Ms2kLv6K4z6yGi7lKm2yjX4***== |
Exemplos
Resposta de sucesso
JSON formato
{
"KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
"KeyId": "key-hzz630494463ejqjx****",
"CiphertextBlob": "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****",
"RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0",
"Plaintext": "QmFzZTY0IGVuY29kZWQgcGxhaW50****",
"CiphertextForRecipient": "NIahY6pgjK4ZMP2R0EmsmBqntrv0AI2rcDyU7Su6uOT9Le7EOvlCpjHJfr9z3M0vkfulQoyuETmKSpYDfixE3auE4MwxloT6D9Gfsk6hm5FV2iAxL//Ms2kLv6K4z6yGi7lKm2yjX4***=="
}
Códigos de erro
|
Código de status HTTP |
Código de erro |
Mensagem de erro |
Descrição |
|---|---|---|---|
| 400 | UnsupportedOperation | This action is not supported. | |
| 404 | Forbidden.AliasNotFound | The specified Alias is not found. | |
| 404 | Forbidden.KeyNotFound | The specified Key is not found. | |
| 409 | Rejected.Disabled | The request was rejected because the key state is Disabled. | |
| 409 | Rejected.PendingDeletion | The request was rejected because the key state is PendingDeletion. | |
| 409 | Rejected.Unavailable | The request was rejected because the key state is Unavailable. |
Consulte Códigos de Erro para uma lista completa.
Notas de versão
Consulte Notas de Versão para uma lista completa.