Azure blob customerProvidedKey 与 EncryptionPolicy

Azure blob customerProvidedKey vs EncryptionPolicy

我需要对上传到 azure blob 的文件进行加密,这样登录到 azure 的任何人都无法看到它。 解决方案之一是使用自定义密钥加密。我至少找到了两种方法,但我不知道它们之间有什么区别,也许你们中的一些人会帮助我。

第一个解决方案是创建

BlobClientOptions options = new BlobClientOptions()
{
     CustomerProvidedKey = new CustomerProvidedKey(key)
};

并在创建时传递该选项 BlobServiceClient

第二个是创建

BlobEncryptionPolicy policy = new BlobEncryptionPolicy(rsa, null);
BlobRequestOptions options = new BlobRequestOptions() { EncryptionPolicy = policy };

并在上传文件时使用它blob.UploadFromStream(stream, stream.Length, null, options, null);

我找不到任何说明它们之间区别的文档。

CustomerProvidedKey用于azure server端加密数据(官方叫encrypt at rest),详见this doc。总之,当使用这种加密方式时,在数据上传过程中,数据是不加密的。上传完成后,数据将在 Azure 服务器端使用 CustomerProvidedKey.

加密

注意:CustomerProvidedKey 现在是 in preview

但对于第二个,使用 BlobEncryptionPolicy,用于在客户端加密数据。当您使用这种加密时,数据在上传到 azure 之前会被加密。