Tous les produits
Search
Centre de documentation

:GenerateDataKey

Dernière mise à jour :Oct 03, 2026

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 :

  1. Appelez l'opération GenerateDataKey pour obtenir une DK pour le chiffrement des données.

  2. 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.

  3. 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

Le tableau ci-dessous décrit les autorisations nécessaires pour appeler cette API. Vous pouvez les définir dans une politique Resource Access Management (RAM). Les colonnes du tableau sont détaillées ci-dessous :

  • Action : les actions peuvent être utilisées dans l'élément Action des instructions de politique de permissions RAM pour accorder les autorisations nécessaires à l'exécution de l'opération.

  • API : l'API que vous pouvez appeler pour exécuter l'action.

  • Niveau d'accès : le niveau d'accès prédéfini accordé pour chaque API. Valeurs valides : create, list, get, update et delete.

  • Type de ressource : le type de ressource qui prend en charge l'autorisation pour exécuter l'action. Il indique si l'action prend en charge les permissions au niveau de la ressource. La ressource spécifiée doit être compatible avec l'action. Sinon, la politique sera inefficace.

    • Pour les API avec permissions au niveau de la ressource, les types de ressource requis sont marqués d'un astérisque (*). Spécifiez l'Alibaba Cloud Resource Name (ARN) correspondant dans l'élément Resource de la politique.

    • Pour les API sans permissions au niveau de la ressource, la valeur All Resources est affichée. Utilisez un astérisque (*) dans l'élément Resource de la politique.

  • Clé de condition : les clés de condition définies par le service. La clé permet un contrôle granulaire, applicable aux actions seules ou aux actions associées à des ressources spécifiques. En plus des clés de condition propres au service, Alibaba Cloud fournit un ensemble de clés de condition communes applicables à tous les services pris en charge par RAM.

  • Action dépendante : les actions dépendantes requises pour exécuter l'action. Pour mener à bien l'opération, l'utilisateur RAM ou le rôle RAM doit disposer des permissions pour toutes les actions dépendantes.

kms:GenerateDataKey

get

*Clé.

acs:kms:{#regionId}:{#accountId}:key/{#KeyId}

  • kms:tag
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 :

  • AES_256 : une clé symétrique de 256 bits.

  • AES_128 : une clé symétrique de 128 bits.

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 :

  • Lorsque KeySpec est défini sur AES_256, la valeur par défaut de NumberOfBytes est 32.

  • Lorsque KeySpec est défini sur AES_128, la valeur par défaut de NumberOfBytes est 16.

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é.

  • true : activé.

  • false (par défaut) : désactivé.

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 :

  • DryRunOperationError : la requête réussirait si le paramètre DryRun n'était pas défini.

  • ValidationError : un paramètre spécifié dans la requête n'est pas valide.

  • AccessDeniedError : vous n'avez pas l'autorisation d'effectuer l'opération sur la ressource KMS.

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.