【摘 要】 随着企业数字化转型和新基建的推进,云原生的应用越来越广泛,其安全问题也逐步受到关注。本文主要从云原生的核心组件之一容器展开分析,论述了私有云容器的技术和功能特点,并从镜像、容器、主机、网络、服务网格和运维管理等方面进行安全风险分析,提出了私有云容器安全防护框架,为企业私有云容器安全防护提供参考。
【关键词】 私有云 容器安全 风险分析 主机安全 网络安全
1 引言
在企业的数字化转型过程中,一些企业对信息化提出应用敏捷开发、快速迭代、持续更新、高弹性、易扩展和高安全等要求。为实现上述要求,云原生成为企业数字化转型的首选工具,作为云原生核心组件之一的容器技术得到广泛应用。但在企业基于容器技术部署业务应用时,不同程度地存在安全隐患,且随着私有云的推广与应用,相应的安全风险日益凸显。
2 私有云容器技术分类
2.1 容器
容器技术是指在操作系统层实现了对计算机系统资源的虚拟化,在操作系统中,通过对CPU、内存和文件系统等资源的隔离、划分和控制,实现进程之间资源的透明使用。与虚拟机相比,容器启动速度更快,且几乎不存在性能损耗。与云计算的结合,弹性的云资源和灵活的云应用,使得容器技术在云计算领域脱颖而出。
2.2 容器编排调度
容器编排调度技术包括容器调度和集群资源管理。容器调度是指调度特定的容器到主机上运行;集群资源管理是指帮助用户以集群的方式在主机上启动容器,实现相应的网络互联,同时提供可扩展、容错、负载和高可用等保障。单个应用服务部署也需要大量容器的共同参与,大规模的容器管理、故障排查和溯源等进一步催生了容器统筹管理的必要性。
2.3 服务网格
服务网格(Service Mesh)技术是专门处理服务间通信的技术,它可将服务间的复杂通信分层并下沉到基础设施层,从而在云原生应用组成的复杂服务拓扑中可靠地传递请求。服务网格通常是一组随着应用代码部署的轻量级网络代理,应用感知不到它的存在。使用服务网格,开发者不需要改动现有的服务代码,不用关心应用的服务管理,只需要专注于业务逻辑的开发,因此能够赋予开发者更多的创造性。
2.4 敏捷开发
敏捷开发是一种能应对快速变化的软件开发模式,它采用“迭代开发”将软件项目需求分成多个进行迭代,且每个迭代成果在完成开发、测试、反馈等环节后都可进行交付,能够使资源得到最大化利用,反馈更加及时,交付效率显著提高。开发运维一体化(DevOps)基于敏捷开发将运维纳入产品开发过程,促进了开发、运维、测试之间的高效协同,集开发、运维、测试于一体,实现软件持续交付、快速修复和解决业务应用问题。
3 私有云容器安全风险分析
3.1 镜像安全风险
容器镜像高度依赖开放的开源代码,而开源代码本身存在着错综复杂的依赖调用关系。开源代码开发者可随意使用、修改、发布开源软件包,使得潜在的安全漏洞或恶意镜像在技术社区中传递,在容器镜像中埋下了较大安全隐患。这些镜像带来的威胁不仅会影响容器安全,还可能层层传递、反向渗透到底层宿主机、网络基础设施,威胁整个私有云平台的安全运行。镜像带来的风险主要包括以下5种:
(1)开源镜像可能存在漏洞、病毒或恶意程序等安全风险;
(2)镜像中存在的明文密钥在应用服务部署时泄露;
(3)从镜像仓库中获取镜像的路径被劫持或恶意修改;
(4)镜像中存在的安全外壳协议(Secure Shell Protocol,SSH)服务增加了内部服务暴露和攻击的风险;
(5)镜像仓库被攻击或泄露,导致镜像携带恶意程序或无法使用。
3.2 容器安全风险
容器是一种共享了宿主机操作系统内核,但未实现物理层隔离的虚拟化技术。在运行软件存在漏洞或者宿主机遭到攻击的情况下,可能会出现容器逃逸和资源隔离失效,导致容器所承载应用服务异常。在日常使用过程中,管理员或用户错误配置了容器的环境参数、运行参数,直接将宿主机的某些敏感卷挂载到容器中或直接使用互联网相关源代码,从而给攻击者留有可乘之机,使攻击者可通过这些错误的容器参数、利用敏感卷和源代码漏洞获取宿主机资源的控制权,进而访问宿主机中的所有文件,任意进入其所承载的容器中,致使宿主机本身及其所承载的容器存在安全隐患。
3.3 主机安全风险
主机上的安全配置、安全漏洞和恶意进程会直接影响容器的安全,攻击者利用容器共享宿主机内核的原理,通过容器漏洞提升权限,获得宿主机根用户(root)权限。在容器无根用户权限限制的情况下,攻击者以容器为跳板,可直接控制容器宿主机及部署的所有服务。同时由于容器位于宿主机内部,容器间的网络流量不经过边界安全防护设备,因此难以检测容器间的恶意流量。一旦内部恶意容器发起分布式拒绝服务(DDoS)攻击,将迅速消耗并占满主机和集群资源,造成业务应用中断,严重时私有云集群将面临瘫痪的风险。
3.4 网络安全风险
网络实现了容器与容器之间、容器与外部之间的通信,以及应用之间的交互,但在容器的网络环境中,其网络控制风险较传统网络更为复杂、严峻。例如,容器Kubernetes(K8s)自身虽设立了命名空间来进行资源分配和管理,但每个命名空间内地址是混乱的,且网络完全互通,难以实现精细化控制。若容器之间的网络未进行有效隔离和控制,一旦攻击者控制某台主机或容器,则可以此为跳板发起内部攻击,即“东西向攻击”。当内部攻击行为成功绕过南北访问控制规则后,将会对整个网络进行更深入地攻击和破坏。
3.5 服务网格安全风险
容器平台中,多个微服务构成了一个应用服务,这些微服务之间的通信由服务网格代理,实现微服务之间的消息传递。在消息传递的过程中若未采用加密保护的通信技术防护,攻击者可能通过一个服务控制权限,开展劫持、窃听、伪造等破坏活动,造成数据泄露或服务异常。当服务间存在认证权限配置漏洞时,攻击者可基于某个服务开展越权攻击并控制其他服务,进而攻击整个集群中的应用服务。
3.6 运维管理安全风险
随着私有云的建设与使用,各企业若仍采用传统的模式开展相关业务的运维管理,则面临着组织机构不健全、平台管理有漏洞、系统防护有死角等管理风险。因私有云平台的建设往往是一次性搭建完主体,后续不断扩容资源,从而满足业务所需和确保平台的鲁棒性,但由于缺少创新的运维/运营管理模式,私有云并不会产生持续向上的经济效益。随着使用时间增长,云平台会逐步出现设备老化、技术淘汰等问题,其适用性降低,会导致企业潜在效益降低。此时,企业将面临重复投资建设的风险,即由传统单体重复建设演变成云重复建设。
4 私有云容器安全防护
为使私有云在企业中更好地安全稳定运行,为企业转型发展奠定基础,针对以上风险,本文从镜像、容器、主机、网络、服务网格和运维管理等方面分别采取相应的安全防护措施,形成私有云容器安全防护架构,如图1所示。
4.1 镜像安全防护
为提升私有云整体安全防护能力,私有云安全防护整体“向左迁移”,从容器镜像构建开始,首先是用户尽可能不直接使用开源镜像,若需使用则应建立相对独立的区域,使用前进行病毒、恶意代码查杀和漏洞检测等;其次在对镜像打包时,应关闭多余服务,实时更新安全漏洞库,对身份认证和密钥等敏感信息进行保护,查杀病毒和恶意代码等;最后在镜像使用时,应建立私有镜像仓库并启用验证源服务,根据不同用途建立镜像台账,明确具体访问范围,再次确认权限,禁止非授权访问。
4.2 容器安全防护
对于容器的安全防护,可从南北(云外)方向和东西(云内)方向2个方面进行设计:对于南北方向的安全防护,主要是云外的用户访问云上的服务防护,可通过构建相应的安全资源池引流方式进行检测与防护;对于东西向的安全防护,主要是容器间的安全防护,可采用以下3种方式。
4.2.1 容器安全监测
(1)入侵检测。采用进程黑/白名单机制和恶意程序检测,阻止异常进程,防止提权攻击、违规操作等安全风险。
(2)容器端口检测。关闭不需要的服务端口,安装恶意程序检测工具,定期升级和更新恶意程序库。
(3)异常行为监测。通过设置相应规则(如关闭seccomp系统隔离机制、挂载宿主机/etc目录到容器内、核心文件完整性监控等)实现容器、主机、应用程序的异常监测。
(4)流量可视化。构建容器应用和服务之间的网络流量可视化能力,自动发现网络层、传输层和应用层中容器集群服务依赖关系图。
4.2.2 容器安全隔离
(1)权限控制。对容器启动及运行时的权限进行限制,采用基于角色的权限访问控制,控制每个用户的资源权限。
(2)容器实行隔离保护。设置容器间的网络访问控制,实现用于集群内部容器间的防火墙功能。
(3)应用、数据和服务隔离保护。构建面向集群、命名空间、节点、容器管理组(Pod)和容器等不同层面的资源隔离模型,配置用户资源调度控制及运行时的安全策略。
4.2.3 容器安全配置
(1)安全配置。对容器内重要数据进行保密性、完整性和可用性保护。对容器中关键文件及应用需设置相应保护策略,如禁止根用户权限运行、限制使用特权用户运行、配置强制访问控制策略、限制远程访问范围和容器磁盘配合限制等。
(2)安全审计。构建容器安全审计模块,记录容器的操作、访问和阻断行为,形成相关日志数据,该日志数据应采用独立存储空间,不能篡改且应满足一定的存储周期。
4.3 主机安全防护
(1)硬件分类部署。基于企业安全防护等级要求,选取相应硬件设备作为宿主机,同时结合宿主机所承载的应用类型、密级、用途等特性划分独立的区域,各区域间按照网络防护要求进行安全防护。
(2)可信软件安全启动。建立主机的可信根,对主机操作系统、容器相关组件进行完整性度量,防止其被非法篡改,确保启动过程处于可信状态。度量通过,则允许服务器系统正常引导、启动、容器系统正常加载;如果关键组件被篡改,则对启动过程进行阻止。
(3)可信软件授权部署。用于承载和部署私有云的软件应通过相应的安全检测和授权方可安装,如对主机系统软件漏洞、病毒、访问权限等进行检测。
(4)系统安全加固与配置。在一朵云中尽可能统一主机操作系统,统一检测与管控,包括系统基础服务的安全配置(双因素认证机制等)、系统核心安全能力(安全日志采集、入侵防御代理等)的部署等。系统应遵循最小化安装,不得安装额外的服务和软件,减小攻击面;删除无关账户、锁定重要文件的权限设置、配置远程访问地址范围和交互登录超时时间;关闭数据包转发功能、禁止控制报文协议(Internet Control Message Protocol,ICMP)重定向。
(5)主机环境安全防护。应在主机所处的网络环境部署漏洞扫描,定时检测系统及软件漏洞、安全配置基线,及时更新系统补丁;部署入侵检测设备,对异地登录、恶意程序、账户破解、关键文件变更异常行为进行检测并及时阻止;开启主机数据库防火墙功能,及时对敏感数据发现与脱敏,加强数据库安全防护与监控审计功能,加强主机文件系统和系统调用的安全审计。
4.4 网络安全防护
(1)网络安全组件。对每个命名空间分配一台软交换机,同步分配容器内、外地址段,实现业务容器的微分段。根据业务属性定义的标签,通过安全组件来实现访问控制策略,形成精细化的流量控制以及流量可视化,还可帮助管理员迅速定位网络访问的故障点,实现快速排障。
(2)网络访问控制。在容器和主机之间、容器与容器之间、容器与用户之间均按最小化原则,设定网络访问控制策略,同时这类访问控制策略通常是动态变化的,那么对每次的变动都需要相应的审批、授权,以及操作记录审计。
(3)网络攻击检测与防御。在私有云平台的安全资源池中部署相应的流量清洗、流量牵引、网页应用防火墙等检测和防御攻击的工具。
4.5 服务网格安全防护
(1)服务网格自身安全防护。服务网格控制面通过发现服务(xDS)协议对数据面进行配置(路由转发、负载均衡、服务治理等)下发,以控制数据面的行为,通过禁用多余服务端口和配置环境变量来关闭服务网格中的一些默认服务(debug服务等),从而提升东西流量中的安全防护。
(2)服务网格的可观测性。企业用户和管理员可通过服务网格,实现业务服务从应用微服务到基础设施的全链条可视化监控和故障诊断能力,从而提供统一监控数据,保障业务服务安全运行。
4.6 私有云安全运营管理体系
随着企业纷纷上云,特别是私有云的部署,在运营模式由传统的以资源为主逐步转变为云时代以应用服务为主的背景下,若不构建基于云模式的运营管理体系,将面临更多的安全风险。
(1)重构运营团队。云计算的使用改变了传统基础设施的架构,过去的维护是以硬件设备或系统为边界,在边界进行严格的控制。企业上云后,存在跨地区分布式部署,应用服务也分布在不同数据中心,没有固定的边界,因此需协同多数据中心人员共同管理维护。
(2)提升人员技能。云技术作为新一代信息基础技术,需加强相关运营人员的专业技能提升,改变传统运维观念。
(3)明确计费方式。为更好地利用云资源,使云资源发挥最大价值,且能可持续发展,企业需明确使用云服务的计费方式(并非真正收取费用),通过该方式实时掌握云服务的使用状态和资源饱和度,从而为管理者决策提供数据支撑。
(4)编制管理制度。一个好的运营模式,还需从云服务的需求、计划、构建、测试、部署、文档、维护和运营管理等方面构建一个健全的管理制度进行约束和监管,使相关的安全策略严格执行,保障所有操作有据可依。
5 结语
随着企业数字化转型与云原生的广泛应用,容器安全威胁所带来的危害也急剧增加。本文论述了私有云容器的技术和功能特点,并从镜像、容器、主机、网络、服务网格和运维管理等方面开展了相关安全风险分析和研究,并针对性地提出了私有云容器安全防护框架,为企业私有云容器安全防护提供参考。
来源:《保密科学技术》杂志