【发布时间】:2020-03-02 16:31:34
【问题描述】:
在 appsettings.json 中创建连接字符串的常用方法是:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(local); Database=MyProperty; Trusted_Connection=True;"
}
}
我想在 DevOps 发布管道中用我的 QA 数据库替换连接字符串值。
如果我在 Azure Devops 中声明一个发布管道变量,我可以使用名称 ConnectionStrings.DefaultConnection,为其设置一个值,它会将值作为发布的一部分注入 appsettings,如下所示:
但是,如果不是上述,我想使用 Azure Key Vault 并创建一个 Key Vault 机密,我只能将机密名称创建为 DefaultConnection,因为机密名称中不允许使用句点,因此连接字符串不会在发布期间被秘密值替换。 我假设如果我可以创建一个秘密作为 ConnectionStrings.DefaultConnection 它会起作用,但我们不允许添加特殊字符。
即使我添加了变量组,它也会采用不能接受特殊字符的秘密名称,如下所示:
请问有什么方法可以实现吗?
【问题讨论】:
-
您是否考虑过尽可能使用托管标识(例如,您的数据库是否托管在 Azure 中),而不是在应用程序设置中以纯文本形式放置机密?
-
是的,这是我根据我的问题尝试使用 Azure Key Vault 实现的目标,以便从保管库中检索值
-
这不是托管身份。有关使用 Azure SQL Server 的示例,请参阅 docs.microsoft.com/en-us/azure/app-service/…。许多服务支持分配一个比共享凭据更容易和更安全的身份管理(即使是秘密的)。
-
酷,感谢您的信息!
标签: azure connection-string devops azure-pipelines-release-pipeline azure-keyvault