Encryption 用于Bigquery和云SQL的GCP加密通过Beam/Dataflow API

Encryption 用于Bigquery和云SQL的GCP加密通过Beam/Dataflow API,encryption,google-cloud-platform,google-bigquery,google-cloud-dataflow,apache-beam,Encryption,Google Cloud Platform,Google Bigquery,Google Cloud Dataflow,Apache Beam,上下文:我们正在尝试使用GCP数据流(Apache Beam)将一些CSV格式的数据加载到GCP BigQuery中。这是第一次(针对每个表)通过BigQueryIO API创建BQ表。客户要求之一是GCP上的数据需要使用客户提供/管理的加密密钥进行加密 问题陈述:我们无法找到任何方法在创建表时通过API指定“自定义加密密钥”。GCP文档详细介绍了如何通过GCP BQ控制台指定自定义加密密钥,但在数据流代码中找不到任何通过API指定的内容 代码段: String tableSpec=new St

上下文:我们正在尝试使用GCP数据流(Apache Beam)将一些CSV格式的数据加载到GCP BigQuery中。这是第一次(针对每个表)通过BigQueryIO API创建BQ表。客户要求之一是GCP上的数据需要使用客户提供/管理的加密密钥进行加密

问题陈述:我们无法找到任何方法在创建表时通过API指定“自定义加密密钥”。GCP文档详细介绍了如何通过GCP BQ控制台指定自定义加密密钥,但在数据流代码中找不到任何通过API指定的内容

代码段:

String tableSpec=new StringBuilder().append(PipelineConstants.PROJECT_ID).append(“:”)
.append(dataValue.getKey().target_数据集).append(“.”).append(dataValue.getKey().target_表_名称)
.toString();
ValueProvider ValueProvider=StaticValueProvider.of(“gs://bucket/folder/”);
dataValue.getValue().apply(Count.globally()).apply(ParDo.of(new RowCount(dataValue.getKey()))
.apply(ParDo.of(newsourceaudit(runId));
dataValue.getValue().apply(ParDo.of(新的预处理(dataValue.getKey()))
.apply(ParDo.of(new FixedToDelimited(dataValue.getKey()))
.apply(ParDo.of(新的CreateTableRow(dataValue.getKey(),runId,timeStamp)))
.apply(BigQueryIO.writeTableRows().to)(表规范)
.withSchema(CreateTableRow.getSchema(dataValue.getKey()))
.使用CustomGCStemplocation(valueProvider)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE如果需要)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.Write_APPEND));
查询:如果有人能告诉我们

  • 是否可以通过Beam API提供加密密钥
  • 如果当前版本不可行,可能的工作是什么 在附近

如果需要其他信息,请告知。

客户提供的加密密钥是一项新功能,尚未更新所有库以支持它

如果您事先知道表名,则可以使用UI/CLI或API创建表,然后运行正常流程将数据加载到该表中。那对你来说可能是一个工作环境

创建表的API:

您需要在表对象上设置此部分: “encryptionConfiguration”:{ “kmsKeyName”:字符串 }
关于表的更多详细信息:

这是一个真正的新功能(仍然是测试版)。BigQuery客户端libs甚至不支持它,因此Beam/Dataflow还不能支持它。这些表格是预先知道的,还是动态的?相关的…?@格雷厄姆·波利,谢谢你的回复!这些表格将是动态的。正如你提到的,我注意到GCP文档提到BQ客户端库不支持加密设置。@glytching,感谢分享JIRA!每个动态表需要单独的加密密钥,还是所有表都需要一个加密密钥?谢谢您的回复!主要问题是这些表是动态的,事先不知道。你建议的工作在那里,但不幸的是,这在这里行不通。因此,除非谷歌在lib中提供官方支持,否则这样做似乎毫无意义。等待宣布。谢谢几天前发布了一个更新的bigquery客户端库,现在它支持表加密密钥:感谢您提供的信息!我会检查这一点,并将关闭相应的票。