如何使用胡椒在 BigQuery 中散列数据并保密?

Posted

技术标签:

【中文标题】如何使用胡椒在 BigQuery 中散列数据并保密?【英文标题】:How can I hash data in BigQuery using a pepper and keep the pepper secret? 【发布时间】:2021-06-08 20:55:48 【问题描述】:

我们在 BigQuery 中拥有个人身份信息 (PII) 数据(例如 emailAddress)。我们不会向最终用户公开该 PII 数据(我们使用 policy tags 隐藏它)但是为了这些用户可以将不同的表连接在一起,我们需要提供 emailAddress 的单向哈希。

为了提高安全性,我们的 InfoSec 团队坚持我们使用 pepper 来加密数据,可能使用 BigQuery 的 sha256 function。我们面临的挑战是我们将胡椒存储在哪里以及如何使用它而不需要将数据写入不同的表(我们绝对不希望仅仅为了对列进行散列而移动一些数据)。

我们正在考虑采用这种方法:我们为辣椒选择的值存储在 BigQuery 中的一个表中,最终用户无法访问该表。我们将在生成哈希的原始数据之上提供 BigQuery 视图,从而有效地做到这一点:

CREATE VIEW view-name AS
SELECT sha256(d.emailAddress + p.PEPPER_VALUE) AS emailAddressHash
, <other columns>
FROM table-containing-data d CROSS JOIN table-containing-pepper p

我们将授予最终用户访问这些视图的权限。

我们对这种方法的担忧在于安全存储 PEPPER_VALUE。鉴于用户将从视图中选择,查询将以该最终用户身份运行。我们如何让视图能够使用 PEPPER_VALUE 而不让最终用户能够看到它?

【问题讨论】:

【参考方案1】:

你需要在这里设置Authorized Viewstutorial,这可能会有所帮助。

授权视图可让您与特定用户共享查询结果 和组而不授予他们访问基础表的权限

【讨论】:

啊,是的,我正在查看授权的 UDF,但我认为授权的视图也可以完成这项工作。谢谢。

以上是关于如何使用胡椒在 BigQuery 中散列数据并保密?的主要内容,如果未能解决你的问题,请参考以下文章

在路由文件中散列密码并更新

在 .NET 中散列 SecureString

如何在 Django Rest Framework 中散列 Django 用户密码?

MongoDB游标在Perl中散列

在Python中散列一个整数以匹配Oracle的STANDARD_HASH

在redis中散列哈希