容器安全不是单一的操作而是多方位的过程,涉及采用安全代码控制及其他策略保护编译环境,并通过代码分析和单元测试来护卫容器的内容。
某些时候,公司企业还需制定出生产系统中保护容器安全的计划。下面我们就从运行时安全、平台安全和编配管理器安全等三个层面,列出强化容器运行时安全可采取的步骤。
一、运行时安全
确保控制面板安全
管理员账户限制在2个,一个负责操作和编配容器,另一个负责系统管理。网络、物理及逻辑分隔在现场系统及云/虚拟系统中都应实现。
资源使用分析
任何外部资源使用都应被看做潜在的攻击点。所以,使用可监视容器内外部运行时访问的第三方工具来限制这些进出口点是不错的安全防护方法。
选择正确的镜像
创建可信镜像存储库,确保生产环境只能从可信源拉取容器。公司企业还应购买可检查应用签名并拒绝非正确签署容器的解决方案。
不容篡改的容器
实时阻止攻击者篡改运行时容器的最简便方法之一,就是禁用SSH连接。同时,公司企业还应跟踪记录任何修改或版本控制。
存活时间
存活数周或数月的容器是有可能遭遇新漏洞的。公司企业应该限制容器的存活时间在数小时或数天之内,以便更新镜像和替换掉使用旧镜像的容器。
输入验证
这是毫无疑问的。公司企业需验证所有输入数据的适宜性和策略遵从性,无论是人工验证还是使用安全工具验证。还应确保每个容器都接收正确的用户和组ID。
二、平台安全
很多容器运行时安全建议关注虚拟机管理程序及底层操作系统的防护。但容器运行时安全应囊括更多,至少应包括以下平台安全操作:
宿主操作系统/内核巩固
通过选择强化版本的操作系统,公司企业可以保护宿主操作系统不受攻击和误操作的损害,而且还可以用基准配置去除掉不必要的功能。设置用户身份验证和访问角色以及二进制访问权限也是明智的做法。
资源隔离与分配
容器安全的一个重要部分,是限制容器对底层操作系统资源的访问。公司企业可以通过确保容器权限按角色分配,以及保证容器不以宿主操作系统的root用户权限运行,来达成这一点,然后就可以采用带名字空间和控制组功能的资源隔离模型了。
隔离工作负载
公司企业最好在网络层将容器与其引擎/操作系统组隔离开来。而且每台虚拟机上的容器数量最好做个限制,并根据信任等级/工作负载进行分组或分配到专用的云VPC上。
三、编配管理器安全
容器运行时安全还应负责特定编配管理器框架中的容器。容器管理器通常都需要调整优化以确保安全。
具体建议有:
- 限制能获得管理功能的人
- 隔离开发资源和产生资源
- 网络安全策略中将入站连接设为“默认禁止”
- 限制能获取元数据的服务和用户
- 确保资源请求方是经过授权的
- 快速修复和替换脆弱集群服务及容器
- 从所有容器及节点处收集日志
- 采用类似 CIS 关键安全控制那样的安全检查器和标准
相关阅读