Funções de criptografia de DLP

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 valor BYTES serializado que é retornado por DLP_KEY_CHAIN. key precisa ser definido como ENABLED no Cloud KMS. Para informações sobre como gerar uma chave encapsulada, consulte gcloud kms encryption.
  • plaintext: o valor STRING a ser criptografado.
  • context: um valor STRING 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 valor STRING 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 valor BYTES serializado retornado por DLP_KEY_CHAIN. key precisa ser definido como ENABLED no Cloud KMS. Para informações sobre como gerar uma chave encapsulada, consulte gcloud kms encryption.
  • ciphertext: o valor STRING a ser descriptografado.
  • context: um valor STRING usado com uma chave do Cloud KMS para derivar uma chave de criptografia de dados. Para mais informações, consulte CryptoDeterministicConfig:context.
  • surrogate: um valor STRING 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 literal STRING que contém o caminho do recurso para a chave do Cloud KMS. kms_resource_name não pode ser NULL 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ções DLP_DETERMINISTIC_DECRYPT e DLP_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 literal BYTES 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= |
 *--------------------------------------*/