开源项目如何处理安全工件?

信息安全 密钥管理 开源
2021-09-09 10:01:55

具体来说,如何处理密钥库或构建或运行应用程序所需的其他项目?

就我而言,我有一个 Chrome OS 应用程序,它需要一个密钥库来构建并发布到 Chrome 网上应用店。

我有几个想法,但我真的很想知道其他人实际上是如何处理这种情况的。

2个回答

请记住以下重要规则:

  • 不要在代码中硬编码加密密钥或秘密!

此规则并非特定于开源。这是所有源代码的一个很好的经验法则。

也许您想知道:您应该将密钥、密码等存储在哪里?答案:将它们存储在单独的配置文件中,而不是源代码中。不要将它们包含在源代码存储库/版本控制系统中。

在https://stackoverflow.com/questions/1635963/open-source-and-how-it-works-for-secure-projects中提出了类似的问题

由于这确实是一个集成/部署问题,您可以考虑使用查找功能来查找敏感数据。

通过使用关键字来识别您的数据并在开发、暂存和生产中保留单独的表,您仍然可以针对这部分代码运行测试,同时保护敏感细节。

示例:Java getProperty () 或 Puppet extlookup ()

更新:另请参阅此Encrypted Yaml Hiera扩展。 Hiera是 Puppet 中 extlookup() 的(现在是标准的)继任者。

您仍然需要一个可以在没有操作员在场的情况下解密这些密钥的地方,因此 Puppet Master 需要知道这些密钥。因为eyaml使用非对称加密,所以不需要共享密钥。确实需要适当的控制来访问 Puppet master,但这并不是什么新鲜事。