如何在连接字符串中使用机密 Azure 发布管道 - 使用 Azure 应用服务设置任务

How you do use Secrets in a Connection String Azure Release Pipeline - Using Azure App Service Settings Task

我正在 Web 应用的发布管道中使用 Azure 应用服务设置任务。我需要设置连接字符串。

根据帮助图标,它需要 JSON 语法

 {
    "name": "key1",
    "value": "valueabcd",
    "type": "MySql",
    "slotSetting": false
   }

我想从链接到 Azure Key Vault 的变量组或从 KeyVault 或什至只是一个管道变量中提取“值”。我只是希望它是安全的。

我 运行 遇到的问题是如何将变量传递给 JSON 如果它是秘密的。如果我这样做

   {
    "name": "ConnectionStringName",
    "value": "$(DBConnectionString)",
    "type": "SQLAzure",
    "slotSetting": false
   }

那么连接字符串就是$(DBConnectionString)。您不能删除引号,因为这样就不合适 JSON。它与它是一个秘密的事实有关,因为它适用于常规变量。我已经阅读了几篇关于如何以不同方式使用秘密的文章,但无法将它们应用于我正在做的事情。

我附上了一张屏幕截图,以帮助解释我在哪里看到的。

我运行发布管道:

[
        {
          "name": "MysqlCredentials",
          "value": "$(MySQl_ConnectionString)",
          "type": "MySql",
          "slotSetting": false
        }
      ]

在变量中设置了变量:

然后我得到:

因此,如果您没有替换它,则可能意味着您没有定义变量。

我保密了:

它仍然有效:

我想出了一个适用于我的场景的解决方案。我将连接字符串放在 Vault 中,并在我的 Azure App Service 设置任务之前添加了 Azure Key Vault 任务,然后标准变量 sub 开始工作。