将 Azure Key Vault 机密分配给 Devops 发布管道的连接字符串

Assign Azure Key Vault Secret to Connection String for Devops Release Pipeline

在appsettings.json中创建连接字符串的常用方法是:

{    
  "ConnectionStrings": {
    "DefaultConnection": "Server=(local); Database=MyProperty; Trusted_Connection=True;"
  }
}

我想在 DevOps 发布管道中用我的 QA 数据库替换连接字符串值。

如果我在 Azure Devops 中声明一个 Release Pipeline 变量,我可以使用名称 ConnectionStrings.DefaultConnection,为它设置一个值,它会将值作为发布的一部分注入到 appsettings 中,如下所示:

但是,如果不是上述方法,我想使用 Azure Key Vault 并创建一个 Key Vault 机密,我只能将机密名称创建为 DefaultConnection,因为机密名称和连接字符串中不允许使用句号在发布期间不会被秘密值替换。 我假设如果我可以创建一个秘密作为 ConnectionStrings.DefaultConnection 它会起作用,但我们不允许添加特殊字符。

即使我添加了变量组,它也采用不能接受特殊字符的秘密名称如下:

有什么办法可以实现吗?

秘密名称与应用程序设置/连接字符串之间没有直接关系。如果需要,您可以将机密命名为 "avocado"。您需要做的是仅在设置真实应用程序设置/连接字符串时定义正确的名称。

这是一个示例:

更多信息:

编辑:不,你的秘密不能以相同的模式命名(“:”或“_”分隔单词)

我们想从 Azure 密钥保管库访问的任何秘密 'connString' 都可以使用约定 $(connString).

作为管道中的变量访问

要从 Azure 管道中的 Azure 密钥保管库访问机密,有两种方法-

  1. 管道中 - 使用任务“Azure key Vault”获取特定机密或逗号分隔机密列表,或者您也可以使用 'secrets filter' 中的通配符获取所有机密.然后使用上面的约定,即 $(),在下游任务中使用获取的秘密

  2. 创建基于密钥保管库的变量组 - 变量组可以 link 到 Azure 密钥保管库,您可以 select 您想要在管道中读取的特定机密.您可以 link 一个变量组与多个管道。

在任何一种情况下,您都需要对 Azure 密钥保管库具有足够的权限,您可以在 Azure 门户的“访问策略”边栏选项卡中定义这些权限