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

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