【发布时间】:2018-07-25 19:18:51
【问题描述】:
上下文:我们正在尝试使用 GCP Dataflow (Apache Beam) 将一些 CSV 格式的数据加载到 GCP BigQuery。作为其中的一部分,首次(针对每个表)通过 BigQueryIO API 创建 BQ 表。客户要求之一是 GCP 上的数据需要使用客户提供/管理的加密密钥进行加密。
问题说明:我们无法在创建表时通过 API 找到任何方法来指定“自定义加密密钥”。 GCP 文档详细介绍了如何通过 GCP BQ 控制台指定自定义加密密钥,但在 DataFlow 代码中找不到通过 API 指定它的任何内容。
代码片段:
String tableSpec = new StringBuilder().append(PipelineConstants.PROJECT_ID).append(":")
.append(dataValue.getKey().target_dataset).append(".").append(dataValue.getKey().target_table_name)
.toString();
ValueProvider<String> valueProvider = StaticValueProvider.of("gs://bucket/folder/");
dataValue.getValue().apply(Count.globally()).apply(ParDo.of(new RowCount(dataValue.getKey())))
.apply(ParDo.of(new SourceAudit(runId)));
dataValue.getValue().apply(ParDo.of(new PreProcessing(dataValue.getKey())))
.apply(ParDo.of(new FixedToDelimited(dataValue.getKey())))
.apply(ParDo.of(new CreateTableRow(dataValue.getKey(), runId, timeStamp)))
.apply(BigQueryIO.writeTableRows().to(tableSpec)
.withSchema(CreateTableRow.getSchema(dataValue.getKey()))
.withCustomGcsTempLocation(valueProvider)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));
查询:如果有人可以告诉我们
- 是否可以通过 Beam API 提供加密密钥?
- 如果当前版本无法实现,那么可能的工作是什么 周围?
如果需要更多信息,请告知。
【问题讨论】:
-
这是一个真正的新功能(仍处于测试阶段)。 BigQuery 客户端库甚至不支持它,因此 Beam/Dataflow 将无法支持它。这些表格是提前知道的,还是动态的?
-
@Graham Polley,感谢您的回复!表格将是动态的。正如你提到的,我注意到 GCP 文档提到 BQ Client Lib 不支持加密设置。
-
@glytching,感谢分享 JIRA!
-
您是否需要为每个动态表使用单独的加密密钥,还是为所有动态表提供一个?
标签: encryption google-cloud-platform google-bigquery google-cloud-dataflow apache-beam