c# - 如何从azure应用程序服务访问 key 保管库

标签 c# azure azure-devops azure-keyvault

我可以通过以下方法在代码中连接到 key 保管库:

public static class ConfigurationBuilderExtension
{
    public static IConfigurationBuilder AddKeyVaultconfiguration(this IConfigurationBuilder builder)
    {
        var config = builder.Build();

        string name = config["KeyVault:Name"];
        string clientId = config["KeyVault:ClientId"];
        string clientSecret = config["KeyVault:ClientSecret"];

        Verify.NotNullOrEmpty(name, nameof(name));
        Verify.NotNullOrEmpty(name, nameof(clientId));
        Verify.NotNullOrEmpty(name, nameof(clientSecret));

        builder.AddAzureKeyVault($"https://{name}.vault.azure.net/", clientId, clientSecret);

        return builder;
    }
}

要在本地运行此程序,我只需将用户密码添加到项目中:

{
  "KeyVault": {
    "Name": "brajzorekeyvault",
    "ClientId": "xxxx",
    "ClientSecret": "xxxx"
  }
}

这在本地有效。

但是,当我将其发布到 Azure 中的应用服务时,如何使用此方法?我必须以某种方式注入(inject)名称、clientId 和 clientSecret?但我不知道执行此操作的最佳实践方法是什么?我是否应该在 Azure DevOps 中创建一个由这些值组成的变量组,然后在管道中使用这些值?

最佳答案

您应该使用托管身份来访问 Web 应用程序内的 key 保管库,以避免注入(inject) secret 。请参阅this tutorial

对于本地开发,您可以在 VS 中链接一个帐户,该帐户将用于针对 key 保管库进行身份验证。请参阅the docs

使用托管身份是最佳实践,事实上,如果没有使用托管身份的警告,您将不会看到任何有关使用客户端 key 进行连接的官方文档。

关于c# - 如何从azure应用程序服务访问 key 保管库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66543373/

相关文章:

c# - 为什么使用 wireshark 捕获一个 c# ssl 服务器/客户端程序得到 TCP 包?

.net - 无法从 ASP.NET MVC 内部写入 Blob 存储

azure-devops - 使用 Azure DevOps REST API 创建管道失败,错误为 "No pool was specified"

asp.net - 使用 Publish Pipeline Artifact 、下载 Pipeline Artifact 并部署到 Azure webapp 的正确方法

c# - 单例实现问题

c# - C# 与 Linux 信号机制的等效性是什么?

azure - 自定义域到 Azure CDN 端点(带或不带 www)

Azure 自动化 Runbook 无缘无故停止

continuous-integration - 如何在 Visual Studio Team Services 中运行 NUnit 测试

c# - 在 Mono .Net Threads 中,线程是粘在周围,还是?