Cloud KMS での gRPC の使用

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

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

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

次の例は、各メソッドのリソース名を指定する場所を示しています。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/");

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