Utilizzo di gRPC con Cloud KMS

Se utilizzi librerie gRPC create manualmente per effettuare chiamate a Cloud Key Management Service, devi specificare un valore x-google-request-params in i metadati o l'intestazione della chiamata. L'utilizzo corretto dei x-google-request-params reindirizzerà la chiamata alla regione appropriata per le risorse Cloud KMS.

Imposta il valore x-google-request-params su un campo nella richiesta del metodo come come mostrato nella tabella seguente.

Metodo Campo richiesta
AsymmetricDecrypt AsymmetricDecryptRequest.name
AsymmetricSign AsymmetricSignRequest.name
CreateCryptoKey CreateCryptoKeyRequest.parent
CreateCryptoKeyVersion CreateCryptoKeyVersionRequest.parent
CreateKeyRing CreateKeyRingRequest.parent
Decripta DecryptRequest.name
DestroyCryptoKeyVersion DestroyCryptoKeyVersionRequest.name
Cripta 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

Impostazione del campo di richiesta

Gli esempi seguenti mostrano dove specificare il nome della risorsa in vari metodi. Sostituisci il testo con stile place-holder con il valori effettivi utilizzati negli ID risorsa di Cloud KMS.

Esempio di decrittografia

Se effettui una chiamata a Decripta, devi compilare i seguenti campi nella richiesta:

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

Il valore assegnato al campo name è il nome della risorsa della tua CryptoKey. Per instradare correttamente la chiamata, devi includere anche questo nome risorsa nella metadati di chiamata, nel formato seguente:

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

Esempio CreateKeyRing

Se effettui una chiamata a CreateKeyRing, devi compilare i seguenti campi nella richiesta:

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

I metadati della chiamata devono contenere anche il nome della risorsa parent:

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

Esempio di UpdateCryptoKey

Se stai effettuando una chiamata a UpdateCryptoKey, devi compilare il seguenti campi nella tua richiesta:

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

I metadati devono contenere anche il nome della risorsa name. Prendi nota del formato usa crypto_key.name=, non name=:

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

Aggiunta di metadati utilizzando C++

Se utilizzi C++, chiama ClientContext::AddMetadata prima di effettuare la tua RPC per aggiungere le informazioni appropriate ai metadati della chiamata.

Ad esempio, se aggiungi metadati per una chiamata a Decripta:

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

Puoi quindi passare il contesto alla chiamata del metodo come di consueto, insieme ai buffer del protocollo di richiesta e risposta.