在构建社交平台时,我可以信任公共代码版本控制平台吗?

信息安全 安全编码 内容安全策略
2021-08-18 08:40:32

我们正在开发一种社交平台。它最初是针对有限数量用户的封闭测试版,但目标是达到数百万订阅。

我们目前的资源有限,包括基础设施和 DevOps。所以我们使用 GitLab 对源代码进行版本控制。

让我们假设,我们做到了,并且在几年内该服务拥有数百万用户。你觉得现阶段使用 GitLab 对源代码进行版本控制如何?您认为这是一个重大的安全威胁吗?需要考虑的几个原因:

  • 没有可能的真正保证 GitLab 的工作人员无法调查来源并发现安全漏洞或某些敏感配置。
  • GitLab 员工可以将源代码出售给第三方
  • GitLab 可能被迫在我们不知道的情况下向某些政府提供源代码

我知道这些观点听起来很偏执。网络的目的是完全合法和道德的,但我相信任何此类服务都必须保护其用户的隐私。该计划是稍后转移到我们的私人服务器,但我们必须以某种方式开始。

那么,您认为在项目的早期阶段使用私有 GitLab 或 Bitbucket 存储库是否可行,或者这是一个不可接受的安全威胁?

免责声明:我不声称 GitLab 会做任何描述的事情。

4个回答

不幸的是,您有责任查看您的威胁模型是否合理。因此,无论我们是否将使用该平台视为安全威胁,我们都不能简单地给出明确的“是”。

但是,我想扩展两点:

  • 您似乎非常担心包含漏洞的源代码,并且披露它意味着个人或团体可以识别它们。

就个人而言,我对向用户提供服务的安全性依赖于源代码而不是开源的服务没有信心。对我来说,这是一种默默无闻的安全。在最好的世界里,即使代码泄漏,您也希望您的平台同样可靠。因此,我强烈建议您与一些渗透测试人员/代码审查人员合作,或者至少与一些非常具有安全意识的开发人员合作。

  • 您提到想要迁移到私有版本控制服务器。

立即执行此操作并完成此操作。冒着听起来直率的风险,考虑到您刚开始,如果这似乎是一个复杂或昂贵的步骤,我会质疑您的技术技能。Gitlab 甚至提供了一个自托管的解决方案;只要确保检查平台并阻止与他们的服务器的任何通信,如果这部分让您担心。

祝你好运。

@Simon 已经提供了一个很棒的答案,但我想补充一下这一点:

Gitlab 的工作人员无法调查源头并发现安全漏洞或某些敏感配置,并没有可能的真正保证

配置不属于存储库。根据12的第三个因素,配置应在部署时与代码结合,而不是之前

为此,请让您的应用程序在运行时从环境中读取配置值。例如,对于 Django,这将涉及您这样定义您的密钥:

import os


SECRET_KEY = os.environ['DJANGO_SECRET_KEY']

并让 systemd(或任何运行您的项目)设置该环境变量。

正如@Ave 在下面的评论中指出的那样,您只会将生产机密存储在生产的构建步骤和服务器上。你会为你的 CI 服务器、登台服务器和其他任何东西设置虚假或随机的秘密。如果问题是您的存储库主机在机密方面的信任,那么您可以选择使用 Chef、Spinnaker、Puppet 或您可能选择的任何其他东西,而不是存储库主机的 CD。

除了 Gitlab(包括纯 Git),还有多种选择。Gitlab 是一个开源/开放代码项目,因此您可以将其安装在您的私人服务器上,因此除了您的团队之外没有人可以访问。

我相信这会引发更突出的问题——您的员工知道安全漏洞或某些敏感配置,并且可能会将源代码出售给某些第三方或政府。更重要的是,您的员工可以访问数据,这比源代码更为关键和敏感。你打算如何解决这个问题?

为什么不使用私有 gitlab 实例,这将减轻您的任何顾虑!

如果您的平台要覆盖数百万用户,您至少可以拥有一个每月 5 美元的云实例来运行它。

但是您的担忧来自您使用的 SaaS 平台的员工/管理员可以最终访问您的平台,这对于任何云服务提供商甚至物理专用服务器提供商(假设磁盘未加密)都是如此,在这种情况下运行本地服务器。

在这一点上,您必须问自己人们对您的系统感兴趣的敏感度/可能性有多大