使用 DevOps 管道文件转换任务的 Azure keyvault 命名约定

问题描述 投票:0回答:1

短篇小说;尝试设置一个 devops 发布管道,从 azure keyvault 检索机密并将机密文件转换为我们的 appsettings.json 和 web.config,但 azure keyvault 中的命名约定使这变得更加困难。

更长的故事:我们当前的设置是通过 Windows 计算机上的 IIS 在本地运行,我们所有的秘密都提交到 appsettings.production.json 中的 git 中......我希望它们离开那里并进入秘密保险库以确保安全保留。

让事情变得更加复杂的是,我们有大约 20 个发布管道,它们做几乎完全相同的事情,除了部署到不同的 IIS 站点,这是因为每个开发人员和测试人员都有自己的运行环境。

整个事情非常混乱,我们未来的计划是迁移到 Azure,那里有更好的方法来做到这一点。但这至少还需要一年的时间,我希望尽快从我们的 git 存储库中获取秘密。

回到我遇到的问题:我正在开发/编辑一个 DevOps 发布管道,该管道从 Azure Keyvault 读取机密,并对“appsettings.json”文件执行 FileTransform 任务,但没有替换任何值。

我相信这是因为命名约定,FileTransform:Json 想要一个点 (.) 作为分隔符,但 keyvault 只允许我使用连字符 (-)。

所以我的应用程序设置:

{
    "AppSettings":
    {
        "Username": "<hidden>"
    }
}

不会被名为

的秘密所取代
 AppSettings-Username

所以问题是,我可以做些什么不同的事情,或者我应该把什么称为我的秘密?

我知道我可以使用管道“变量”部分来存储秘密,但这不太安全,而且我们有 20 个管道,我不想将秘密写下 20 次不同的时间,因为这会导致灾难.

另一个选择是将 appsettings.production.json 移动到服务器上,并在部署时存储它们,但我再次希望更好地控制秘密。我只是不想让它们出现在我们的存储库中。

azure-devops azure-pipelines naming-conventions azure-keyvault
1个回答
0
投票

您可以将 Azure 密钥保管库链接到变量组并将其链接到管道中的变量。

variables:
  - group: KeyVaultVariableGroup
  - name: AppSettings.Username
    value: $(AppSettings-Username) 

或者您可以使用 replace token 任务 而不是文件转换任务。

您可以参考使用保管库机密进行 Azure DevOps 文件转换了解更详细的步骤。

© www.soinside.com 2019 - 2024. All rights reserved.