【问题标题】:BigQuery hide UDF implementationBigQuery 隐藏 UDF 实现
【发布时间】: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')));

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    BigQuery 例程没有仅执行权限。尽管有一种间接方法可以只执行,但您需要注意,调用函数的用户仍然能够从查询计划逆向工程以猜测函数体是什么。

    话虽如此,间接方法是定义一个authorized view。用户被授予访问授权视图的权限,而不是支持该视图的功能。因此,此授权视图的作用类似于对函数(您要隐藏)的仅执行权限。

    【讨论】:

    • 您好 Yun Zhang,我添加了额外的信息并给出了 UDF 定义以及我为什么要隐藏。如果 UDF 在视图中,不确定我们是否可以传递要混淆的数据的参数。
    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 2011-09-19
    • 2019-10-24
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多