O GoogleSQL para BigQuery oferece suporte às seguintes funções DLP que permitem criptografia e descriptografia interoperáveis entre o BigQuery e Cloud Data Loss Prevention (Cloud DLP) usando o AES-SIV.
Lista de funções
Nome | Resumo |
---|---|
DLP_DETERMINISTIC_ENCRYPT
|
Criptografa dados com um algoritmo compatível com DLP. |
DLP_DETERMINISTIC_DECRYPT
|
Descriptografa dados criptografados por DLP. |
DLP_KEY_CHAIN
|
Recebe uma chave de criptografia de dados encapsulada pelo Cloud Key Management Service. |
DLP_DETERMINISTIC_ENCRYPT
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context)
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context, surrogate)
Descrição
Essa função deriva uma chave de criptografia de dados de key
e context
e, em seguida,
criptografa plaintext
. Opcionalmente, use surrogate
para prefixar o
resultado da criptografia.
Definições
key
: um valorBYTES
serializado que é retornado porDLP_KEY_CHAIN
.key
precisa ser definido comoENABLED
no Cloud KMS. Para informações sobre como gerar uma chave encapsulada, consulte gcloud kms encryption.plaintext
: o valorSTRING
a ser criptografado.context
: um valorSTRING
fornecido pelo usuário que é usado com uma chave do Cloud KMS para derivar uma chave de criptografia de dados. Para mais informações, consulte CryptoDeterministicConfig:context.surrogate
: um valorSTRING
que pode ser anexado à saída.
Tipos de dados retornados
STRING
Exemplo
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)
Descrição
Essa função descriptografa ciphertext
usando uma chave de criptografia derivada de key
e context
. Se quiser, use surrogate
para prefixar o resultado
de descriptografia.
Definições
key
: um valorBYTES
serializado retornado porDLP_KEY_CHAIN
.key
precisa ser definido comoENABLED
no Cloud KMS. Para informações sobre como gerar uma chave encapsulada, consulte gcloud kms encryption.ciphertext
: o valorSTRING
a ser descriptografado.context
: um valorSTRING
usado com uma chave do Cloud KMS para derivar uma chave de criptografia de dados. Para mais informações, consulte CryptoDeterministicConfig:context.surrogate
: um valorSTRING
que pode ser anexado à saída.
Tipos de dados retornados
STRING
Exemplo
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)
Descrição
É possível usar essa função em vez do argumento key
para
funções de criptografia determinísticas do DLP. Essa função permite
usar as funções de criptografia AES-SIV
sem incluir chaves plaintext
em uma consulta.
Definições
kms_resource_name
: um literalSTRING
que contém o caminho do recurso para a chave do Cloud KMS.kms_resource_name
não pode serNULL
e precisa residir na mesma região do Cloud em que essa função é executada. Esse argumento é usado para derivar a chave de criptografia de dados nas funçõesDLP_DETERMINISTIC_DECRYPT
eDLP_DETERMINISTIC_ENCRYPT
. Uma chave do Cloud KMS é semelhante ao seguinte:gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
wrapped_key
: um literalBYTES
que representa um texto secreto escolhido pelo usuário. Ele pode ter 16, 24 ou 32 bytes. Para informações sobre como gerar uma chave encapsulada, consulte gcloud kms encrypt.
Tipos de dados retornados
STRUCT
Exemplo
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= |
*--------------------------------------*/