容器技术可以极大地提高开发效率,但也会使企业面临潜在的风险。由于容器环境的复杂性和动态性,容器安全不同于传统的安全方法,容器安全包括了应用程序的构建到运行时基础设施的所有环节的安全,需要不同的安全策略。
继发布《生产环境中的容器运行指南》之后,青藤云安全在容器安全领域再发新报告——《101文档:容器安全的关键指标》,该报告简述了常见的容器安全四大威胁,详解了从确保构建环节安全、确保运行时安全的安全策略,阐述了容器监控和审计的相关内容,从全生命周期确保容器免受恶意攻击。
了解《101文档:容器安全的关键指标》完整版,关注微信公众号「青藤云安全」。
(一)常见的容器安全威胁
容器安全需要综合使用工具、策略和流程来遏制安全威胁,并应用于容器的整个生命周期,包括了构建过程、运行时环境和平台(Kubernetes和主机操作系统)。第一章分析了容器环境中的安全类型、普遍关注的安全风险以及应该采取的降低风险的必要步骤。
·构建环境安全
开发软件和构建容器环境的过程应该成为确保容器安全的起点。构建过程是最容易被植入恶意代码的环节,比如低级错误的源代码、错误配置脚本、不安全的库和代码等。
·运行时安全
除了容器镜像和应用程序外,容器本身也可能存在安全问题。当启动或管理的容器本身包含漏洞时,如果不及时加固、修补,则会导致“容器逃逸”发生,让攻击者获得容器或主机操作系统的访问权限,产生一系列的安全风险。
·操作系统安全
在容器化堆栈的最底层,主机操作系统是最关键的攻击目标,一旦受到威胁,可能会暴露其上运行的所有容器。底层操作系统的安全性一直是一个重大问题,比如正确的配置,以限制每个容器对其所需资源的访问。
·编排管理安全
以Kubernetes为代表的容器编排工具,其重点在于支持容器集群的可扩展性和易于管理性,但不能确保安全性,存在着诸如不安全的默认配置、权限升级、代码注入漏洞等安全问题。
(二)确保构建环节安全
DevOps打破了不同部门之间的障碍,运维和安全团队获得了更多访问权限,这就要求更好的安全控制措施来限制谁有权限更改构建环境和更新代码,任何变更都需要经过审计和验证。CI/CD管道构建安全分为应用程序安全性和用于构建部署应用程序的工具安全性。
·构建安全
在构建环节提供了确保容器构建安全的建议,包括Docker和其他平台的工具、用户自动化和编排源代码、Docker引擎和镜像仓库等。
·容器验证和安全测试
对容器内执行代码和扩展组件进行测试,验证是否符合安全和运营实践,是确保容器安全的核心,比如安全单元测试、代码分析、漏洞分析、加固等。
(三)确保运行时安全
本章重点关注生产环境中的容器安全,包括将哪些镜像推送至镜像仓库、容器运行时及底层主机系统的安全性。
·运行时安全
运行时容器安全是有效安全态势的先决条件。运行时阶段的安全需要注意控制面、资源使用分析、建立可信的镜像、不可变镜像、容器存活时间、输入验证、容器组隔离等角度。
·平台安全
主机级别的攻击面可以通过传统的基于主机的解决方案来保护,而容器内攻击面需要使用更深度的防御方法进行处理。运行时的容器自身安全包含了主机操作系统加固和基于节点的命名空间隔离、按信任级别隔离工作负载等方法。
·编排工具安全
编排工具和所有相关的系统服务也要在运行时受到保护,k8s等编排管理工具虽然具备一些安全功能,但也需要对管理面、限制发现、升级补丁、日志记录等进行有效的安全管理。
·Secrets 安全
了解需要控制哪些身份验证和授权信息,了解如何配置、存储和管理以简化Secrets 管理的整体过程至关重要。如果配置合理,Secrets 管理会让整个容器环境更加安全。
(四)容器监控和审计
通过对容器进行持续性监控,可以确保基础架构活动的可追溯性。容器审计是生产环境必不可少的安全和合规措施。
·监控
衡量容器安全监控方案的常见指标包括部署模型、策略管理、行为分析、管控能力、平台支持等。
·审计和合规
审计和合规团队通过操作日志、配置数据和流程文档,可以查找违规、错误配置和异常活动轨迹,对安全漏洞进行取证追踪。
(五)写在最后
在容器环境中,从开发到生产都需要持续性的保护。通过综合采用最佳实践、现有对策和新兴技术,可以采取多种方法来有效确保容器安全。