Azure Linux应用程序服务上的docker是否可以在没有我们在应用程序设置中指定密码的情况下通过ACR进行身份验证?

Azure Linux应用程序服务上的docker是否可以在没有我们在应用程序设置中指定密码的情况下通过ACR进行身份验证?,azure,docker,authentication,terraform,azure-container-registry,Azure,Docker,Authentication,Terraform,Azure Container Registry,我们使用terraform将Linux应用程序服务部署到Azure。相关配置代码为: resource "azurerm_app_service" "webapp" { app_settings = { DOCKER_REGISTRY_SERVER_URL = "https://${local.ctx.AcrName}.azurecr.io" DOCKER_REGISTRY_SERVER_USERNAME = data.azurerm

我们使用terraform将Linux应用程序服务部署到Azure。相关配置代码为:

resource "azurerm_app_service" "webapp" {
  app_settings = {
    DOCKER_REGISTRY_SERVER_URL              = "https://${local.ctx.AcrName}.azurecr.io"
    DOCKER_REGISTRY_SERVER_USERNAME         = data.azurerm_key_vault_secret.acr_admin_user.value
    DOCKER_REGISTRY_SERVER_PASSWORD         = data.azurerm_key_vault_secret.acr_admin_password.value
    ...
  }
  ...
}
<>问题是TrRAFrm没有考虑<代码> AppMyStase<代码>一个秘密,因此它在Azure DeVOPS输出(我混淆了实际值)中清除了<代码> DOCSKYRIGYYSURVILVIORION密码值:

所以,我想知道——运行在Azure Linux应用程序服务主机上的docker是否可以通过相应的ACR进行身份验证,而不必我们以一种让每个可以检查管道输出的人都能看得很清楚的方式传递密码

下面的文章似乎总体上是相关的,但不清楚我们如何在我的上下文中应用它,如果有的话


此外,据微软称,微软已经开始着手相关工作,但看起来这项工作仍在进行中(将近5个月)。

不幸的是,Azure Web应用程序不支持使用托管身份与ACR交互,您必须将这些环境变量传递给应用程序服务

Terraform目前不支持对任意值应用“敏感”标志。您可以将输出定义为敏感输出,但这对您在计划阶段想要隐藏的值没有帮助

我建议您签出,使用
TFMASK\u RESOURCES\u REGEX
配置来阻止您希望在管道期间隐藏的输出。如果您不喜欢添加依赖项,可以通过管道
terraform apply
通过
grep实现类似的效果,相反,可以反转匹配“DOCKER\u注册表”


@charles xu也有一个解决方案,如果你想在keyvault和你的web应用程序之间建立映射,然后将你的令牌推入kv机密。

恐怕你必须设置关于
DOCKER\u REGISTRY.*
的环境变量才能从ACR中提取图像,这是Azure设计的唯一方法。但是对于有关密码的敏感信息,它也提供了一种隐藏密码的方法。您可以使用密钥库秘密存储密码,然后从密钥库获取密码。看一下文件。因此,您可以更改密码的
app\u设置,如下所示:

DOCKER_REGISTRY_SERVER_PASSWORD = "@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931)"


然后它只显示钥匙库的参考,而不是确切的密码。

@马克支票怎么样?您已经完成了吗?这是您期望的吗?还没有,我们已经将工作安排到下一个sprint,它将在一周后开始,但我们肯定会检查,然后我将返回结果。@标记问题的任何更新吗?已经过了一个星期了。我不认为这是一件很难检查的事情。我们按照3周的冲刺进行工作。检查您想法的工作项在待办事项列表中,应该被安排在即将到来的sprint中。我们会到达那里的,不用担心。
DOCKER_REGISTRY_SERVER_PASSWORD = "@Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret;SecretVersion=ec96f02080254f109c51a1f14cdb1931)"