【问题标题】:Connecting to Azure Key Vault using DataProtectionProvider使用 DataProtectionProvider 连接到 Azure Key Vault
【发布时间】:2020-02-09 09:02:58
【问题描述】:

我正在配置 .Net Core 的 DataProtectionProvider 以将密钥存储在 Azure Key Vault 中。问题是我似乎无法创建正确的 Blob URI,或者至少我认为这是问题所在,因为其他一切似乎都正常,但我仍然未授权。

在 Azure 中,我注册了一个应用程序和客户端密码,创建了一个保管库和一个密钥,以及一个授予应用程序几乎所有权限的访问策略。

这是我的 ConfigureServices 的相关部分:

        string uri = "https://{vault-name}.vault.azure.net/keys/{vault-name}/{key}" + "se=2020-01-01&sp=r&spr=https&sv=2018-11-09&sr=b&sig={sig}";
        string keyIdentifier = "https://{vault-name}.vault.azure.net/keys/{vault-name}";
        string clientId = "{application-id";
        string clientSecret = "{client-secret}";

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
        services.AddDataProtection()
            .PersistKeysToAzureBlobStorage(new Uri(uri)) // requires Microsoft.AspNetCore.DataProtection.AzureStorage
            .ProtectKeysWithAzureKeyVault(keyIdentifier, clientId, clientSecret); //requires Microsoft.AspNetCore.DataProtection.AzureKeyVault
        services.AddControllers();

我对如何生成 sas 很感兴趣。该文档似乎暗示这与存储帐户有关,但我看不到任何将存储帐户与密钥保管库相关联的明显方法。因此,我从 Azure CLI 尝试了一些不同的方法,但似乎没有任何东西可以通过我过去的身份验证。

任何帮助将不胜感激。

【问题讨论】:

    标签: azure asp.net-core azure-keyvault


    【解决方案1】:

    您似乎正在尝试将 Key Vault 的 uri 传递给 .PeristKeysToAzureBlobStorage()。相反,您需要传递存储中要保存密钥环的 blob 的 uri。这在Azure Storage provider 的文档中注明。

    您可以通过如图所示的门户生成 SAS 链接,也可以utilize the CLI 创建链接。

    【讨论】:

    • 非常感谢您对此的解释。看来我不明白我需要一个存储容器来配合密钥保管库。现在说得通了。这个解决方案效果很好。
    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2021-12-22
    • 2018-08-08
    • 2021-10-22
    • 2021-10-09
    相关资源
    最近更新 更多