gpt4 book ai didi

azure - KeyVaultErrorException : Operation returned an invalid status code 'Forbidden'

转载 作者:行者123 更新时间:2023-12-02 05:01:18 35 4
gpt4 key购买 nike

我正在尝试设置托管在 Azure 中的 Web 应用程序,以从 Azure KeyVault 读取设置。

我一直在遵循本指南:https://anthonychu.ca/post/secrets-aspnet-core-key-vault-msi/

该示例展示了如何使用以下配置从 KeyVault 访问应用设置:

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
var keyVaultEndpoint = Environment.GetEnvironmentVariable("KEYVAULT_ENDPOINT");
if (!string.IsNullOrEmpty(keyVaultEndpoint))
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault(
keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
}
})
.UseApplicationInsights()
.UseStartup<Startup>()
.Build();

我已将 KEYVAULT_ENDPOINT 环境变量添加到应用程序设置中。我已在应用服务上启用 MSI,并已通过 Key Vault 访问策略授权我的 Azure 用户和我的应用程序:

enter image description here

使用获取和列表操作:

enter image description here

我已将 key 添加到 key 保管库中。在本地运行,我可以访问 secret 。

但是我的 ASP .NET Core 站点在启动时失败,并在标准输出日志中显示以下内容:

Unhandled Exception: Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: Operation returned an invalid status code 'Forbidden'
at Microsoft.Azure.KeyVault.KeyVaultClient.GetSecretsWithHttpMessagesAsync(String vaultBaseUrl, Nullable`1 maxresults, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at Microsoft.Azure.KeyVault.KeyVaultClientExtensions.GetSecretsAsync(IKeyVaultClient operations, String vaultBaseUrl, Nullable`1 maxresults, CancellationToken cancellationToken)
at Microsoft.Extensions.Configuration.AzureKeyVault.AzureKeyVaultConfigurationProvider.LoadAsync()
at Microsoft.Extensions.Configuration.AzureKeyVault.AzureKeyVaultConfigurationProvider.Load()
at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
at Blog.Program.BuildWebHost(String[] args) in D:\a\1\s\[csproj name]\Program.cs:line 22
at [csproj name].Program.Main(String[] args) in D:\a\1\s\[csproj name]\Program.cs:line 16

我已通过从调试控制台调用 SET 检查了 MSI_ENDPOINT 和 MSI_SECRET 环境变量是否存在。 enter image description here

我还可以看到 KEYVAULT_ENDPOINT 变量。

有什么建议可能会出现问题或下一步要尝试什么吗?由于它在本地工作,所以一定是一个身份验证问题,但我相信它是使用我在 key 保管库中授权的 azure 用户进行本地身份验证,而不是作为 Azure 应用服务进行身份验证。

最佳答案

这很狡猾,但您的设置问题在于您在为 KeyValut 创建访问策略时启用了“授权应用程序”。

您可以看到它,因为您的屏幕截图上有“应用程序+应用程序”。我想,您创建的策略中您的 web 应用程序既是主体应用程序又是授权应用程序。这有点创建循环。

要使此设置生效,只需删除现有策略并创建一个新策略,其中您仅选择主体:

enter image description here

关于azure - KeyVaultErrorException : Operation returned an invalid status code 'Forbidden' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51124843/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com