GoogleSQL for BigQuery 支持以下 DLP 函数,这些函数使用AES-SIV 实现 BigQuery 与 Cloud Data Loss Prevention (Cloud DLP) 之间的互操作加密和解密。
函数列表
名称 | 摘要 |
---|---|
DLP_DETERMINISTIC_ENCRYPT
|
使用 DLP 兼容的算法加密数据。 |
DLP_DETERMINISTIC_DECRYPT
|
解密 DLP 加密的数据。 |
DLP_KEY_CHAIN
|
获取由 Cloud Key Management Service 封装的数据加密密钥。 |
DLP_DETERMINISTIC_ENCRYPT
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context)
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context, surrogate)
说明
此函数从 key
和 context
派生数据加密密钥,然后加密 plaintext
。(可选)您可以使用 surrogate
前置加密结果。
定义
key
:由DLP_KEY_CHAIN
返回的序列化BYTES
值。在 Cloud KMS 中,key
必须设置为ENABLED
。如需了解如何生成封装的密钥,请参阅 gcloud kms encrypt。plaintext
:要加密的STRING
值。context
:用户提供的STRING
值,该值与 Cloud KMS 密钥结合使用来派生数据加密密钥。如需了解详情,请参阅 CryptoDeterministicConfig:context。surrogate
:可在输出前面附加的STRING
值。
返回数据类型
STRING
示例
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)
说明
此函数使用从 key
和 context
派生的加密密钥来解密 ciphertext
。(可选)您可以使用 surrogate
前置解密结果。
定义
key
:由DLP_KEY_CHAIN
返回的序列化BYTES
值。在 Cloud KMS 中,key
必须设置为ENABLED
。如需了解如何生成封装的密钥,请参阅 gcloud kms encrypt。ciphertext
:要解密的STRING
值。context
:STRING
值,与 Cloud KMS 密钥结合使用来派生数据加密密钥。如需了解详情,请参阅 CryptoDeterministicConfig:context。surrogate
:可在输出前面附加的STRING
值。
返回数据类型
STRING
示例
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)
说明
您可以将此函数(而不是 key
参数)用于 DLP 确定性加密函数。通过此函数,您可以使用 AES-SIV 加密函数,而无需在查询中包含 plaintext
密钥。
定义
kms_resource_name
:包含 Cloud KMS 密钥的资源路径的STRING
字面量。kms_resource_name
不能为NULL
,并且必须位于执行此函数所在的 Cloud 区域中。此参数用于在DLP_DETERMINISTIC_DECRYPT
和DLP_DETERMINISTIC_ENCRYPT
函数中派生数据加密密钥。Cloud KMS 密钥如下所示:gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
wrapped_key
:BYTES
字面量,表示用户选择的密文。此密文可以是 16 字节、24 字节或 32 字节。如需了解如何生成封装的密钥,请参阅 gcloud kms encrypt。
返回数据类型
STRUCT
示例
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= |
*--------------------------------------*/