Funciones de encriptación de DLP

GoogleSQL para BigQuery admite las siguientes funciones de DLP que permiten la encriptación y desencriptación interoperables entre BigQuery y Cloud Data Loss Prevention (Cloud DLP) , medianteAES‐SIV.

Lista de funciones

Nombre Resumen
DLP_DETERMINISTIC_ENCRYPT Encripta datos con un algoritmo compatible de DLP.
DLP_DETERMINISTIC_DECRYPT Desencripta los datos encriptados con DLP.
DLP_KEY_CHAIN Obtiene una clave de encriptación de datos unida a Cloud Key Management Service.

DLP_DETERMINISTIC_ENCRYPT

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

Descripción

Esta función deriva una clave de encriptación de datos de key y context y, luego, encripta plaintext. De manera opcional, puedes usar surrogate para anteponer el resultado de la encriptación.

Definiciones

  • key: Un valor BYTES serializado que muestra DLP_KEY_CHAIN. key se debe configurar como ENABLED en Cloud KMS. Para obtener información sobre cómo generar una clave unida, consulta gcloud kms encryption.
  • plaintext: El valor STRING que se encriptará.
  • context: Un valor STRING proporcionado por el usuario que se usa con una clave de Cloud KMS para derivar una clave de encriptación de datos. Para obtener más información, consulta CryptoDeterministicConfig:context.
  • surrogate: Un valor STRING que puedes anteponer al resultado.

Tipo de datos mostrados

STRING

Ejemplo

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)

Descripción

Esta función desencripta ciphertext mediante una clave de encriptación derivada de key y context. De manera opcional, puedes usar surrogate para anteponer el resultado de la desencriptación.

Definiciones

  • key: Un valor BYTES serializado mostrado por DLP_KEY_CHAIN. key se debe configurar como ENABLED en Cloud KMS. Para obtener información sobre cómo generar una clave unida, consulta gcloud kms encryption.
  • ciphertext: El valor de STRING que se desencriptará.
  • context: Un valor STRING que se usa con una clave de Cloud KMS para derivar una clave de encriptación de datos. Para obtener más información, consulta CryptoDeterministicConfig:context.
  • surrogate: Un valor STRING que puedes anteponer al resultado.

Tipo de datos mostrados

STRING

Ejemplo

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)

Descripción

Puedes usar esta función en lugar del argumento key para las funciones de encriptación deterministas de DLP. Esta función te permite usar las funciones de encriptación AES-SIV sin incluir claves plaintext en una consulta.

Definiciones

  • kms_resource_name: es un literal STRING que contiene la ruta de acceso al recurso a la clave de Cloud KMS. kms_resource_name no puede ser NULL y debe residir en la misma región de Cloud donde se ejecuta esta función. Este argumento se usa para derivar la clave de encriptación de datos en las funciones DLP_DETERMINISTIC_DECRYPT y DLP_DETERMINISTIC_ENCRYPT. Una clave de Cloud KMS se ve así:

    gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
    
  • wrapped_key: Es un literal de BYTES que representa un texto secreto que elige el usuario. Este texto del secreto puede ser de 16, 24 o 32 bytes. Para obtener información sobre cómo generar una clave unida, consulta gcloud kms encryption.

Tipo de datos mostrados

STRUCT

Ejemplo

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= |
 *--------------------------------------*/