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
암호화 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/");

그런 다음 평소와 같이 요청 및 응답 프로토콜 버퍼와 함께 컨텍스트를 메서드 호출에 전달할 수 있습니다.