Génère une clé de données (DK) aléatoire pour le chiffrement local des données.
Description de l'opération
-
Pour plus de détails sur les stratégies d'accès qui doivent être accordées à un utilisateur ou un rôle Resource Access Management (RAM) pour appeler cette opération, consultez Contrôle d'accès.
-
Vous pouvez appeler cette opération via une passerelle partagée ou une passerelle dédiée. Pour plus d'informations, consultez Alibaba Cloud SDK.
Passerelle partagée : accédez à KMS via Internet ou via un point de terminaison VPC. Cette méthode nécessite l'activation de l'accès au réseau public. Pour plus d'informations, consultez Clés d'accès dans une instance KMS via Internet.
Passerelle dédiée : accédez à KMS via le point de terminaison privé KMS (<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com).
Limites de QPS
Appels via une passerelle partagée : la limite de QPS pour un seul utilisateur est de 1 000 appels par seconde. Si vous dépassez cette limite, les appels d'API sont limités, ce qui peut affecter votre activité. Appelez cette opération à un rythme raisonnable.
Appels via une passerelle dédiée : la limite de QPS pour un seul utilisateur est déterminée par les spécifications de performances de votre instance KMS. Pour plus d'informations, consultez Données de performance.
Détails
Cette opération génère une clé de données (DK) aléatoire, la chiffre à l'aide de la clé principale client (CMK) que vous spécifiez, et renvoie à la fois le texte en clair et le texte chiffré de la DK. Utilisez la DK en texte clair pour chiffrer les données localement en dehors de KMS. Lorsque vous stockez les données chiffrées, stockez également le texte chiffré de la DK. Vous pouvez récupérer la DK en texte clair à partir du champ Plaintext et la DK en texte chiffré à partir du champ CiphertextBlob dans la réponse.
La CMK spécifiée dans la requête est uniquement utilisée pour chiffrer la DK et n'a aucun effet sur la génération de la DK. KMS n'enregistre ni ne stocke la DK générée aléatoirement. Vous êtes responsable de la persistance du texte chiffré de la DK.
Utilisez la procédure suivante pour chiffrer les données localement :
-
Appelez l'opération GenerateDataKey pour obtenir une DK pour le chiffrement des données.
-
Utilisez la DK en texte clair (renvoyée dans le champ Plaintext de la réponse) pour chiffrer les données localement, puis purgez la DK en texte clair de la mémoire.
-
Stockez le texte chiffré de la DK (renvoyé dans le champ CiphertextBlob de la réponse) avec les données chiffrées localement.
Pour déchiffrer les données localement :
Appelez l'opération Decrypt pour déchiffrer le texte chiffré de la DK stocké localement. Cette opération renvoie la DK en texte clair.
Utilisez la DK en texte clair pour déchiffrer les données localement, puis purgez la DK en texte clair de la mémoire.
Cette rubrique fournit un exemple de génération d'une DK aléatoire pour la clé avec l'identifiant key-hzz630494463ejqjx****.
Testez maintenant
Testez cette API dans OpenAPI Explorer, sans signature manuelle. Les appels réussis génèrent automatiquement du code SDK correspondant à vos paramètres. Téléchargez-le avec une sécurité intégrée des identifiants pour une utilisation locale. Testez cette API dans OpenAPI Explorer, sans signature manuelle. Les appels réussis génèrent automatiquement du code SDK correspondant à vos paramètres. Téléchargez-le avec une sécurité intégrée des identifiants pour une utilisation locale.
Test
Autorisation RAM
|
kms:GenerateDataKey |
get |
*Clé.
|
|
Aucune |
Paramètres de requête
|
Paramètre |
Type |
Requis |
Description |
Exemple |
| KeyId |
string |
Oui |
L'identifiant de la clé. Vous pouvez également spécifier un alias de clé ou un Amazon Resource Name (ARN) de clé. Pour plus d'informations sur les alias, consultez Gérer les alias de clé. Remarque
Pour accéder à une clé dans un autre compte Alibaba Cloud, vous devez spécifier l'ARN de la clé. Le format de l'ARN de la clé est acs:kms:${region}:${account}:key/${keyid}. |
key-hzz630494463ejqjx**** |
| KeySpec |
string |
Non |
La longueur de la clé de données (DK) à générer. Valeurs valides :
Remarque
Utilisez KeySpec ou NumberOfBytes pour spécifier la longueur de la DK. Si aucun n'est spécifié, KMS génère une DK de 256 bits. Si les deux sont spécifiés, KMS ignore le paramètre KeySpec. |
AES_256 |
| NumberOfBytes |
integer |
Non |
La longueur de la clé de données (DK) à générer, en octets. Valeurs valides : 1 à 1024. Valeur par défaut :
|
256 |
| EncryptionContext |
object |
Non |
Une chaîne JSON de paires clé-valeur. Si vous spécifiez ce paramètre, vous devez fournir le même paramètre lors de l'appel de l'opération Decrypt. Pour plus d'informations, consultez EncryptionContext. |
{"Example":"Example"} |
| DryRun |
string |
Non |
Indique si le mode DryRun doit être activé.
Le mode DryRun est utilisé pour tester les appels d'API, vérifier que vous disposez des autorisations requises sur les ressources concernées et vérifier si les paramètres de requête sont configurés correctement. Lorsque le mode DryRun est activé, KMS renvoie toujours un échec avec une raison. Les raisons d'échec possibles incluent :
|
false |
| Recipient |
string |
Non |
{ "AttestationDocument":"base64-encoded-attestion-document", "KeyEncryptionAlgorithm":"RSAES_OAEP_SHA_256" } |
Pour plus de détails sur les paramètres de requête courants, consultez Paramètres courants.
Éléments de réponse
|
Élément |
Type |
Description |
Exemple |
|
object |
|||
| KeyVersionId |
string |
L'identifiant de la version de la clé. L'identifiant globalement unique de la version de la CMK. |
2ab1a983-7072-4bbc-a582-584b5bd8**** |
| KeyId |
string |
L'identifiant de la clé. Si le paramètre KeyId dans la requête utilise un alias de clé ou un ARN de clé, l'identifiant de la clé est également renvoyé dans la réponse. |
key-hzz630494463ejqjx**** |
| CiphertextBlob |
string |
Le texte chiffré de la clé de données (DK) chiffré par la version principale de la clé spécifiée. |
ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS**** |
| RequestId |
string |
L'identifiant de la requête. L'identifiant unique généré par Alibaba Cloud pour cette requête. Vous pouvez utiliser cet identifiant pour dépanner et localiser les problèmes. |
7021b6ec-4be7-4d3c-8a68-1e85d4d515a0 |
| Plaintext |
string |
L'encodage Base64 du texte en clair de la clé de données (DK). |
QmFzZTY0IGVuY29kZWQgcGxhaW50**** |
| CiphertextForRecipient |
string |
NIahY6pgjK4ZMP2R0EmsmBqntrv0AI2rcDyU7Su6uOT9Le7EOvlCpjHJfr9z3M0vkfulQoyuETmKSpYDfixE3auE4MwxloT6D9Gfsk6hm5FV2iAxL//Ms2kLv6K4z6yGi7lKm2yjX4***== |
Exemples
JSON format
{
"KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
"KeyId": "key-hzz630494463ejqjx****",
"CiphertextBlob": "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****",
"RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0",
"Plaintext": "QmFzZTY0IGVuY29kZWQgcGxhaW50****",
"CiphertextForRecipient": "NIahY6pgjK4ZMP2R0EmsmBqntrv0AI2rcDyU7Su6uOT9Le7EOvlCpjHJfr9z3M0vkfulQoyuETmKSpYDfixE3auE4MwxloT6D9Gfsk6hm5FV2iAxL//Ms2kLv6K4z6yGi7lKm2yjX4***=="
}
Codes d'erreur
|
Code de statut HTTP |
Code d'erreur |
Message d'erreur |
Description |
|---|---|---|---|
| 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. |
Consultez Codes d'erreur pour la liste complète.
Notes de version
Consultez Notes de version pour la liste complète.