[英]Docker container app service in azure. How to use DefaultAzureCredential for keyvault
我有一个在 azure 中运行的容器应用程序服务,它工作正常。
但是,如果我想在本地运行这个容器,它会失败,因为它无法通过身份验证来读取 azure 中的密钥库。
.ConfigureAppConfiguration((context, config) =>
{
var builtConfig = config.Build();
string SecretUri = $"https://{builtConfig["KeyVaultName"]}.vault.azure.net/";
var secretClient = new SecretClient(new Uri(SecretUri), new DefaultAzureCredential(new DefaultAzureCredentialOptions { ExcludeSharedTokenCacheCredential = true }));
config.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
})
在 azure 中运行时,DefaultAzureCredential 将从应用服务继承其权限并且工作正常。
但是,如果我想在本地运行容器以在 azure 之外进行测试,它不知道使用什么权限。 我该如何处理? 我可以以某种方式告诉容器使用什么权限而不对容器进行开发更改吗?
当我在 Visual Studio 中进行开发时,我通常将默认的 Azure Key Vault 开发凭据存储在本地用户设置中。 然后我将与环境变量相同的凭据放入 Azure App Services 中。 如果凭据名称相同,它将在两个地方都可以使用。
您可以通过右键单击 Visual Studio 中的项目来访问本地用户机密
有关更多详细信息,请参阅文档。
DefaultAzureCredential
将按顺序尝试几种凭据类型,如此处所示,因此如果不设置环境变量并排除SharedTokenCacheCredential
且ExcludeSharedTokenCacheCredential = true
,它将使用VisualStudioCredential
进行身份验证,即您登录 VS 的用户帐户。
要使其在本地工作,您需要将您的用户帐户添加到具有正确权限的密钥库的Access Policies
中,请遵循此文档。 (或者,如果您在 keyvault 的Access policies
刀片中 select Azure role-based access control
,则需要 RBAC 角色Key Vault Administrator
,请按照此文档添加。)添加后,它将正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.