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

管理必须使用 TLS 的 Docker 容器的证书/密钥的最佳方法是啥

MSSQL - 最佳实践 - 使用SSL加密连接

BigQuery 中的自动数据集?