什么是容器安全?包含哪些机制?
容器安全是Docker社区极为关注的一个问题,Docker是否能提供安全的环境,尤其是在公有云环境中,这直接关系到Docker是否可以大规模用于生产环境。容器安全的安全机制有哪些?包括Docker daemon在以TCP形式提供服务的同时使用传输层安全协议在构建使用镜像时会验证镜像的签名证书;通过cgroups及namespaces 来对容器进行资源限制和隔离;提供自定义容器能力( capabil
容器安全是Docker社区极为关注的一个问题,Docker是否能提供安全的环境,尤其是在公有云环境中,这直接关系到Docker是否可以大规模用于生产环境。
容器安全的安全机制有哪些?包括Docker daemon在以TCP形式提供服务的同时使用传输层安全协议在构建使用镜像时会验证镜像的签名证书;通过cgroups及namespaces 来对容器进行资源限制和隔离;提供自定义容器能力( capability)的接口;通过定义seccomp profile 限制容器内进程系统调用的范围等。这将在很大程度上提高Docker容器的安全性。
1.Docker daemon安全
Docker向外界提供服务的通信形式,默认是以Unix域套接字的方式来与客户端进行通信。这种方式相对于TCP形式比较安全,只有进入daemon宿主机所在机器并且有权访问daemon 的域套接字才可以和daemon建立通信。
如果以TCP形式向外界提供服务,可以访问到daemon所在主机,用户都可能成为潜在的攻击者。由于数据传输需要通过网络进行,数据可能被截获或被修改。为了提高TCP的通信方式的安全性,Docker为提供了TLS传输层安全协议。在Docker 中可以设置--tlsverify来进行安全传输检验,通过tlscacert (信任的证书)、tlskey (服务器或者客户端秘钥)、tlscert(证书位置)3个参数来配置。安全认证主要是在服务器端设置, 客户端可以对服务端进行验证。
2.镜像安全
Docker目前提供registry访问权限控制以保证镜像安全。Docker从1.3版本有了“镜像数字签名”功能,防止官方镜像被篡改或损坏,保证官方镜像的完整性,镜像校验功能需要用户进行docker login登录。
3.内核安全
内核为容器提供两种技术cgroups和namespace,分别对容器进行资源限制和资源隔离,使容器就像是使用一台独立主机环境。cgroups资源限制是指容器本质上是进程,cgroups的存在就是为了限制宿主机上不同容器的资源使用量,避免单个容器耗尽宿主机资源而导致其他容器异常。namespace资源隔离为了使容器处在独立的环境中,Docker使用namespace技术来隔离容器,使容器与容器之间、容器与宿主机之间相互隔离。
4.容器之间的网络安全
Docker daemon指定--icc标志的时候,可以禁止容器与容器之间通信,主要通过设定iptables 规则实现。
5. Docker容器能力限制
docker run参数中提供了容器能力配置的接口。可以在创建容器时在容器默认能力的基础上对容器的能力进行增加或者减少。具有通过命令削减Docker容器进程的能力和增添能力容器需要使用默认能力之外的能力,例如,如给容器增加一个允许修改系统时间的命令。
6.secomp
seccomp(secure computing mode)是Linux的一种内核特性,可用于限制进程能够调用的系统调用的范围,从而减少内核的攻击面,被广泛用于构建沙盒。在Docker中,我们通过为每个容器编写json格式的seccomp profile来实现对容器中进程系统调用的限制。
但是,Docker在安全方面依然面临一些问题,比如:磁盘资源限制问题、容器逃逸问题、容器DOS攻击与流量限制的问题、超级权限的问题等。总体来看,Docker已经提供了很多安全机制,Docker在安全方面也已经做了很多的工作,在使用Docker的时候需充分利用Docker 已有的安全机制,在多用户环境下则尤其需要注意Docker的安全问题。
更多推荐
所有评论(0)