[英]Deploying Container Instance with MSI and containers deployed to it cannot read keyvault secrets
我遵循了Microsoft的本指南: https : //docs.microsoft.com/en-us/azure/container-instances/container-instances-managed-identity
一切正常,但是当我想在容器中使用ASP.NET Core 2.1进行部署时,在我的代码中尝试读取KeyVault机密的地方不起作用。 它可以工作,但无需将其部署在Docker容器中。
但目标是将项目部署到docker容器中,将其注册到Azure容器注册表中,然后使用可读取密钥库机密的容器创建容器实例。
我收到的错误通常是尝试从运行的.NET核心Docker容器中的Keyvaults读取机密时遇到的错误:
AzureServiceTokenProviderException:参数:Connectionstring:[未指定连接字符串],资源: https ://vault.azure.net,权限: https ://login.windows.net/。 异常消息:尝试了以下三种方法来获取访问令牌,但是没有一种有效。 参数:Connectionstring:[未指定连接字符串],Resource: https : //vault.azure.net,Authority : https : //login.windows.net/ 。 异常消息:尝试使用托管服务身份获取令牌。 无法连接到托管服务标识(MSI)端点。 请检查您是否正在运行具有MSI安装程序的Azure资源。 参数:Connectionstring:[未指定连接字符串],Resource: https : //vault.azure.net,Authority : https : //login.windows.net/ 。 异常消息:尝试使用Visual Studio获取令牌。 无法获取访问令牌。 未设置环境变量LOCALAPPDATA。 参数:Connectionstring:[未指定连接字符串],Resource: https : //vault.azure.net,Authority : https : //login.windows.net/ 。 异常消息:尝试使用Azure CLI获取令牌。 无法获取访问令牌。 / bin / bash:az:没有这样的文件或目录。
是否有从Azure Keyvault机密中读取Docker容器的指南?
读取密钥库机密的源代码:
public static async Task<string> GetSecret(string baseUrl, string keyName)
{
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
using (var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback)))
{
var secret = await keyVaultClient.GetSecretAsync(baseUrl, keyName).ConfigureAwait(false);
return secret
}
}
似乎我不知道使用AppAuthentication NuGet 1.1.0-preview产生了错误。 使用1.0.3,在运行容器图像的azure容器实例中,一切正常:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.