繁体   English   中英

使用MSI部署容器实例和部署到其的容器无法读取密钥库机密

[英]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,Authorityhttps : //login.windows.net/ 异常消息:尝试使用托管服务身份获取令牌。 无法连接到托管服务标识(MSI)端点。 请检查您是否正在运行具有MSI安装程序的Azure资源。 参数:Connectionstring:[未指定连接字符串],Resource: https : //vault.azure.net,Authorityhttps : //login.windows.net/ 异常消息:尝试使用Visual Studio获取令牌。 无法获取访问令牌。 未设置环境变量LOCALAPPDATA。 参数:Connectionstring:[未指定连接字符串],Resource: https : //vault.azure.net,Authorityhttps : //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
        }
    }

首先,您应该知道托管身份只是Azure服务的羽毛。 此外,即使对于Azure Services,也不支持羽毛所有的服务。 您可以在此处了解哪种Azure服务支持托管身份。

您可以在此处查看 MSI如何用于Azure Service。 因此,似乎无法将MSI用于不属于Azure容器实例内部Azure的Docker容器。 该错误还显示:

异常消息:尝试使用托管服务身份获取令牌。 无法连接到托管服务标识(MSI)端点。 请检查您是否正在运行具有MSI安装程序的Azure资源。

但是我建议您可以尝试使用服务主体来读取存储在KeyVault中的密钥或访问其他Azure服务。

似乎我不知道使用AppAuthentication NuGet 1.1.0-preview产生了错误。 使用1.0.3,在运行容器图像的azure容器实例中,一切正常:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM