我使用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);
答案 0 :(得分:1)
正如错误消息所示,您无法对加密的blob执行追加操作。 Blob加密使用他们称之为“信封”的方法,这是一种描述加密密钥的包装结构,因此可以自动解密。
documentation中的两个陈述与您的问题有关:
客户端库目前仅支持整个blob的加密。具体而言,当用户使用UploadFrom *方法或OpenWrite方法时,支持加密。
和
在读取或写入加密的blob时,请使用整个blob上载命令和范围/整个blob下载命令。避免使用Put Block,Put Block List,Write Pages,Clear Pages或Append Block等协议操作写入加密的blob;否则你可能会破坏加密的blob并使其无法读取。