问题描述
我的目标是建立一个基于BigQuery的安全解决方案。 我使用受cmeK保护的BigQuery表。 另外,我有一个数据流作业,将数据写入表中。 它使用AEAD函数加密某些值。 https://cloud.google.com/bigquery/docs/reference/standard-sql/aead_encryption_functions 我使用Tableau从BigQuery读取数据。并使用AEAD函数解密一些值。
我需要一种与AEAD一起使用的安全可靠的密钥集管理方法。 加密期间,密钥集应可用于数据流。 另外,密钥集应该在Tableau中可用以进行解密。
解决方法
作为我的简要说明,您的用例包括使用CMEK和AEAD对数据进行静态加密,以使Cloud Dataflow和Tableau等外部工具可以访问数据。
我认为市长的问题是,AEAD无法解决Standard documentation中所述的密钥管理问题:
“虽然AEAD算法非常有用,但它们无济于事 密钥生成和密钥管理问题”。
不过,我可以想到以下方法:
- 要管理CMEK,可能要使用Cloud KMS。
Cloud Dataflow可以通过代码Java或Python访问CMEK。但是,您将需要查看Tableau文档以了解如何在KMS中配置/连接到CMEK。
-
从您共享的链接中,我可以读取以字节表示形式或纯文本格式的json文件形式的AEAD密钥集;因此,我可以可视化管理密钥集的两条路径:
-
如果要将它们带到BigQuery(jsons)之外,则可以将它们作为秘密进行管理,并使用Secret Manager之类的工具来允许您使用Java或Python来管理秘密,您可以使用这些工具与Cloud Dataflow集成的语言。我不清楚Tableau如何使用这种方法。
-
您可以将BigQuery中的键集保持在其数据附近,并执行配置,使您的应用仅访问其有权查看的数据。在这种情况下,BiQuery中的Authorized Views将为您提供帮助。您将需要在BA中执行其他配置并构建sql查询以创建视图。然后,Dataflow和Tableau可以透明地连接并从授权视图读取。
-
作为第二点的示例,您可以使用此访问键集的查询来创建授权视图customers_pii
:
SELECT
ecd.customer_id as customer_id,AEAD.DECRYPT_BYTES(
(SELECT ck.keyset
FROM aead.CustomerKeysets AS ck
WHERE ecd.customer_id = ck.customer_id),ecd.encrypted_animal,CAST(ecd.customer_id AS STRING)
) AS favorite_animal
FROM aead.EncryptedCustomerData AS ecd;
然后,用户/应用程序无法访问键集,他们应该以这种方式查询以在视图中检索数据:
SELECT customer_id from customers_pii;