【发布时间】:2019-07-29 03:07:17
【问题描述】:
.Net Core 带有一个秘密管理工具,用于存储用于开发目的的秘密。如果我正确理解了文档,则不涉及加密,所有内容都以纯文本形式存储。
现在的问题是,如果我们只能从 appsettings.secrets.json 文件中读取,为什么要使用这种相对繁琐的方法?这更容易使用并查看秘密并将其添加到 .gitignore 以便它永远不会出现在源代码管理中。
使用这种更简单的方法是否存在我没有考虑过的安全问题?
附:我只能想到意外提交机密文件的危险,但除非您更改整个 .gitignore 文件,否则这并不容易
【问题讨论】:
-
您所描述的与该工具的功能相同,只是手动操作。它比调用一个工具更麻烦。你当然可以自动化它。虽然此时您已经重建了秘密管理工具本身。至于不小心提交了机密文件,这非常很容易 - 团队中的某个人会拼错它。或者放错文件夹
-
将文件提供给某人比通常运行命令更容易,因为每台新的开发人员机器都需要它
-
另一个问题是 build 服务器。
.secrets.json文件将如何传递到那里? -
还有一个问题是通过
.gitignore工作会绕过配置约定。在生产中保护机密的一种常用方法是使用云提供商或数据保护提供商的密钥管理服务。 Secrets 管理工具正好适合该架构,本质上只是另一个配置提供程序。您可以使用不同的秘密,就像您可以在每个环境中使用不同的配置提供程序一样。不过,您必须手动移动.secrets.json文件,并且...修改您的代码以在每个环境中查找它 -
将文件提供给某人实际上比使用该工具要更多个步骤。在配置架构中正确使用它需要更多步骤。所有这些都是选项,您可以轻松组合它们
标签: .net-core asp.net-core-security