All Products
Search
Document Center

Key Management Service:GenerateDataKey

Last Updated:Jun 10, 2026

Menghasilkan kunci data acak untuk enkripsi envelope. Kunci data dikembalikan dalam bentuk plaintext dan ciphertext.

Deskripsi operasi

  • Untuk informasi tentang izin yang diperlukan untuk memanggil operasi ini, lihat Resource Access Management.

  • Operasi ini dapat dipanggil menggunakan gateway bersama atau gateway khusus. Untuk informasi selengkapnya, lihat Alibaba Cloud SDK.

    • Gateway bersama: Anda dapat mengakses KMS melalui Internet atau melalui VPC. Untuk mengakses KMS melalui Internet, Anda harus mengaktifkan endpoint publik. Untuk informasi selengkapnya, lihat Akses kunci di instance KMS melalui Internet.

    • Gateway khusus: Anda dapat mengakses KMS dengan menggunakan endpoint privat KMS (<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com).

Batas QPS

  • Jika Anda menggunakan gateway bersama untuk memanggil operasi ini, batas queries per second (QPS) per pengguna adalah 1.000. Jika batas tersebut terlampaui, panggilan API akan dibatasi, yang dapat memengaruhi bisnis Anda. Kami merekomendasikan Anda memanggil operasi ini dengan kecepatan yang wajar.

  • Jika Anda menggunakan gateway khusus untuk memanggil operasi ini, batas QPS per pengguna bergantung pada kinerja komputasi instance KMS Anda. Untuk informasi selengkapnya, lihat Metrik kinerja.

Deskripsi

Operasi ini menghasilkan kunci data acak, mengenkripsi kunci data tersebut dengan menggunakan customer master key (CMK) yang ditentukan, dan mengembalikan plaintext serta ciphertext dari kunci data. Anda dapat menggunakan plaintext kunci data untuk mengenkripsi data secara lokal dan di luar KMS. Ketika Anda menyimpan data yang dienkripsi, Anda juga harus menyimpan ciphertext kunci data. Anda dapat memperoleh plaintext kunci data dari field Plaintext dan ciphertext kunci data dari field CiphertextBlob dalam respons.

CMK yang ditentukan dalam permintaan hanya digunakan untuk mengenkripsi kunci data. CMK tidak terlibat dalam pembuatan kunci data. KMS tidak mencatat atau menyimpan kunci data yang dibuat secara acak. Anda bertanggung jawab atas persistensi ciphertext kunci data.

Kami merekomendasikan Anda melakukan langkah-langkah berikut untuk mengenkripsi data secara lokal:

1. Panggil operasi GenerateDataKey untuk memperoleh kunci data untuk enkripsi data.

2. Gunakan plaintext kunci data yang dikembalikan dalam field Plaintext dari respons untuk mengenkripsi data secara lokal. Kemudian, hapus plaintext kunci data dari memori.

3. Simpan ciphertext kunci data yang dikembalikan dalam field CiphertextBlob dari respons bersama dengan data yang dienkripsi.

Untuk mendekripsi data secara lokal:

  • Panggil operasi Decrypt untuk mendekripsi ciphertext kunci data yang tersimpan. Operasi ini mengembalikan plaintext kunci data.

  • Gunakan plaintext kunci data untuk mendekripsi data secara lokal. Kemudian, hapus plaintext kunci data dari memori.

Topik ini memberikan contoh cara menghasilkan kunci data acak untuk kunci dengan ID key-hzz630494463ejqjx****.

Coba sekarang

Coba API ini di OpenAPI Explorer tanpa perlu penandatanganan manual. Panggilan yang berhasil akan secara otomatis menghasilkan contoh kode SDK sesuai dengan parameter Anda. Unduh kode tersebut dengan kredensial bawaan yang aman untuk penggunaan lokal.

Test

RAM authorization

Tidak ada otorisasi untuk operasi ini. Jika Anda mengalami masalah saat menjalankan operasi ini, hubungi dukungan teknis.

Parameter permintaan

Parameter

Type

Required

Description

Example

KeyId

string

Yes

ID kunci. Anda juga dapat menentukan alias atau Alibaba Cloud Resource Name (ARN) dari kunci. Untuk informasi selengkapnya tentang alias, lihat Mengelola alias.

Catatan

Ketika Anda mengakses kunci yang dimiliki oleh akun Alibaba Cloud lain, Anda harus menentukan ARN dari kunci tersebut. ARN kunci memiliki format berikut: acs:kms:${region}:${account}:key/${keyid}.

key-hzz630494463ejqjx****

KeySpec

string

No

Panjang kunci data yang ingin Anda hasilkan. Nilai yang valid:

  • AES_256: kunci simetris 256-bit.

  • AES_128: kunci simetris 128-bit.

Catatan

Kami merekomendasikan Anda menggunakan parameter KeySpec atau NumberOfBytes untuk menentukan panjang kunci data. Jika Anda tidak menentukan salah satu dari parameter tersebut, KMS akan menghasilkan kunci data 256-bit. Jika Anda menentukan kedua parameter tersebut, KMS akan mengabaikan parameter KeySpec.

AES_256

NumberOfBytes

integer

No

Panjang kunci data yang ingin Anda hasilkan. Satuan: byte.

Nilai yang valid: 1 hingga 1024.

Nilai default:

  • Jika Anda menetapkan KeySpec ke AES_256, nilai default dari NumberOfBytes adalah 32.

  • Jika Anda menetapkan KeySpec ke AES_128, nilai default dari NumberOfBytes adalah 16.

256

EncryptionContext

object

No

String JSON yang terdiri dari pasangan kunci-nilai.

Jika Anda menentukan parameter ini, Anda juga harus menentukan parameter yang sama ketika memanggil operasi Decrypt. Untuk informasi selengkapnya, lihat EncryptionContext.

{"Example":"Example"}

DryRun

string

No

Menentukan apakah akan mengaktifkan mode dry run. Nilai yang valid:

  • true: mengaktifkan mode dry run.

  • false (default): menonaktifkan mode dry run.

Mode dry run digunakan untuk menguji panggilan API. Mode ini memverifikasi apakah Anda memiliki izin untuk mengakses resource yang ditentukan dan apakah parameter permintaan valid. Jika Anda mengaktifkan mode dry run, KMS akan selalu mengembalikan respons kegagalan beserta alasan kegagalannya. Alasan kegagalan tersebut meliputi:

  • DryRunOperationError: Permintaan akan berhasil jika parameter DryRun tidak ditentukan.

  • ValidationError: Parameter yang ditentukan dalam permintaan tidak valid.

  • AccessDeniedError: Anda tidak memiliki otorisasi untuk melakukan operasi ini pada resource KMS.

false

Untuk informasi tentang parameter permintaan umum, lihat Common parameters.

Elemen respons

Element

Type

Description

Example

object

KeyVersionId

string

Pengidentifikasi unik global dari versi kunci.

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

KeyId

string

ID kunci. Jika Anda menentukan alias kunci atau ARN kunci pada parameter KeyId dari permintaan, ID kunci juga akan dikembalikan dalam respons.

key-hzz630494463ejqjx****

CiphertextBlob

string

Ciphertext dari kunci data yang dienkripsi oleh versi utama dari kunci yang ditentukan.

ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****

RequestId

string

ID permintaan, yang merupakan pengidentifikasi unik yang dihasilkan oleh Alibaba Cloud untuk permintaan tersebut. Anda dapat menggunakan ID permintaan untuk memecahkan masalah.

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

Plaintext

string

Plaintext kunci data dengan encoding Base64.

QmFzZTY0IGVuY29kZWQgcGxhaW50****

Contoh

Respons sukses

JSONformat

{
  "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
  "KeyId": "key-hzz630494463ejqjx****",
  "CiphertextBlob": "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****",
  "RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0",
  "Plaintext": "QmFzZTY0IGVuY29kZWQgcGxhaW50****"
}

Kode kesalahan

HTTP status code

Error code

Error message

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.

Lihat Error Codes untuk daftar lengkap.

Catatan rilis

Lihat Release Notes untuk daftar lengkap.