【发布时间】:2021-11-20 01:54:46
【问题描述】:
我在 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 客户端的示例,并且基础架构正在此处为我创建客户端。
如何更改才能使用用户分配的身份?
【问题讨论】:
-
由于您不想仅基于密钥保管库访问来使用系统托管标识,如果您要将 KV 访问更改为 RBAC(而不是默认访问策略)并使用 AD 组怎么办具有“Key Vault Secrets User”角色,只需在创建时使用基础架构即代码将每个应用程序和插槽添加到组中?
-
我为 KV 尝试了 RBAC,它实际上比手动将应用程序身份添加到每个 KV 更烦人和麻烦,因为你不能只为应用程序身份分配角色,你必须去分别进入每个 KV 并允许访问。 IE - RBAC 并没有让 IMO 变得更容易。
标签: c# azure azure-identity