簡體   English   中英

"如何使用用戶分配的托管標識訪問 Azure 中 Function App Config 的 Key Vault"

[英]How to use user-assigned managed identity to access Key Vault for Function App Config in Azure

我在 Azure 中為我的一個函數應用設置了 KeyVault 配置。 使用這樣的 Startup 類非常簡單:

using Azure.Identity;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using System.IO;
using Core.Utility;

[assembly: FunctionsStartup(typeof(MyJob.Startup))]
namespace MyJob
{
class Startup : FunctionsStartup
{
    private IConfiguration _configuration;

    public override void Configure(IFunctionsHostBuilder builder)
    {
        // Configure your services here.
    }

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        var context = builder.GetContext();
        var configurationBuilder = builder.ConfigurationBuilder;
        configurationBuilder.AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.json"), true, false)
            .AddEnvironmentVariables();

        // Add the Key Vault:
        var configuration = configurationBuilder.Build();
        configurationBuilder.AddAzureKeyVault(KeyVaultSecrets.MakeKvUri(configuration["KeyVaultName"]),
            new DefaultAzureCredential());
        _configuration = configurationBuilder.Build();
    }
}
}

我現在想使用用戶分配的托管標識而不是系統分配的標識,因此我不必為每個新應用程序或我創建的部署槽授予對 KV 的訪問權限。

我已閱讀此文檔: https ://docs.microsoft.com/en-us/azure/app-service/overview-managed-identity?tabs=dotnet ,但這顯示了在您自己的代碼中創建的 KV 客戶端的示例和基礎設施在這里為我創建客戶端。

這將如何改變以使用用戶分配的身份?

要使用戶分配的身份生效,您只需更改

new DefaultAzureCredential()

new ManagedIdentityCredential(<Client ID>)

當您在 Azure 門戶中查看客戶端 ID 時,它會顯示在用戶分配的標識上。

如果有一種方法可以通過配置將 DefaultAzureCredential 重定向到用戶分配的標識,那就太好了,因為這樣你必須在代碼中放置一些東西,這些東西將根據 if 在默認憑據和托管標識之間切換調試器已附加或配置項,因此您可以在不使用該身份的情況下進行本地調試,因為從 VS 調試時使用默認憑據仍然是正確的。

我確實嘗試將此添加到 Azure 中的配置中,但它不起作用(默認憑據無法使用用戶分配的標識)。

AzureServicesAuthConnectionString: RunAs=App;AppId=<client id>

若要將DefaultAzureCredential<\/code>與用戶分配的托管標識一起使用,請將AZURE_CLIENT_ID<\/code>環境變量設置為標識的客戶端 ID。

通過此GitHub 問題<\/a>找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM