尝试使用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(..);
答案 0 :(得分:7)
通过documentation Cloud Dataflow当前不支持使用客户提供的加密密钥加密的对象。我为此打开了feature request。
请注意,如果没有使用该客户提供的加密密钥(CSEK),您将无法在Cloud Storage中获取该文件。
如果使用客户提供的加密密钥或客户端 加密,您必须安全地管理密钥并确保它们 不迷路。如果您丢失钥匙,则无法再阅读 您的数据,并且继续向您收取存储对象的费用 直到删除它们。
如果我们仍然拥有CSE密钥,则用于访问文件的示例Java代码为:
byte[] content = storage.readAllBytes(
bucketName, blobName, BlobSourceOption.decryptionKey(decryptionKey));
使用here说明了使用CSEK获取文件的所有其他可能方法。