Azure blob加密密钥与KeyResolver

时间:2017-05-24 08:33:43

标签: azure-storage-blobs azure-keyvault

我使用Azure KeyVault实现了blob加密(基于this tutorial)。 但有一点,我不完全理解,这是KeyResolver的确切目的。特别是:// In this case, we will not pass a key and only pass the resolver because // this policy will only be used for downloading / decrypting. BlobEncryptionPolicy policy = new BlobEncryptionPolicy(null, cloudResolver);

我认为我不需要KeyResolver,因为在应用程序启动时,我从KeyVault获取密钥并在UnityContainer上注册它,因此它可以在处理blob上传和下载的存储库中使用。我对么?或者我有什么遗失的东西?

1 个答案:

答案 0 :(得分:0)

  

我认为我不需要KeyResolver,因为在应用程序启动时,我从KeyVault获取密钥并在UnityContainer上注册它,因此它可以在处理blob上传和下载的存储库中使用。我对么?或者我有什么遗失的东西?

根据我的理解,如果我们不想将密钥信息存储到KeyVault中,那么我们就不需要使用KeyResolver,我们可以使用密钥来加密和解密blob。

RsaKey key = new RsaKey("your private Key");
BlobEncryptionPolicy policy = new BlobEncryptionPolicy(key, null);
BlobRequestOptions options = new BlobRequestOptions() { 
EncryptionPolicy = policy };

我们可以从this tutorial获取有关Key vs KeyResolver的更多信息。以下是tutorial的摘录。

  

在创建EncryptionPolicy对象时,用户只能提供一个Key(实现IKey),只能提供解析器(实现IKeyResolver)或两者。

     

IKey是使用密钥标识符标识的基本密钥类型,它提供了包装/解包的逻辑。   IKeyResolver用于在解密过程中解析密钥。它定义了一个ResolveKey方法,该方法在给定密钥标识符的情况下返回IKey。这使用户能够在多个位置管理的多个密钥之间进行选择。

     
      
  • 对于加密,始终使用密钥,缺少密钥将导致错误。
  •   
  • 用于解密:   如果指定获取密钥,则调用密钥解析器。如果指定了解析程序但没有键标识符的映射,则会引发错误。   如果未指定解析程序但指定了密钥,则在其标识符与所需密钥标识符匹配时使用密钥。如果标识符不匹配,则抛出错误。
  •