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 valorBYTES
serializado que muestraDLP_KEY_CHAIN
.key
se debe configurar comoENABLED
en Cloud KMS. Para obtener información sobre cómo generar una clave unida, consulta gcloud kms encryption.plaintext
: El valorSTRING
que se encriptará.context
: Un valorSTRING
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 valorSTRING
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 valorBYTES
serializado mostrado porDLP_KEY_CHAIN
.key
se debe configurar comoENABLED
en Cloud KMS. Para obtener información sobre cómo generar una clave unida, consulta gcloud kms encryption.ciphertext
: El valor deSTRING
que se desencriptará.context
: Un valorSTRING
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 valorSTRING
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 literalSTRING
que contiene la ruta de acceso al recurso a la clave de Cloud KMS.kms_resource_name
no puede serNULL
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 funcionesDLP_DETERMINISTIC_DECRYPT
yDLP_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 deBYTES
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= |
*--------------------------------------*/