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

时间:2020-03-02 16:31:34

标签: azure connection-string devops azure-pipelines-release-pipeline azure-keyvault

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

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

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

如果我在Azure Devops中声明了发布管道变量,则可以使用名称ConnectionStrings.DefaultConnection,为其设置一个值,并将其作为版本的一部分注入到appsettings中,如下所示:

ConnString

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

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

enter image description here

请问有什么方法可以实现这一目标?

2 个答案:

答案 0 :(得分:0)

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

这里是一个示例:

enter image description here

更多信息:Azure DevOps Variable Group not applying in Azure Function Configuration

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

答案 1 :(得分:0)

我们想要从 Azure Key Vault 访问的任何机密都说“connString”可以使用约定 $(connString) 作为管道中的变量进行访问。

要从 Azure 管道中的 Azure Key Vault 访问机密,有两种方法-

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

  2. 创建基于密钥保管库的变量组 - 变量组可以链接到 Azure 密钥保管库,您可以选择要在管道中读取的特定机密。您可以将一个变量组与多个管道关联起来。

在任何一种情况下,您都需要对 Azure Key Vault 拥有足够的权限,您可以在 Azure 门户的“访问策略”边栏选项卡中定义该权限