BigQuery 隐藏 UDF 实现
Posted
技术标签:
【中文标题】BigQuery 隐藏 UDF 实现【英文标题】:BigQuery hide UDF implementation 【发布时间】:2020-09-27 23:21:25 【问题描述】:BigQuery 例程根据doc 拥有这些权限:
bigquery.routines.create 创建新例程(函数和存储过程)。 bigquery.routines.delete 删除例程。 bigquery.routines.get 获取例程定义和元数据。 bigquery.routines.list 列出例程和例程元数据。 bigquery.routines.update 更新例程定义和元数据。是否可以授予服务帐户权限,使其只能执行 UDF(在 sql 查询中)而没有获得“bigquery.routines.get”权限,即看不到 UDF 定义?
基本上我有一个如下的混淆函数,我将它应用于表列中的敏感数据,我想隐藏其中的盐值,因此隐藏了整个混淆的实现。
CREATE OR REPLACE FUNCTION `project`.dataset.get_obfuscated_val(s ANY TYPE) AS (sha256(concat(cast(s as String),'my-secret-salt-value')));
【问题讨论】:
【参考方案1】:BigQuery 例程没有仅执行权限。尽管有一种间接方法可以只执行,但您需要注意,调用函数的用户仍然能够从查询计划逆向工程以猜测函数体是什么。
话虽如此,间接方法是定义一个authorized view。用户被授予访问授权视图的权限,而不是支持该视图的功能。因此,此授权视图的作用类似于对函数(您要隐藏)的仅执行权限。
【讨论】:
您好 Yun Zhang,我添加了额外的信息并给出了 UDF 定义以及我为什么要隐藏。如果 UDF 在视图中,不确定我们是否可以传递要混淆的数据的参数。以上是关于BigQuery 隐藏 UDF 实现的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery -- 在公开共享项目中使用 UDF 的问题