(1)强化容器运行环境(宿主机)的安全。底层操作系统应受到良好保护,以防止对容器的攻击影响到实体主机。对此,Linux有一些现成的安全模块可用。
(2)保护DevOps开发运维流水线。在整个开发运维流水线上应用特权管理操作,确保只有经授权的用户可以访问该环境,并限制未授权用户在环境中的横向移动。
(3)镜像的漏洞扫描。在运行前对容器镜像执行深度漏洞扫描。
(4)持续监测容器镜像。在运行时检测容器和托管主机中的root提权、端口扫描、逆向Shell和其他可疑活动,防止漏洞利用攻击和突破。
4.3 企业利用容器技术的安全建议
对于企业而言,利用容器技术时,建议围绕应用安全和数据安全开展工作。
(1)应用安全方面:①容器可视化:容器内部对企业而言是“黑盒”,要力图实现容器内部信息的外部可视化,把内部的业务逻辑和信息交互逻辑,通过可视化的形式展现给管理用户。②容器应用安全措施:规范镜像构建,实行镜像签名,建立镜像中心拉取等的操作审计日志,使用可信的容器镜像等。③强化管理:定义运营、开发、安全团队之间的角色。职责分离是一种最佳实践,应以明确的角色和责任记录在案。在DevOps的基础上,实施DevSecOps(开发―安全―运维一体化)。④DevSecOps:是指先在应用程序开发的生命周期中引入安全性,从而尽可能地减少漏洞并使安全性更接近IT和业务目标。构成真正的DevSecOps环境的3个关键因素是:安全测试由开发团队完成;测试期间发现的问题由开发团队管理;解决这些问题的责任在于开发团队。⑤连续身份认证和授权:容器应用一般都是通过流水线的形式进行开发、测试、发布、上线的,对于每个环节都要进行身份认证和授权,保证安全。⑥应用安全恢复:采取各种措施,保证应用具有快速恢复的能力,比如采用集群技术。
(2)数据安全方面:①数据存储:对于传统的事务型数据使用关系型数据库更易于管理,因此不建议纳入容器管理。②数据流动:通过身份认证和授权,保障数据安全和范围控制;数据按照重要程度进行分类;不同用户之间容器网络隔离。默认设置为:不同用户的容器与容器之间不能互相访问;同一用户的所有容器可以互相访问。③数据备份:做好数据备份工作。④宿主机挂载目录:用户通过统一运维管理平台,只能将固定目录挂载到容器中。⑤分布式文件系统:用户通过统一运维管理平台申请数据文件,通过apikey/secrekey访问平台提供的分布式文件。⑥数据故障恢复:采取集群技术,同时做好数据备份。
5 结语
开源容器技术如Docker、K8S等已广泛被应用于实际生产环境,随着我国云计算平台的快速发展,容器技术将获得更大范围、更深层次的应用。在一些传统行业,特别是制造业,将会迎来容器化技术带来的创新机遇。一方面我们要做好规划和设计,大力推进基于容器技术的应用创新;另一方面我们要加大对开源容器技术的安全漏洞防范,保护应用安全和数据安全。
(原载于《保密科学技术》杂志2021年1月刊)