Azure Cloud附加Blob KeyVault加密

时间:2018-03-09 06:31:37

标签: c# azure encryption azure-keyvault

我使用Azure KeyVault加密Azure“Block Blobs”上传。但是当我使用Azure“密钥添加Blob”和Azure KeyVault加密时,它会出现以下错误。 (我正在使用.net应用程序进行blob上传)。

“已存在的Blob不支持加密。请不要指定加密策略。”

请帮我解决这个问题,因为我需要使用KeyVault加密上传“Cloud Append Blob”。

代码段:

    ConnectToKeyVaultClient();

    var identifier = new SecretIdentifier(keyVaultUrl, encryptionSecretName);
    IKey key = CachingKeyResolver.ResolveKeyAsync(identifier.Identifier, CancellationToken.None).Result;
    BlobEncryptionPolicy blobEncryptionPolicy = new BlobEncryptionPolicy(key, null);
    BlobRequestOptions blobRequestOptions  = new BlobRequestOptions() { EncryptionPolicy = blobEncryptionPolicy };
    CloudAppendBlob cloudAppendBlob = blobContainer.GetAppendBlobReference("ABC");


    if(!cloudAppendBlob.Exists())
    {
        cloudAppendBlob.CreateOrReplace(null, blobRequestOptions , null);
    }

    cloudAppendBlob.AppendFromStream(stream, null, blobRequestOptions , null);

1 个答案:

答案 0 :(得分:1)

正如错误消息所示,您无法对加密的blob执行追加操作。 Blob加密使用他们称之为“信封”的方法,这是一种描述加密密钥的包装结构,因此可以自动解密。

documentation中的两个陈述与您的问题有关:

  

客户端库目前仅支持整个blob的加密。具体而言,当用户使用UploadFrom *方法或OpenWrite方法时,支持加密。

  

在读取或写入加密的blob时,请使用整个blob上载命令和范围/整个blob下载命令。避免使用Put Block,Put Block List,Write Pages,Clear Pages或Append Block等协议操作写入加密的blob;否则你可能会破坏加密的blob并使其无法读取。