如何在docker镜像中加密docker镜像或源代码?

时间:2016-06-02 07:09:52

标签: encryption docker

假设我有一个docker镜像,并将其部署在某个服务器上。但我不希望其他用户访问此图像。有没有一种加密docker镜像的好方法?

2 个答案:

答案 0 :(得分:6)

实际上不是,如果用户有权运行docker守护程序,那么他们将可以访问所有图像 - 这是由于docker需要提升权限才能运行。

有关原因的详细信息,请参阅docker security guide的摘录。

  

Docker守护程序攻击面

     

运行容器(和应用程序)   使用Docker意味着运行Docker守护程序。这个守护进程目前   需要root权限,因此你应该知道一些   重要的细节。

     

首先,只允许受信任的用户控制您的   Docker守护进程。这是一些强大的Docker的直接后果   特征。具体来说,Docker允许您在它们之间共享目录   Docker主机和来宾容器;它允许你这样做   不限制容器的访问权限。这意味着   你可以启动一个容器,其中/ host目录将是/   主机上的目录;并且容器将能够改变你的   主机文件系统没有任何限制。这与如何相似   虚拟化系统允许文件系统资源共享。没有   阻止您共享根文件系统(甚至根目录)   阻止设备)与虚拟机。

     

这具有很强的安全意义:例如,如果你有工具   来自Web服务器的Docker通过API配置容器   通过参数检查,应该比平时更加​​小心   确保恶意用户无法传递精心设计的参数   Docker创建任意容器。

     

出于这个原因,REST API端点(由Docker CLI使用)   与Docker守护进程通信)在Docker 0.5.2和现在改变了   使用UNIX套接字而不是绑定在127.0.0.1上的TCP套接字(   如果你发生,后者容易发生跨站点请求伪造攻击   在VM之外的本地计算机上直接运行Docker。您   然后可以使用传统的UNIX权限检查来限制对该访问的访问   控制插座。

     

如果您明确决定,还可以通过HTTP公开REST API   这样做。但是,如果你这样做,请注意上面提到的   安全隐含,您应该确保它只能被访问   来自可信网络或VPN;或用例如stunnel和   客户端SSL证书。您还可以使用HTTPS和安全保护它们   证书。

     

守护程序也可能容易受到其他输入的攻击,例如   图像从带有“docker load”的磁盘加载,或从网络加载   用'docker pull'。这一直是改善的重点   社区,特别是'拉'安全。虽然这些重叠,但它   应该注意'docker load'是一种备份机制   恢复并且当前不被视为加载的安全机制   图片。从Docker 1.3.2开始,图像现在以chrooted提取   Linux / Unix平台上的子进程,是更广泛的第一步   努力实现特权分离。

     

最终,预计Docker守护程序将运行受限制   权限,委派操作经过良好审计的子流程,每个   具有自己的(非常有限的)Linux功能范围,虚拟化   网络设置,文件系统管理等。很可能,   Docker引擎本身的部分将在容器内部运行。

     

最后,如果您在服务器上运行Docker,建议您运行   在服务器中专门使用Docker,并移动所有其他服务   由Docker控制的容器。当然,保持你的好   最喜欢的管理工具(可能至少是一个SSH服务器),以及   现有的监督/监督程序(例如,NRPE,收集等)。

答案 1 :(得分:0)

如果只需要加密一些字符串,请说。可以使用openssl或替代解决方案对此数据进行加密。加密解决方案应在docker容器内设置。构建容器时-数据已加密。当容器运行时-数据被解密(可能是使用从.env文件传递的密码短语在条目的帮助下)。这样可以安全地存储容器。

本周我会在时间允许的情况下使用它,因为我自己很好奇。