开发团队应如何处理C#项目中存储的密码和秘密。
我们使用Visual Studio 2015和Azure DevOps(主要是VST,有时是Git Repos(作为代码存储库。
我们(随时可以(尝试将安全数据存储在单独的配置文件中,并在.tfignore
/.gitignore
中忽略这些文件。
不时有人忘记,秘密被提交。有时,密码存储在单元测试中,并且未删除事先检查。
如果一个开发人员立即通知,但是有时我们会在以后发现这一点。
我认为我已经看到某个地方(现在找不到(,可以在保存安全信息的代码中装饰行。这要么警告开发人员,甚至可以阻止入住。不确定这是Visual Studio Addin,Azure DevOps功能或其他不同的内容。
我认为您有两个选择:
- 环境变量:您可以使用同一密钥名称的环境变量覆盖本地应用程序秘密。
- Secret Manager:此工具将应用程序秘密分别存储到您的项目中,并且可以在不同的项目中共享。他们没有签入来源控制。但是,请注意,这仅是为了开发,因为内容未加密。对于生产,您可以使用诸如Azure密钥库之类的服务。
对于您的Azure DevOps构建和部署管道,您可以在管道>库>安全文件下使用安全文件选项。这将上传并加密秘密文件,并通过下载安全文件任务使其可用于管道。例如:
- task: DownloadSecureFile@1
name: mySecureFile
inputs:
secureFile: file-name-of-secure-file
一旦下载,您可以使用name
使用$(mySecureFile.secureFilePath)
变量在其他任务中引用它。