Google bigquery 是否允许用户调用BigQuery自定义项,但不查看其定义?

Google bigquery 是否允许用户调用BigQuery自定义项,但不查看其定义?,google-bigquery,user-defined-functions,Google Bigquery,User Defined Functions,我有一个BigQuery用户定义函数(UDF),其中定义包含一个秘密: 创建函数mydataset.HashWithPepper(输入字符串,y INT64) 返回字符串 AS SHA256(输入+“秘密值”作为“胡椒”); secret\u value\u acting\u as\u a\u pepper用于输入值。该值是一个秘密,使用该函数的人无法知道 是否可以授予某人调用UDF的权限,但不查看其定义?我已经看到并注意到以下几点: 许可 描述 bigquery.routines.get 获

我有一个BigQuery用户定义函数(UDF),其中定义包含一个秘密:

创建函数mydataset.HashWithPepper(输入字符串,y INT64)
返回字符串
AS SHA256(输入+“秘密值”作为“胡椒”);
secret\u value\u acting\u as\u a\u pepper
用于输入值。该值是一个秘密,使用该函数的人无法知道

是否可以授予某人调用UDF的权限,但不查看其定义?我已经看到并注意到以下几点:

许可 描述 bigquery.routines.get 获取例程定义和元数据。
我不相信有一种方法可以对任何被允许调用例程的人隐藏UDF定义

BigQuery确实支持与授权视图类似的工作方式。授权的UDF可以从BigQuery表中读取数据,而无需授予调用方直接访问表的权限

利用授权UDF的一个可能解决方案是:

  • 创建PEPPER表以在数据集a中保存PEPPER值
  • 创建从pepper表中选择pepper值的UDF,并将其与哈希函数一起使用。在数据库B中创建UDF
  • 将UDF声明为数据集A的授权UDF
  • 向用户授予数据集B的BigQuery Data Viewer权限。不授予用户对数据集A的任何访问权限

  • 谢谢授权UDF对我们来说并不理想,因为我们使用terraform部署所有东西,不幸的是terraform不支持授权UDF。然而,这并不是一个无法克服的问题。