如何保护Container as a Service(caas)中的源代码和数据库结构



Container as a Service(caas)是我们周围听到的一个热门话题。但我在互联网上没有发现关于这个模型的一些困惑。

实际上,我们为客户提供的服务包括敏感数据(财务文件等)。因此,我们的一些客户不愿与我们共享数据。

因此,他们要求以码头集装箱的形式提供解决方案因此,在这种情况下,所有数据和我们的应用程序都将托管在它们自己的服务器中。我们将无法访问他们的数据。我们将按月向他们收费。

简而言之,我们需要将docker容器中的所有应用程序(源代码和数据库)作为黑盒交付。因此,客户端可以通过网络与docker容器进行交互,但无法进入docker容器查看我们的源代码和DB结构。

这就是为什么我对如何保护源代码和数据库结构感到困惑(源代码为PHP,数据库为PGSQL)

其次,我们如何将docker容器的代码与更新的代码同步

对这个问题的任何帮助都将不胜感激。

我们如何保护我们的源代码

使用一种经过编译的语言,而不是简单的反编译(C++,Go)。如果您使用的解释语言包括容器中的源代码(Javascript、Python、Ruby),那么一旦客户端有了图像的副本,他们就可以运行它或以其他方式打开它并查看您的源代码。

和数据库结构

除了保护数据库和应用程序代码之外,没有具体的方法可以做到这一点。任何能够连接到数据库的人都可以很容易地查询模式。

我们如何将Docker容器的代码与更新的代码同步?

向客户端发送一个新映像,让他们删除现有容器并创建一个新容器。

这很重要,需要一些预先设计。当您这样做时,容器本地文件系统中的任何内容都将丢失,这意味着您永远不会在容器的本地文件系统存储任何无法轻松重新创建的内容。您已经有了一个数据库,所以计划将大部分实际数据保留在那里。如果您生成日志,请在进程的stdout上生成日志(这样核心Docker日志系统就可以收集日志),或者使用主机绑定装载目录将日志放在可以轻松查看的地方。

这也是像Kubernetes这样的集群管理器所使用的机制。您可以告诉Kubernetes部署控制器您想要一个映像me/abc:123的3个副本。如果您随后告诉它您想要3个me/abc:246的副本,它将使用新映像启动新容器,然后删除旧容器。

相反,您根本不需要考虑"同步代码"或以其他方式登录容器,docker ps应该能够立即告诉您客户端正在运行的系统版本(通过特定的图像标记)。

相关内容

  • 没有找到相关文章