我正在设置 KeyVault 以从我的 .NET Azure WebApp 中删除机密并通过 CredScan,据我所知,一切都已正确连接。
KeyVault 与应用程序位于同一资源组中,并具有所需的机密。应用服务在 KeyVault 的访问策略中设置了明确的读取权限。按照文档,所有正确的参数都用于在代码中创建 API 客户端。
但是,当我使用标准 API 调用实际使用客户端访问机密时,即
SecretClient client = new SecretClient(keyVaultURI, new DefaultAzureCredential());
string secret = client.GetSecret(secretName).Value.Value;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
DefaultAzureCredential 无法从包含的凭据中检索令牌。\r\nEnvironmentCredential 身份验证不可用。环境变量未完全配置。\r\nManagedIdentityCredential 身份验证不可用,找不到托管标识终结点。\r\nSharedTokenCacheCredential 身份验证不可用。用户 令牌获取失败。确保已使用支持 Azure 单点登录的开发人员工具进行身份验证。
我猜一定有一些我不知道的必需配置步骤或设置。
我总结了整个解决方案如下。
如果要DefaultAzureCredential在 Azure 应用服务中访问 Azure Key Vault,则需要启用 MSI 并在 Azure Key Vault 中为您的 MSI 配置正确的访问策略。更多详情请参考文档
详细步骤如下。
一种。启用系统分配的 MSI
湾 配置访问策略