Cloud KMS での gRPC の使用

手動で作成した gRPC ライブラリを使用して Cloud KMS を呼び出す場合は、呼び出しのメタデータかヘッダーに 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
Decrypt DecryptRequest.name
DestroyCryptoKeyVersion DestroyCryptoKeyVersionRequest.name
Encrypt 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

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

次の例は、各メソッドのリソース名を指定する場所を示しています。

Decrypt の例

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

name: 'projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]/'
ciphertext: 'iQALWM/r6alAxQm0VQe3...'

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

x-goog-request-params: 'name=projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]/'

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]/'
field_mask: ...

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

x-goog-request-params: 'crypto_key.name=projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]/'

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

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

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

context.AddMetadata("x-goog-request-params",
                    fmt.Sprintf("%s=%v",
                                "name",
                                "projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]/"))

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

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...