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

For*_*sed 9 google-cloud-storage google-cloud-platform google-cloud-dataflow apache-beam

尝试使用CSEK加载GCS文件时,我收到数据流错误

[ERROR] The target object is encrypted by a customer-supplied encryption key
Run Code Online (Sandbox Code Playgroud)

我打算尝试在数据流方面进行AES解密,但我发现如果没有传递加密密钥,我甚至无法获取该文件.

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

    // Fails
    p.apply("Read from source", TextIO.read().from("gs://my_bucket/myfile")).apply(..); 
Run Code Online (Sandbox Code Playgroud)

kom*_*ich 7

根据文档, Cloud Dataflow目前不支持使用客户提供的加密密钥加密的对象.我打开了一个要实现的功能请求.

请注意,您无法在云存储中获取已使用客户提供的加密密钥(CSEK)上载的文件,而无需使用该加密密钥.

通过文件:

如果您使用客户提供的加密密钥或客户端加密,则必须安全地管理密钥并确保密钥不会丢失.如果您丢失了密钥,则无法再读取数据,并且在删除对象之前,您将继续收取对象的存储费用.

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

byte[] content = storage.readAllBytes(
    bucketName, blobName, BlobSourceOption.decryptionKey(decryptionKey));
Run Code Online (Sandbox Code Playgroud)

此处描述使用CSEK获取文件的所有其他可能方法.