【问题标题】:Use Azure Vault Secret from onpremise Web Application从本地 Web 应用程序使用 Azure Vault Secret
【发布时间】:2018-04-18 16:30:27
【问题描述】:

我想使用来自本地 Web 应用程序的 Azure Key Vault 机密。

我创建了一个带有 Secret 的 Key Vault,但在访问策略中我应该指定一个授权应用程序,并且在示例中使用的是 Azure WebApp。

我想改用本地 MVC Web 应用程序中的 Secret:我应该什么都不指定并且它可以工作吗?我自己指定了 Azure Vault 并作为 Principal,但我不确定这是否正确。

【问题讨论】:

    标签: azure model-view-controller azure-keyvault


    【解决方案1】:

    嗯,有些东西需要经过身份验证才能访问这个秘密。 可以是当前用户,也可以使用服务主体。

    由于我们谈论的是 MVC 应用程序,服务主体可能更容易。 您需要通过 Azure 门户在 Azure Active Directory 中注册一个新应用。 找到 Azure AD,并通过应用注册注册一个新应用。

    名称和 URL 并不重要,但它必须是 Web 应用程序/API 类型。 例如,登录 URL 可以是 https://localhost。 然后将 Keys 刀片中的 key 添加到应用程序(创建应用程序后单击设置,然后单击键)。 将客户端 ID(应用程序 ID)和密钥复制到某处。

    现在您可以转到 Key Vault,创建新的访问策略,然后选择您创建的应用作为主体。 给它你想要的权利,比如 Secrets -> Get。 然后您可以保存策略。

    在您的应用中,您可以像这样使用Key Vault library + ADAL

    var kvClient = new KeyVaultClient(async (authority, resource, scope) =>
    {
        var context = new AuthenticationContext(authority);
        var credential = new ClientCredential("client-id-here", "key-here");
        AuthenticationResult result = await context.AcquireTokenAsync(resource, credential);
        return result.AccessToken;
    });
    
    SecretBundle secret = await kvClient.GetSecretAsync("https://yourvault.vault.azure.net/", "secret-name");
    string secretValue = secret.Value;
    

    【讨论】:

    • 我没有在 Azure 订阅中注册应用程序,并且为客户端密码使用了错误的值:现在它可以工作了。谢谢。
    • 哇,你拯救了我的一天!谢谢@juunas
    • 现在不是直接在您的代码中拥有秘密,而是在 Key Vault 中拥有它,并且您拥有在代码中访问 Key Vault 的客户端凭据。它只是在转移问题,不是吗?
    • 非常正确。为此,您可以在 Azure 中使用托管标识。
    • 您也可以使用客户端证书,根本不将机密存储在 Web 应用程序中。
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2020-09-09
    • 2021-06-03
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多