Cloud KMS での gRPC の使用

手動で作成した gRPC ライブラリを使用して Cloud Key Management Service を呼び出す場合は、呼び出しのメタデータかヘッダーに x-google-request-params 値を指定する必要があります。x-google-request-params を適切に使用すると、Cloud KMS リソースの適切なリージョンに呼び出しがルーティングされます。

次の表に示されているように、x-google-request-params 値をメソッドのリクエストのフィールドに設定します。

メソッド リクエスト フィールド
AsymmetricDecrypt AsymmetricDecryptRequest.name
AsymmetricSign AsymmetricSignRequest.name
CreateCryptoKey CreateCryptoKeyRequest.parent
CreateCryptoKeyVersion CreateCryptoKeyVersionRequest.parent
CreateKeyRing CreateKeyRingRequest.parent
復号 DecryptRequest.name
DestroyCryptoKeyVersion DestroyCryptoKeyVersionRequest.name
CryptoKey のバージョンを更新します。 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

リクエスト フィールドの設定

次の例は、各メソッドのリソース名を指定する場所を示しています。place-holder としてスタイル設定されたテキストは、Cloud KMS リソース ID で使用している実際の値に置き換えます。

Decrypt の例

Decrypt を呼び出す場合、リクエストの次のフィールドにデータを入力する必要があります。

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

name フィールドに割り当てられる値は、CryptoKey のリソース名です。 呼び出しを適切にルーティングするために、次の形式で呼び出しメタデータにこのリソース名を含める必要もあります。

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

CreateKeyRing の例

CreateKeyRing を呼び出す場合、リクエストの次のフィールドにデータを入力する必要があります。

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

呼び出しメタデータに、parent リソース名を含める必要もあります。

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

UpdateCryptoKey の例

UpdateCryptoKey を呼び出す場合、リクエストの次のフィールドにデータを入力する必要があります。

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

メタデータに name リソース名を含める必要もあります。name= ではなく crypto_key.name= という形式を使用します。

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

C++ を使用したメタデータの追加

C++ を使用している場合は、RPC 呼び出しを行う前に ClientContext::AddMetadata を呼び出して、適切な情報を呼び出しメタデータに追加します。

たとえば、Decrypt 呼び出しのメタデータを追加する場合は次のようにします。

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

この後、リクエストとレスポンスのプロトコル バッファとともに、通常どおりコンテキストをメソッド呼び出しに渡すことが可能です。