首页 文章

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

提问于
浏览
8

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

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

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

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

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

1 回答

  • 6

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

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

    documentation

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

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

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

    使用CSEK获取文件的所有其他可能方法都描述为here .

相关问题