Visual studio 如何在Azure DevOps/TFS代码库中处理C#项目中的密码和机密

Visual studio 如何在Azure DevOps/TFS代码库中处理C#项目中的密码和机密,visual-studio,azure-devops,passwords,repository,secret-key,Visual Studio,Azure Devops,Passwords,Repository,Secret Key,开发团队应该如何处理存储在C#项目中的密码和秘密 我们使用Visual Studio 2015和Azure DevOps(主要是VST,但有时是git repos)作为代码存储库 我们尝试(尽可能)将安全数据存储在单独的配置文件中,并忽略.tfignore/.gitinore中的这些文件 有时有人会忘记,秘密也会被提交。 有时,密码存储在单元测试中,在签入之前不会删除 如果开发人员立即注意到这一点是很好的,但有时我们会在稍后发现这几次提交 我想我已经在某个地方看到(现在找不到)可以在代码中修饰包

开发团队应该如何处理存储在C#项目中的密码和秘密

我们使用Visual Studio 2015和Azure DevOps(主要是VST,但有时是git repos)作为代码存储库

我们尝试(尽可能)将安全数据存储在单独的配置文件中,并忽略
.tfignore
/
.gitinore
中的这些文件

有时有人会忘记,秘密也会被提交。 有时,密码存储在单元测试中,在签入之前不会删除

如果开发人员立即注意到这一点是很好的,但有时我们会在稍后发现这几次提交


我想我已经在某个地方看到(现在找不到)可以在代码中修饰包含安全信息的行。这会警告开发人员,甚至阻止签入。不确定这是Visual Studio插件、Azure DevOps功能还是其他功能。

我认为您有两种选择:

  • 环境变量:您可以使用相同密钥名称的环境变量覆盖本地应用程序机密
  • :此工具将应用程序机密单独存储到您的项目中,并可在不同的项目中共享。它们未签入到源代码管理。但是请注意,这仅用于开发,因为内容未加密。对于生产,您可以使用类似的服务
  • 对于Azure DevOps构建和部署管道,您可以使用管道>库>安全文件下的安全文件选项。这将上载并加密机密文件,并使其通过可供管道使用。例如:


    下载后,您可以使用
    名称
    在其他任务中使用
    $(mySecureRefile.secureFilePath)
    变量引用它。

    我认为您有两个选项:

  • 环境变量:您可以使用相同密钥名称的环境变量覆盖本地应用程序机密
  • :此工具将应用程序机密单独存储到您的项目中,并可在不同的项目中共享。它们未签入到源代码管理。但是请注意,这仅用于开发,因为内容未加密。对于生产,您可以使用类似的服务
  • 对于Azure DevOps构建和部署管道,您可以使用管道>库>安全文件下的安全文件选项。这将上载并加密机密文件,并使其通过可供管道使用。例如:

    下载后,您可以使用
    名称
    在其他任务中使用
    $(mysecurerefile.secureFilePath)
    变量引用它

    - task: DownloadSecureFile@1
      name: mySecureFile
        inputs:
          secureFile: file-name-of-secure-file