繁体   English   中英

编写 BigQuery UDF 以解密列数据

[英]Writing BigQuery UDF to decrypt column data

问题陈述:我想写一个 BigQuery UDF 来解密表列

设置:

  • PII 信息在表列中使用 tink package 加密
  • KEK(密钥加密密钥)位于 KMS 中
  • DEK(数据加密密钥)位于云存储中
  • 我已经编写 BigQuery EXTERNAL Table 来访问 DEK json 即select encryptedKeyset from my_project.my_dataset.external_table_for_decrypted_keys会给我所需的 dek 密钥

这是我的示例代码

CREATE OR REPLACE FUNCTION my_proj.my_dataset.udf_decrypt_column(table_name string, column_name string)
BEGIN 
DECLARE KMS_RESOURCE_NAME STRING;
DECLARE FIRST_LEVEL_KEYSET STRING;
SET KMS_RESOURCE_NAME= "gcp-kms://projects/dev/locations/us/keyRings/dev/cryptoKeys/dev-kek";
SET FIRST_LEVEL_KEYSET =  (select encryptedKeyset from my_project.my_dataset.external_table_for_decrypted_keys`);
SELECT
AEAD.DECRYPT_STRING(KEYS.KEYSET_CHAIN(KMS_RESOURCE_NAME, 
   from_base64(FIRST_LEVEL_KEYSET)),
   from_base64(column_name),
   "")  as decrypted_name
FROM table_name

问题/问题:

  1. 声明变量在函数中不起作用(而它们在过程中起作用)。 所以我的问题是如何为UDF中的变量赋值
  2. 如何运行 SQL 并将值分配给 UDF 中的变量。 在我的情况下,我想从 external_table_for_decrypted_keys 获取列 encryptedKeyset 并分配给 FIRST_LEVEL_KEYSET (在声明部分)

任何想法/指针如何实现这一目标? 提前感谢您的回复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM