【问题标题】:New to docker, is it possible to protect my source code and add permissions?docker新手,是否可以保护我的源代码并添加权限?
【发布时间】:2016-03-01 10:39:02
【问题描述】:

我有兴趣使用 Docker 来托管我正在帮助开发的项目。不过我对它的适用性有几个疑问。

首先,我想知道是否有可能对潜在用户/客户隐藏源代码?显然 Docker 的部分政策是代码是开放的,但是有没有办法添加权限以锁定除指定用户/开发者之外的任何人?

其次,就我们正在开发的产品而言 - 某些用户可能希望仅访问产品的一个方面。有什么方法可以向 docker 注册表添加权限,以便客户只能访问他们请求的内容?

【问题讨论】:

    标签: docker user-permissions docker-registry


    【解决方案1】:

    不确定 OP 是否需要这样做,但根据询问的上下文,VonC 的答案可能不完整:

    如果项目有可共享的可交付成果,这些成果与项目的来源是分开的,那么您确实可以按照建议去做。 例如,您使用 Dockerfile 创建一个映像,该文件设置系统、获取源代码、将项目编译为可交付成果并删除源(或在其他地方编译并复制它)。这是构建此软件包并将其发布给您的客户的一种很好且节省的方法。这就是@VonC 在他的回答中提出的建议。

    我想补充一点,例如,如果您正在查看一个 Web 系统,其中代码与可交付成果有些难以分开,这将是棘手的。这可能是在 HTML/PHP 等网络系统的情况下。

    问题是,最终图像将与客户端服务器相同。它以一种或另一种方式完全可访问,并且上面的所有内容都是可读的。因此,虽然您根本不必在系统上保留不需要的源代码和机密信息,但您不能使用 docker 作为一种打包方法来提供隐藏源代码的自包含系统。

    所以你不能锁定图像中的任何人;您唯一能做的就是确保编译项目所需的任何内容在最终映像中不可用。如果编译后不需要“秘密”内容,这只是一个解决方案。

    【讨论】:

    • 我需要澄清一点:对于PHP和MySQL等Web应用程序,我们是否可以让docker运行应用程序,即docker的Web服务器,例如Apache,来读取,写入和执行应用程序源,而我们阻止任何其他用户进入 docker 读取或写入该源代码。当然,可以通过密码或 docker 本身的 sudo 用户而不是托管系统来完全访问这些文件。
    • 如果您要保护的用户对运行容器的服务器具有完全访问权限,那么他们可以以 root 身份“进入”容器。从那里我看不到您如何保护您的代码,所以没有。底线是您不应该使用 docker 作为保护系统。任何适用于非 docker 的系统都可以在这里工作,但是没有必要使用 docker(至少,不是专门针对这个用例)
    • 那么您认为,为了保护代码,我们可以使用Zend Guard 等字节码编译的手段或加密`public_html' 文件夹吗?
    • 当然可以,只要您将实际来源远离容器即可。但后来它不再与 docker 有任何关系。这本身并不是一件坏事,它就像您将它发布到您的客户端可以完全访问的私有服务器一样。
    【解决方案2】:

    Docker 不“托管项目”:它提供了指定执行环境(Dockerfile 和 docker build)并运行它的可能性。

    “源”(Dockerfile 和您的项目源等资源)根本不需要可用:只有构建的 图像 必须存在才能通过 docker 运行它。
    该映像可以存储在私有注册表(docker 发行版)中,它不会包含您的项目的源代码,而仅包含从这些源构建并通过 Dockerfile 指令安装在映像中的交付(可执行文件)。

    某些用户可能希望只访问产品的一个方面。

    一个简单的解决方案是:

    • 多张图片(每张都安装了您产品的某个方面)
    • 多个 docker 镜像注册表(每个镜像只供您的特定客户组访问,并且仅包括相关镜像)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-29
      • 2016-05-02
      • 2013-11-19
      • 2020-09-01
      • 2015-10-16
      • 2017-06-14
      • 2014-06-22
      • 2019-01-27
      相关资源
      最近更新 更多