gRPC mit Cloud KMS verwenden

Wenn Sie manuell erstellte gRPC-Bibliotheken für Aufrufe an Cloud Key Management Service verwenden, müssen Sie in den Metadaten oder dem Header des Aufrufs einen x-google-request-params-Wert angeben. Bei ordnungsgemäßer Anwendung von x-google-request-params wird der Aufruf an die entsprechende Region Ihrer Cloud KMS-Ressourcen weitergeleitet.

Weisen Sie den x-google-request-params-Wert einem Feld in der Anfrage der Methode zu, wie in der folgenden Tabelle gezeigt.

Methode Anfragefeld
AsymmetricDecrypt AsymmetricDecryptRequest.name
AsymmetricSign AsymmetricSignRequest.name
CreateCryptoKey CreateCryptoKeyRequest.parent
CreateCryptoKeyVersion CreateCryptoKeyVersionRequest.parent
CreateKeyRing CreateKeyRingRequest.parent
Decrypt DecryptRequest.name
DestroyCryptoKeyVersion DestroyCryptoKeyVersionRequest.name
Encrypt verwendet wird. 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

Anfragefeld einstellen

In den folgenden Beispielen sehen Sie, wo der Ressourcenname in verschiedenen Methoden angegeben wird. Ersetzen Sie den als place-holder dargestellten Text durch die tatsächlichen Werte, die in Ihren Cloud KMS-Ressourcen-IDs verwendet werden.

Decrypt-Beispiel

Wenn Sie Decrypt aufrufen, müssen Sie die folgenden Felder in der Anfrage ausfüllen:

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

Der Wert, der dem Feld name zugewiesen wird, ist der Ressourcenname Ihres CryptoKey. Damit der Aufruf ordnungsgemäß weitergeleitet wird, müssen Sie diesen Ressourcennamen auf folgende Weise in die Metadaten des Aufrufs einfügen:

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

CreateKeyRing-Beispiel

Wenn Sie CreateKeyRing aufrufen, müssen Sie die folgenden Felder in der Anfrage ausfüllen:

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

Die Metadaten des Aufrufs müssen außerdem den Namen der parent-Ressource enthalten:

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

UpdateCryptoKey-Beispiel

Wenn Sie UpdateCryptoKey aufrufen, müssen Sie die folgenden Felder in der Anfrage ausfüllen:

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

Die Metadaten des Aufrufs müssen außerdem den Namen der name-Ressource enthalten: Beachten Sie, dass das Format statt name= die Anweisung crypto_key.name= verwendet.

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

Metadaten mit C++ hinzufügen

Wenn Sie C++ verwenden, rufen Sie vor dem RPC-Aufruf ClientContext::AddMetadata auf, um den Metadaten des Aufrufs die entsprechenden Informationen hinzuzufügen.

Wenn Sie Metadaten für einen Aufruf von Decrypt hinzufügen, sieht das in etwa so aus:

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

Anschließend können Sie den Kontext, zusammen mit den Anfrage- und Antwortprotokollpuffern, wie gewohnt an den Methodenaufruf übergeben.