我有一个在 Azure 应用服务中运行的 ASP.net Core 3.1 应用程序。开始使用 Azure Key Vault 存储应用程序的连接字符串和其他机密后,该应用程序现在崩溃并显示以下错误:
“HTTP 错误 500.30 ANCM 进程内启动失败”错误页面。
我在 Azure 门户上上下搜索,终于在应用服务的 .NET Core 启动失败列表中找到了一些有意义的内容(隐藏在应用服务 > 诊断和解决问题 > Web 应用程序关闭 > 查看 .NET 启动失败):
Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: The policy requires the caller
'appid=<redacted>;oid=<redacted>;iss=https://sts.windows.net/<readacted>/' to use on-behalf-of (OBO)
flow. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287
我不需要代流。我最初定义了 Key Vault 访问策略以包括应用程序的oid
和它的appid
因为失误。此后,我通过删除访问策略并重新创建它来进行补救,而无需appid
.
我的问题是 -为什么我仍然收到此错误以及如何修复它?
Update:下面是似乎触发此操作的代码。禁用它后,应用程序将恢复正常(尽管没有 Key Vault 集成)。
var builtConfig = config.Build();
var vaultUrl = $"https://{builtConfig["KeyVaultName"]}.vault.azure.net/";
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
config.AddAzureKeyVault(
vaultUrl,
keyVaultClient,
new DefaultKeyVaultSecretManager());
当您添加访问策略时,它只能选择具有对象 ID 的服务主体。
正如你所描述的,你删除appid
并确保您已单击save
按钮保存您的操作。
您可以通过为密钥保管库设置密钥保管库访问策略来授予数据平面访问权限。设置这些访问策略、用户、组或应用程序必须具有该 Key Vault 管理平面的贡献者权限.
更详细的你可以参考这个article https://learn.microsoft.com/en-us/azure/key-vault/general/secure-your-key-vault#data-plane-and-access-policies.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)