Yandex Cloud
Search
Contact UsTry it for free
  • Customer Stories
  • Documentation
  • Blog
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • AI for business
    • Security
    • DevOps tools
    • Serverless
    • Monitoring & Resources
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
    • Price calculator
    • Pricing plans
  • Customer Stories
  • Documentation
  • Blog
© 2025 Direct Cursus Technology L.L.C.
Yandex Key Management Service
  • Getting started
  • Access management
  • Pricing policy
  • Terraform reference
    • Authentication with the API
      • Overview
        • Overview
        • Encrypt
        • Decrypt
        • ReEncrypt
        • GenerateDataKey
  • Monitoring metrics
  • Audit Trails events
  • FAQ

In this article:

  • gRPC request
  • GenerateDataKeyRequest
  • GenerateDataKeyResponse
  1. API reference
  2. gRPC
  3. SymmetricCrypto
  4. GenerateDataKey

Key Management Service API, gRPC: SymmetricCryptoService.GenerateDataKey

Written by
Yandex Cloud
Updated at December 9, 2025
  • gRPC request
  • GenerateDataKeyRequest
  • GenerateDataKeyResponse

Generates a new symmetric data encryption key (not a KMS key) and returns
the generated key as plaintext and as ciphertext encrypted with the specified symmetric KMS key.

gRPC requestgRPC request

rpc GenerateDataKey (GenerateDataKeyRequest) returns (GenerateDataKeyResponse)

GenerateDataKeyRequestGenerateDataKeyRequest

{
  "key_id": "string",
  "version_id": "string",
  "aad_context": "bytes",
  "data_key_spec": "SymmetricAlgorithm",
  "skip_plaintext": "bool"
}

Field

Description

key_id

string

Required field. ID of the symmetric KMS key that the generated data key should be encrypted with.

The maximum string length in characters is 50.

version_id

string

ID of the key version to encrypt the generated data key with.
Defaults to the primary version if not specified.

The maximum string length in characters is 50.

aad_context

bytes

Additional authenticated data (AAD context), optional.
If specified, this data will be required for decryption with the SymmetricDecryptRequest.
Should be encoded with base64.

The maximum string length in characters is 8192.

data_key_spec

enum SymmetricAlgorithm

Encryption algorithm and key length for the generated data key.

  • AES_128: AES algorithm with 128-bit keys.
  • AES_192: AES algorithm with 192-bit keys.
  • AES_256: AES algorithm with 256-bit keys.
  • AES_256_HSM: AES algorithm with 256-bit keys hosted by HSM
  • GOST_R_3412_2015_K: GOST R 34.12-2015 Kuznyechik algorithm

skip_plaintext

bool

If true, the method won't return the data key as plaintext.
Default value is false.

GenerateDataKeyResponseGenerateDataKeyResponse

{
  "key_id": "string",
  "version_id": "string",
  "data_key_plaintext": "bytes",
  "data_key_ciphertext": "bytes"
}

Field

Description

key_id

string

ID of the symmetric KMS key that was used to encrypt the generated data key.

version_id

string

ID of the key version that was used for encryption.

data_key_plaintext

bytes

Generated data key as plaintext.
The field is empty, if the GenerateDataKeyRequest.skip_plaintext parameter
was set to true.

data_key_ciphertext

bytes

The encrypted data key.

Was the article helpful?

Previous
ReEncrypt
Next
Overview
© 2025 Direct Cursus Technology L.L.C.