Menggunakan gRPC dengan Cloud KMS

Jika menggunakan library gRPC yang dibuat secara manual untuk melakukan panggilan ke Cloud Key Management Service, Anda harus menentukan nilai x-google-request-params dalam metadata atau header panggilan. Penggunaan x-google-request-params yang tepat akan merutekan panggilan ke region yang sesuai untuk resource Cloud KMS Anda.

Tetapkan nilai x-google-request-params ke kolom dalam permintaan metode seperti yang ditunjukkan dalam tabel berikut.

Metode Kolom permintaan
AsymmetricDecrypt AsymmetricDecryptRequest.name
AsymmetricSign AsymmetricSignRequest.name
CreateCryptoKey CreateCryptoKeyRequest.parent
CreateCryptoKeyVersion CreateCryptoKeyVersionRequest.parent
CreateKeyRing CreateKeyRingRequest.parent
Dekripsi DecryptRequest.name
DestroyCryptoKeyVersion DestroyCryptoKeyVersionRequest.name
Enkripsi EncryptRequest.name
GetCryptoKey GetCryptoKeyRequest.name
GetCryptoKeyVersion GetCryptoKeyVersionRequest.name
GetKeyRing GetKeyRingRequest.name
GetPublicKey GetPublicKeyRequest.name
ListCryptoKeyVersions ListCryptoKeyVersionsRequest.parent
ListCryptoKeys ListCryptoKeysRequest.parent
ListKeyRings ListKeyRingsRequest.parent
RestoreCryptoKeyVersion RestoreCryptoKeyVersionRequest.name
UpdateCryptoKey UpdateCryptoKeyRequest.crypto_key.name
UpdateCryptoKeyPrimaryVersion UpdateCryptoKeyPrimaryVersionRequest.name
UpdateCryptoKeyVersion UpdateCryptoKeyVersionRequest.crypto_key_version.name

Menetapkan kolom permintaan

Contoh berikut menunjukkan tempat untuk menentukan nama resource dalam berbagai metode. Ganti teks yang ditata gayanya sebagai place-holder dengan nilai sebenarnya yang digunakan dalam ID resource Cloud KMS Anda.

Contoh dekripsi

Jika melakukan panggilan ke Dekripsi, Anda harus mengisi kolom berikut dalam permintaan:

name: 'projects/project-id/locations/location/keyRings/key-ring/cryptoKeys/key-name/'
ciphertext: 'iQALWM/r6alAxQm0VQe3...'

Nilai yang ditetapkan ke kolom name adalah nama resource CryptoKey Anda. Untuk merutekan panggilan dengan benar, Anda juga harus menyertakan nama resource ini dalam metadata panggilan, dalam bentuk berikut:

x-goog-request-params: 'name=projects/project-id/locations/location/keyRings/key-ring/cryptoKeys/key-name/'

Contoh CreateKeyRing

Jika melakukan panggilan ke CreateKeyRing, Anda harus mengisi kolom berikut dalam permintaan:

parent: 'projects/project-id/locations/location/'
key_ring_id: 'myKeyRing'
...

Metadata panggilan juga harus berisi nama resource parent:

x-goog-request-params: 'parent=projects/project-id/locations/location/'

Contoh UpdateCryptoKey

Jika melakukan panggilan ke UpdateCryptoKey, Anda harus mengisi kolom berikut dalam permintaan:

name: 'projects/project-id/locations/location/keyRings/key-ring/cryptoKeys/key-name/'
field_mask: ...

Metadata juga harus berisi nama resource name. Perhatikan bahwa format menggunakan crypto_key.name=, bukan name=:

x-goog-request-params: 'crypto_key.name=projects/project-id/locations/location/keyRings/key-ring/cryptoKeys/key-name/'

Menambahkan metadata menggunakan C++

Jika Anda menggunakan C++, panggil ClientContext::AddMetadata sebelum melakukan panggilan RPC untuk menambahkan informasi yang sesuai ke metadata panggilan.

Misalnya, jika Anda menambahkan metadata untuk panggilan ke Decrypt:

context.AddMetadata("x-goog-request-params",
                    "name=projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name/");

Kemudian, Anda dapat meneruskan konteks ke panggilan metode seperti biasa, beserta buffer protokol permintaan dan respons.