Funzioni di crittografia DLP

GoogleSQL per BigQuery supporta le seguenti funzioni DLP che consentono la crittografia e la decriptazione interoperabili tra BigQuery e Cloud Data Loss Prevention (Cloud DLP) utilizzando AES-SIV.

Elenco funzioni

Nome Riepilogo
DLP_DETERMINISTIC_ENCRYPT Cripta i dati con un algoritmo compatibile con DLP.
DLP_DETERMINISTIC_DECRYPT Decripta i dati criptati con DLP.
DLP_KEY_CHAIN Recupera una chiave di crittografia dei dati con wrapping da Cloud Key Management Service.

DLP_DETERMINISTIC_ENCRYPT

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

Description

Questa funzione ricava una chiave di crittografia dei dati da key e context e poi cripta plaintext. Facoltativamente, puoi utilizzare surrogate per anteporre il risultato della crittografia.

Definizioni

  • key: un valore BYTES serializzato restituito da DLP_KEY_CHAIN. key deve essere impostato su ENABLED in Cloud KMS. Per informazioni su come generare una chiave con wrapping, vedi gcloud kms encryption.
  • plaintext: il valore STRING da criptare.
  • context: un valore STRING fornito dall'utente, utilizzato con una chiave Cloud KMS per ricavare una chiave di crittografia dei dati. Per ulteriori informazioni, consulta CryptoDeterministicConfig:context.
  • surrogate: un valore STRING che puoi anteporre all'output.

Tipo di dati restituiti

STRING

Esempio

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

Questa funzione decripta ciphertext utilizzando una chiave di crittografia derivata da key e context. Facoltativamente, puoi utilizzare surrogate per anteporre il risultato della decrittografia.

Definizioni

  • key: un valore BYTES serializzato restituito da DLP_KEY_CHAIN. key deve essere impostato su ENABLED in Cloud KMS. Per informazioni su come generare una chiave con wrapping, vedi gcloud kms encryption.
  • ciphertext: il valore STRING da decriptare.
  • context: un valore STRING utilizzato con una chiave Cloud KMS per ricavare una chiave di crittografia dei dati. Per ulteriori informazioni, consulta CryptoDeterministicConfig:context.
  • surrogate: un valore STRING che puoi anteporre all'output.

Tipo di dati restituiti

STRING

Esempio

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

Puoi utilizzare questa funzione invece dell'argomento key per le funzioni di crittografia deterministiche DLP. Questa funzione consente di utilizzare le funzioni di crittografia AES-SIV senza includere le chiavi plaintext in una query.

Definizioni

  • kms_resource_name: un valore letterale STRING che contiene il percorso della risorsa per la chiave Cloud KMS. kms_resource_name non può essere NULL e deve risiedere nella stessa regione Cloud in cui viene eseguita questa funzione. Questo argomento viene utilizzato per ricavare la chiave di crittografia dei dati nelle funzioni DLP_DETERMINISTIC_DECRYPT e DLP_DETERMINISTIC_ENCRYPT. Una chiave Cloud KMS si presenta così:

    gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
    
  • wrapped_key: un valore letterale BYTES che rappresenta un testo del secret scelto dall'utente. Questo testo secret può essere di 16, 24 o 32 byte. Per informazioni su come generare una chiave con wrapping, vedi gcloud kmsEncrypt.

Tipo di dati restituiti

STRUCT

Esempio

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