【问题标题】:Azure blob encryption Key vs KeyResolverAzure blob 加密密钥与 KeyResolver
【发布时间】:2017-05-29 16:48:24
【问题描述】:

我已经使用 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 上传和下载的存储库中使用。我对么?还是我缺少什么?

【问题讨论】:

    标签: azure-blob-storage azure-keyvault


    【解决方案1】:

    我认为我不需要 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 与 KeyResolver 的更多信息。以下是来自tutorial 的sn-p。

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

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

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

    【讨论】:

    • "当我们加密或解密 blob 时,我们需要使用相同的 EncryptionPolicy 对象。这意味着如果我们使用 KeyResolver 加密 blob,那么我们需要 KeyResolver 来解密 blob。" - 这不是真的,即使教程在上传(加密)时只使用一个密钥,而在下载(解密)一个 blob 时只使用一个解析器。这正是我的问题中的情况
    猜你喜欢
    • 2021-11-30
    • 2017-01-18
    • 1970-01-01
    • 2021-10-20
    • 2016-10-13
    • 2012-02-21
    • 2022-12-16
    • 2017-10-10
    • 2018-08-17
    相关资源
    最近更新 更多