Fonctions de chiffrement pour la protection contre la perte de données

GoogleSQL pour BigQuery est compatible avec les fonctions DLP suivantes qui permettent le chiffrement et le déchiffrement interopérables entre BigQuery et Cloud Data Loss Prevention (Cloud DLP), en utilisant AES-SIV.

Liste des fonctions

Nom Résumé
DLP_DETERMINISTIC_ENCRYPT Chiffre les données avec un algorithme compatible avec la protection contre la perte de données.
DLP_DETERMINISTIC_DECRYPT Déchiffre les données chiffrées par la protection contre la perte de données.
DLP_KEY_CHAIN Récupère une clé de chiffrement de données encapsulée par Cloud Key Management Service.

DLP_DETERMINISTIC_ENCRYPT

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

Description

Cette fonction dérive une clé de chiffrement des données à partir de key et context, puis chiffre plaintext. Vous pouvez éventuellement utiliser surrogate pour ajouter le préfixe du résultat de chiffrement.

Définitions

  • key : valeur BYTES sérialisée renvoyée par DLP_KEY_CHAIN. key doit être défini sur ENABLED dans Cloud KMS. Pour en savoir plus sur la génération d'une clé encapsulée, consultez chiffrement kms gcloud.
  • plaintext : valeur STRING à chiffrer.
  • context : valeur STRING fournie par l'utilisateur, utilisée avec une clé Cloud KMS pour obtenir une clé de chiffrement des données. Pour en savoir plus, consultez la page CryptoDeterministicConfig:context.
  • surrogate : valeur STRING que vous pouvez ajouter à la sortie.

Type de données renvoyé

STRING

Exemple

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

Cette fonction déchiffre ciphertext à l'aide d'une clé de chiffrement dérivée de key et context. Vous pouvez éventuellement utiliser surrogate pour ajouter le résultat de déchiffrement.

Définitions

  • key : valeur BYTES sérialisée renvoyée par DLP_KEY_CHAIN. key doit être défini sur ENABLED dans Cloud KMS. Pour en savoir plus sur la génération d'une clé encapsulée, consultez chiffrement kms gcloud.
  • ciphertext : valeur STRING à déchiffrer.
  • context : valeur STRING utilisée avec une clé Cloud KMS pour obtenir une clé de chiffrement des données. Pour en savoir plus, consultez la page CryptoDeterministicConfig:context.
  • surrogate : valeur STRING que vous pouvez ajouter à la sortie.

Type de données renvoyé

STRING

Exemple

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

Vous pouvez utiliser cette fonction à la place de l'argument key pour les fonctions de chiffrement déterministes DLP. Cette fonction vous permet d'utiliser les fonctions de chiffrement AES-SIV sans inclure de clés plaintext dans une requête.

Définitions

  • kms_resource_name : un littéral de type STRING contenant le chemin d'accès à la clé Cloud KMS. La valeur kms_resource_name ne peut pas être NULL et doit se trouver dans la même région Cloud que celle dans laquelle cette fonction est exécutée. Cet argument est utilisé pour dériver la clé de chiffrement des données dans les fonctions DLP_DETERMINISTIC_DECRYPT et DLP_DETERMINISTIC_ENCRYPT. Une clé Cloud KMS se présente comme suit :

    gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
    
  • wrapped_key : un littéral de type BYTES qui représente un texte secret choisi par l'utilisateur. Ce texte secret peut comporter 16, 24 ou 32 octets. Pour en savoir plus sur la génération d'une clé encapsulée, consultez chiffrement kms gcloud.

Type de données renvoyé

STRUCT

Exemple

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