BigQuery AEAD 功能的密钥集管理最佳实践 [关闭]
Posted
技术标签:
【中文标题】BigQuery AEAD 功能的密钥集管理最佳实践 [关闭]【英文标题】:Best practices for keyset management for BigQuery AEAD function [closed] 【发布时间】:2021-01-31 21:08:37 【问题描述】:我的目标是构建基于 BigQuery 的安全解决方案。 我使用受 CMEK 保护的 BigQuery 表。 另外,我有一个在表中写入数据的数据流作业。 它使用 AEAD 函数加密一些值。 https://cloud.google.com/bigquery/docs/reference/standard-sql/aead_encryption_functions 我使用 Tableau 从 BigQuery 读取数据。并使用 AEAD 函数解密一些值。
我需要一种与 AEAD 一起使用的安全可靠的密钥集管理方法。 密钥集应在加密期间可用于数据流。 此外,密钥集应该可以在 Tableau 中用于解密。
【问题讨论】:
【参考方案1】:作为我的理解的简要陈述,您的用例包括使用 CMEK 和 AEAD 对静态数据进行加密,其中 Cloud Dataflow 和 Tableau 等外部工具可以访问数据。
我认为市长的问题是 AEAD 没有解决密钥管理问题,如 Standard documentation 所述:
“虽然 AEAD 算法非常有用,但它们无法解决问题 密钥生成和密钥管理的问题”。
不过,我可以想到以下方法:
-
要管理 CMEK,您可以使用 Cloud KMS。
Cloud Dataflow 可以通过 Java 或 Python 代码访问 CMEK。但是,您需要查看 Tableau 文档以了解如何在 KMS 中配置/连接到 CMEK。
从您共享的链接中,我可以读取 AEAD 密钥集是字节表示形式或纯文本格式的 json 文件;所以,我可以想象两条管理键集的路径:
如果您想将它们从 BigQuery (jsons) 中取出,您可以将它们作为机密进行管理,并使用 Secret Manager 等允许您使用 Java 或 Python 来管理机密的工具,您可以使用这些语言与 Cloud 集成数据流。不过,我不清楚 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;
【讨论】:
以上是关于BigQuery AEAD 功能的密钥集管理最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何从受 CMEK(客户管理的密钥)保护的 BigQuery 表在 Tableau 中创建数据源?
在 BigQuery 中将大量数据从美国数据集迁移到欧盟数据集的最佳方法?
适用于 BigQuery 的最佳 Google Cloud Storage