.NET Core - 如何在团队中管理用户机密

Hoc*_*eyJ 5 .net-core

秘密的存储用于.NET的核心是很好证明

但是,在 .NET Core 世界中,我找不到一篇关于如何在团队之间共享此类信息的好文章。

举例来说,我们有一个 .NET Core 项目,其中存储了信息,secrets.json并且有 10 个开发人员在使用该项目。

我能想到的选项:

  1. 将某些内容检查到源代码管理中 - 似乎违背了这一点(除了不小心将测试设置发布到现场之外)。

  2. 只是在我们之间交谈 - 有一种感觉,如果有人添加了一个秘密并去度假,其他开发人员会浪费时间找出遗漏了什么。如果两个开发人员同时添加一些东西,也可能会导致问题。

  3. 忽略secrets.json并始终使用Azure KeyVault - 即使对于开发人员也是如此。更复杂,我没有在任何地方看到推荐的,但它也适用于构建服务器。缺点是 Vault 可能会因未使用的设置而变得混乱,并且不清楚哪些需要实时复制。

可能还有其他选项我错过了。

与其他开发人员共享/同步秘密的最佳方式是什么?

编辑以下答案:

走 KeyVault 路线将起作用。如前所述,这需要额外的设置(例如,使用证书)。Microsoft Docs中的更多详细信息。

Ste*_*fan 8

尽管这是有偏见的:选择 3,使用密钥保管库。


免责声明

关于这个主题有很多博客文章和文档,在这里我将解决问题范围的一小部分。

另一种建议是使用 GitOps/SOPS 等方法,如此处所述


至于 Vault 选项,它有一些好处,我将列举一些:

  • 秘密存储在中心位置,使治理和轮换更容易
  • 秘密不为开发人员所知,或者仅在需要知道的情况下才知道,这使得它更安全
  • 如果正确实现,秘密就不再是版本控制的一部分,这也使其更加安全。

一些骗局

  • 需要一些时间才能正确设置
  • 它不太灵活,尤其是流程还没有到位的情况下。
  • 如果正确实施,秘密将不属于版本控制的一部分,这使得恢复更加困难。

详细说明最后一个:在某些情况下,您需要“稳定”且可恢复的秘密,例如:当客户端需要以特定方式集成时,这需要您控制秘密。尽管从安全角度来看这不是最佳实践,但它很常见。GitOps /SOPS更适合这种情况。


一般来说,访问秘密的开发人员越多,它就越不安全。

理想情况下,如果您设置正确,您最终将在所有环境(测试、暂存产品)中以相同的方式处理此问题。最后,解决方案和工艺应该独立于环境,以最大限度地提高生产稳定性。


但正如我所说;这是有偏见的、基于观点的。