随着容器的流行,诸如K8s、Mesoc、Docker Swarm等容器编排平台已经将安全机制整合进来。虽然方便了开发人员,但安全问题是极其复杂的,容器的实施也并非傻瓜式的操作,实际上许多开发团队在使用这些容器编排平台时,反而制造出新的安全问题。以下是常见的6种容器安全问题:
1. 过多的关注容器本身
为镜像的安全维持最佳实践固然重要,但开发者通常过多的关注镜像本身的安全而忽略了执行环境。容器内再多的安全机制对来自于宿主机的利用也无能为力,因此从操作系统和主机网络的每一层都不能忽略安全。
2. 假定代码库是安全的
包括开发套件中的代码库和第三方的库,而这些库中很可能存有脆弱性。当代码编译完成并生成容器时,安全风险也就生成了。解决办法是限制代码库的使用,只有在满足必要标准的情况下,并且执行脆弱性扫描和安全性评估之后再使用第三方代码库。
3. 给予容器不必要的特权
给予容器过多的权限,会被攻击者所利用,造成极大的安全风险。应该对容器应用最小特权原则,并且还要对运行时行为进行监测,以确保及时检测出应用权限被滥用。如将权限限制在执行环境中,而不是主机环境。否则被入侵的不仅是容器,而会是主机了。
4. 过度暴露容器
当容器在公网执行的时候,要保证只有绝对必要的通道才能打开。容器是通过一系列定义在镜像中的命令建立起来的,而镜像的建立则需要允许运行root权限。开发者常犯的错误在于保留了这些权限,即使容器已经部署完毕并开始运行。
5. 未能严谨的检查镜像
另一个常犯的错误就是,在将别人开发的镜像整合进自己的方案之前,没有正确的对其进行检查。恶意软件和漏洞扫描都是必要的程序。假定镜像是安全的这种思想,非常危险。
6. 不尊重不可变镜像的原则
不可变镜像是Docker、K8s或其他容器解决方案的一个原则,在互联网上部署系统和数据的时候,保证系统和数据的完整性是一个基础原则。不可变镜像有几个好处,如可预测、自动化恢复等,最重要的就是完整性,这也是安全的核心原则之一。如果要改变的话,也要确保在保证质量的前提下,在测试环境对镜像做出改变,然后再部署新的不可变镜像,代替旧的镜像。
声明:本文来自数世咨询,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。