数据流,使用客户提供的加密密钥加载文件

时间:2018-08-06 20:19:23

标签: google-cloud-platform google-cloud-storage google-cloud-dataflow apache-beam

尝试使用CSEK加载GCS文件时,出现数据流错误

[ERROR] The target object is encrypted by a customer-supplied encryption key

我本来打算在数据流端进行AES解密,但是我发现如果不通过加密密钥,我什至无法获取文件。

是否还有另一种方法可以从数据流中加载CSEK加密的Google Cloud Storage文件?例如,使用Google Cloud Storage API,获取流句柄,然后将其传递给数据流?

    // Fails
    p.apply("Read from source", TextIO.read().from("gs://my_bucket/myfile")).apply(..); 

1 个答案:

答案 0 :(得分:7)

通过documentation Cloud Dataflow当前不支持使用客户提供的加密密钥加密的对象。我为此打开了feature request

请注意,如果没有使用该客户提供的加密密钥(CSEK),您将无法在Cloud Storage中获取该文件。

通过documentation

  

如果使用客户提供的加密密钥或客户端   加密,您必须安全地管理密钥并确保它们   不迷路。如果您丢失钥匙,则无法再阅读   您的数据,并且继续向您收取存储对象的费用   直到删除它们。

如果我们仍然拥有CSE密钥,则用于访问文件的示例Java代码为:

byte[] content = storage.readAllBytes(
    bucketName, blobName, BlobSourceOption.decryptionKey(decryptionKey));

使用here说明了使用CSEK获取文件的所有其他可能方法。