DLP 암호화 함수

BigQuery용 GoogleSQL은 ,AES-SIV를 사용하여 BigQuery와 Cloud Data Loss Prevention(Cloud DLP) 간 상호 운용 가능한 암호화 및 복호화를 허용하는 다음 DLP 함수를 지원합니다.

함수 목록

이름 요약
DLP_DETERMINISTIC_ENCRYPT DLP 호환 알고리즘으로 데이터를 암호화합니다.
DLP_DETERMINISTIC_DECRYPT DLP 암호화 데이터를 복호화합니다.
DLP_KEY_CHAIN Cloud Key Management Service로 래핑된 데이터 암호화 키를 가져옵니다.

DLP_DETERMINISTIC_ENCRYPT

DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context)
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context, surrogate)

Description(설명)

이 함수는 keycontext에서 데이터 암호화 키를 파생한 다음 plaintext를 암호화합니다. 필요한 경우 surrogate를 사용하여 암호화 결과 앞에 추가할 수 있습니다.

정의

  • key: DLP_KEY_CHAIN에서 반환된 직렬화된 BYTES 값입니다. Cloud KMS에서 keyENABLED로 설정해야 합니다. 래핑된 키를 생성하는 방법은 gcloud kms encrypt를 참조하세요.
  • plaintext: 암호화할 STRING 값입니다.
  • context: 데이터 암호화 키를 파생하기 위해 Cloud KMS 키와 함께 사용되는 사용자 제공 STRING 값입니다. 자세한 내용은 CryptoDeterministicConfig:context를 참조하세요.
  • surrogate: 출력 앞에 추가할 수 있는 STRING 값입니다.

반환 데이터 유형

STRING

예시

SELECT
  DLP_DETERMINISTIC_ENCRYPT(
    DLP_KEY_CHAIN(
      'gcp-kms://projects/my_project/locations/us-central1/keyRings/keyringtest/cryptoKeys/testkey',
      b'\123\044\290\876....'),
    plaintext,
    '',
    'test') AS results

/*--------------------------------------*
 | results                              |
 +--------------------------------------+
 | AXDEwUnZsTf/NzxoHaC8AZXcawWuma7L39A= |
 *--------------------------------------*/

DLP_DETERMINISTIC_DECRYPT

DLP_DETERMINISTIC_DECRYPT(key, ciphertext, context)
DLP_DETERMINISTIC_DECRYPT(key, ciphertext, context, surrogate)

Description(설명)

이 함수는 keycontext에서 파생된 암호화 키를 사용하여 ciphertext를 복호화합니다. 필요한 경우 surrogate를 사용하여 복호화 결과 앞에 추가할 수 있습니다.

정의

  • key: DLP_KEY_CHAIN에서 반환된 직렬화된 BYTES 값입니다. Cloud KMS에서 keyENABLED로 설정해야 합니다. 래핑된 키를 생성하는 방법은 gcloud kms encrypt를 참조하세요.
  • ciphertext: 복호화할 STRING 값입니다.
  • context: 데이터 암호화 키를 파생하기 위해 Cloud KMS 키와 함께 사용되는 STRING 값입니다. 자세한 내용은 CryptoDeterministicConfig:context를 참조하세요.
  • surrogate: 출력 앞에 추가할 수 있는 STRING 값입니다.

반환 데이터 유형

STRING

예시

SELECT
  DLP_DETERMINISTIC_DECRYPT(
    DLP_KEY_CHAIN(
      'gcp-kms://projects/myproject/locations/us-central1/keyRings/keyringtest/cryptoKeys/testkey',
      b'\123\044\290\876....'),
    'your_surrogate(36)AdFnA6r5doSDWxPwW/W4vBaa4iOvDagC8z8=',
    '',
    'your_surrogate') AS results

/*-----------*
 | results   |
 +-----------+
 | plaintext |
 *-----------*/

DLP_KEY_CHAIN

DLP_KEY_CHAIN(kms_resource_name, wrapped_key)

Description(설명)

DLP 확정적 암호화 함수에 key 인수 대신 이 함수를 사용할 수 있습니다. 이 함수를 사용하면 쿼리에 plaintext 키를 포함하지 않고도 AES-SIV 암호화 함수를 사용할 수 있습니다.

정의

  • kms_resource_name: Cloud KMS 키의 리소스 경로가 포함된 STRING 리터럴입니다. kms_resource_nameNULL이 될 수 없으며 이 함수가 실행되는 동일한 Cloud 리전에 있어야 합니다. 이 인수는 DLP_DETERMINISTIC_DECRYPTDLP_DETERMINISTIC_ENCRYPT 함수에서 데이터 암호화 키를 파생하는 데 사용됩니다. Cloud KMS 키는 다음과 같습니다.

    gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
    
  • wrapped_key: 사용자가 선택한 보안 비밀 텍스트를 나타내는 BYTES 리터럴입니다. 이 보안 비밀 텍스트는 16, 24, 32바이트일 수 있습니다. 래핑된 키를 생성하는 방법은 gcloud kms encrypt를 참조하세요.

반환 데이터 유형

STRUCT

예시

SELECT
  DLP_DETERMINISTIC_ENCRYPT(
    DLP_KEY_CHAIN(
      'gcp-kms://projects/my_project/locations/us-central1/keyRings/keyringtest/cryptoKeys/testkey',
      b'\123\044\290\876....'),
    plaintext,
    '',
    'test') AS results

/*--------------------------------------*
 | results                              |
 +--------------------------------------+
 | AXDEwUnZsTf/NzxoHaC8AZXcawWuma7L39A= |
 *--------------------------------------*/