基于容器特点和传统网络安全能力进行容器云安全规划设计

相比于传统应用而言,容器天然是弱安全的,这些不足随着容器一起跑在企业内网中,如果不能很好地识别并修复,分分钟就会成为“马奇诺防线”上的缺口,发生数据泄露、安全漏洞等,给企业带来不可估量的损失。很多早期建设容器云的企业已经深深感知到,面对容器技术的全新架构,“高筑城墙以御外敌”的传统安全方案已经不合时宜,更多的攻击面、监控和防护难度大、安全管控难度高,企业必须重新审视容器云环境的安全策略。

容器安全防护范围需要前移,防护粒度需要更细,也需要静态安全与动态安全防护相结合。具体体现在容器的开发、部署、运行的全生命周期中,从容器云平台的大边界,到租户小边界,再往内深入到虚拟机容器的微边界,对10+层的潜在攻击面进行安全防护加固,覆盖到代码安全审计、主机安全、镜像安全、容器运行时安全、容器网络微隔离、编排环境合规安全、容器监控自学习引擎等领域。联盟容器云安全课题组的目标是帮助企业健全容器安全防护工作体系,提供镜像安全、基础设施安全、运行时安全等能力建设参考,减少摸索时间,让更多重要生产应用运行在安全的容器环境中。

本期介绍联盟容器云安全课题组阶段性研究成果“容器云安全规划”。

容器云安全规划

  导 读

本文是基于笔者在容器云安全平台应用实践过程中对遇到的问题及方案的总结和思考,仅作为同行或朋友们在规划容器云安全时的参考。容器作为云原生技术体系中的关键技术,对其的不同定位会带来安全规划的不同要求。云原生安全和传统安全能力的需求也有不同,因此认识到容器和云原生安全的特点来规划容器云安全,会更有针对性。本文的方案可以作为容器云安全规划时的参考,同时需要理解笔者所整理的《你需要知道的云原生架构体系内容》和《云原生架构实施路线图》,才能更好的理解本文内容。

  执笔专家

  汪照辉 容器云安全用户委员会委员

云原生应用创新实践联盟——容器云安全方向课题组专家。专注于容器云、微服务、DevOps、数据治理、数字化转型等领域,对相关技术有独特的理解和见解。擅长于软件规划和设计,提出的“平台融合”的观点越来越得到认同和事实证明。发表了众多技术文章探讨容器平台建设、微服务技术、DevOps、数字化转型、数据治理、中台建设等内容,受到了广泛关注和肯定。

  顾问专家

  罗文江 容器云安全用户委员会委员

云原生应用创新实践联盟——容器云安全方向课题组组长。招商银行云计算架构师,当前从事银行私有云和公有云基础设施、以及混合云架构的建设,参与包括容器云等相关云服务的规划、技术选型、架构设计和实施,以及业务连续性等保障体系的建设工作。

  常青 容器云安全用户委员会委员

云原生应用创新实践联盟——容器云安全方向课题组专家。任职于中国光大银行信息科技部,主要负责项目管理和开发安全体系建设方面的相关工作。主要擅长web应用安全威胁与防治,容器云安全风险排查与评估。

越来越多的人关注云原生安全。作为云原生核心内容的微服务、容器、DevOps的安全是构建云原生安全体系的关键组成部分。云原生的核心是云原生应用,而基于容器技术所构建的容器云平台则由于其自身是云原生应用的运行和管理工具平台,使其成为云原生安全中的核心平台支撑。从云原生应用和云原生架构上来说,围绕容器云平台来构建云原生安全体系也是相对清晰、容易落地和容易实施的方案。

  一、容器云定位

不同的人对容器云的理解和定位会有所不同。从容器为微服务应用提供的标准化的运行时环境来说,它支撑的是应用生命周期过程中的运行阶段的需求。最初笔者提出的“以应用管理为核心”的容器云平台建设思路,也在信通院刚刚发布的《云原生 新一代软件架构的变革》白皮书中的“一个中心”得到了体现。因此可以说容器云平台是应用运行时的支撑和管理平台。不过要实现应用的可见性、可管理性等,需要围绕容器云平台构建额外众多的基础设施工具和平台支撑,比如日志平台、监控平台、认证权限平台、消息平台等等。需要将容器云平台置于整个云原生DevOps体系之中,它承担的是应用生命周期过程中的运行阶段。在这个体系中,每个平台、组件和工具都会涉及安全的问题。而安全又分了不同的层次和机制,比如认证授权、加密解密、网络防护、病毒防护、应用安全等等;采用容器又带来了新的对象、新的流程和新的问题,比如镜像安全、容器安全、DevOps安全等。这是一个相互关联、相互影响而又相辅相成的一个体系。

笔者一直也在思考如何来规划容器云平台的安全。一直想解决的一个问题是:安全团队通过传统安全工具和方法扫描出来的漏洞如何和跟应用管理人员直接关联。采用大二层网络,服务的IP对所有人是可见的。由于传统网络安全往往是基于IP的机制,比如防火墙、白名单设置等,而容器带来了新的机制,容器IP往往是变化的,而服务是弹性的、可迁移的,往往不会和某个固定IP关联。这和传统的网络安全管理模式是冲突的。从安全团队角度,他们扫描出来的存在漏洞的容器由于IP的可变性无法直接和应用关联,不得不通过容器云平台来查询、关联到应用、中转给应用运维人员。团队之间的协调是需要时间的,往往等拿到数据,某些容器IP可能已经变化,从而找不到这个IP了,也可能就错失漏洞的及时修复。因此,容器云安全可能需要改变传统的安全管理模式,将安全能力作为基础设施,提供给容器云平台上的租户使用,自动实现漏洞的扫描和通知,由租户自服务完成漏洞的修复。这样则可以简化并提升容器安全问题处理效率。

  二、容器安全基础设施

传统网络安全和云原生安全的模式是有区别的,在云原生架构中,安全是作为基础设施能力,需要具备协助应用应对威胁、消除漏洞、增强防护力等能力。在规划设计云原生或容器云安全时,可能需要考虑几个原则:

  1.可见性、可观察性

容器由于其弹性、生命周期短等特征,需要实现详细的监控和可视化能力,能够时时看到容器的运行状况和历史变化情况。这样对业务应用运维管理人员来说,在遇到问题时才能快速的定位和分析根因。这也是笔者一再强调日志、监控等基础平台建设的原因之一。

  2.可隔离性、可阻断性

容器由于其轻量性,可能会有众多容器在运行,为容器的管理和维护带来挑战。除了要通过构建可见性、可观察性能力,还需要在遇到安全异常时能够隔离容器、阻断入侵。看得到才能管得住,实现手动或自动的容器隔离或容器网络隔离,从而减少或降低安全风险。

  3.自服务性

自服务能力是云原生基础设施的关键能力要求。应用通过基础设施的自服务能力,才可以敏捷的实现应用的配置管理和调度运行等。安全的自服务能力将减少应用团队与基础设施团队的交互,从而提升了业务应用的响应能力。

从中台架构来说,安全能力可以提取为公共的技术服务,可以作为技术中台服务能力的一部分。比如说认证方式(多因子动态认证)、权限管理、加密解密、漏洞扫描、合规检测、病毒防护等等。从不同的视角、不同的架构看,这样的规划设计都是可行的、合理的。

 三、容器云安全规划

容器云安全规划可以考虑从应用生命周期过程和应用资源调度管理层次进行划分,从而实现网格化安全管控能力。

 横向分段

基于DevOps应用生命周期过程,可以将容器安全分为两段:开发阶段和运行阶段。开发阶段完成应用设计、编码、单元测试和构建,输出镜像。在这个阶段最重要的是尽可能消除安全漏洞,因此需要做到安全左移。运行阶段的核心是保障业务应用的安全稳定运行。虽然安全左移尽可能消除潜在的安全隐患,但运行阶段该有的安全措施一样也不能少。漏洞和入侵威胁时时都可能发生,另外容器机制所带来的运维机制的变化要求下层能力对上层需求提供自服务能力,从而实现敏捷的响应,做到运行阶段自服务、自适应。某厂商安全提出的一体两面四个环节N项能力的容器云安全体系非常值得参考。

基于容器特点和传统网络安全能力进行容器云安全规划设计

在构建容器云平台时,笔者提出了“以镜像仓库为媒介”,将镜像作为容器应用标准化输出,这样就把开发阶段和测试、生产进行了明确分段。测试、生产环境都是以容器云平台来支撑和管理应用运行,因此应用部署于容器云平台上测试,也可以看作运行阶段的一部分。生产追求的是更稳定安全的运行。

  1)开发阶段(Dev),遵循“安全左移”,做到交付安全

开发阶段交付的镜像是安全的。这需要将传统的安全能力左移,通过开发阶段的安全检查和检测,及时修复潜在的安全问题,减少攻击面,将安全隐患消灭在部署运行之前,做到“交付安全、上线即安全”,而不是把安全问题都留到生产环境中去进行解决。安全左移核心是做安全管理,以镜像为标准化交付物,以镜像仓库为媒介,实现开发、测试、生产节点的安全管控。在实际落地的时候通过在软件生命周期过程中设置“安全卡点”来实现,以“准入”和“准出”来实现安全管控

基于容器特点和传统网络安全能力进行容器云安全规划设计

  2)运行阶段(Ops),遵循“持续监控&响应”,做到自适应安全

运行阶段的核心是交互式检测和实时防护。虽然安全左移尽可能消除了安全隐患,但容器应用运行时环境依然会存在很多潜在安全问题,比如说容器虚拟化或者物理服务器节点漏洞、网络入侵、病毒入侵等。因此在运行阶段需要实现持续的安全监控和实时响应,能够实现自服务和自适应安全能力。持续监控和响应首先要做到“心中有数”,对自己的容器云平台的资产做到一目了然,看得见;然后对这些资产运行状态和运行情况也要看得清、能检测;在出现异常时能够有工具、有手段可用。需要将传统网络安全的能力通过接口等方式暴露给容器云平台,无缝融合在一起,使容器云平台可以以自服务的形式实现安全资产可见、自动化交互防护、异常隔离、入侵检测、溯源分析等。虽然使用的是传统的安全手段和能力,但却面向的不是传统的网络安全人员,也不是以传统网络域和网络IP进行管理,容器云运行阶段更重要的对应用管理人员提供安全服务能力,同时由网络安全人员提供后援支持。

  纵向分层

基于资源层次和类型可以将容器云安全分为网络层安全、节点安全、容器/服务实例层安全、平台工具层(基础设施)安全、应用安全五个层次。纵向分层也是DevOps组织设计职责划分的参考。

容器云可采用二层或三层网络,不同的网络模式安全防护上会有不同,不过整体思路是一致的。网络层安全和节点/主机安全要基于传统的网络安全能力。不过传统网络域管理可能会对不同域的容器云集群或节点管理带来一些麻烦,相当于要实现虚实混合的网络管理;容器安全主要是围绕应用运行时的防护和检测;容器云平台和基础设施工具可以作为独立的组件实现安全能力;应用层安全则从业务应用角度来考虑,比如应用访问授权、通信加密、防SQL注入、API接口安全等等。

基于容器特点和传统网络安全能力进行容器云安全规划设计

 1)网络层安全(网络安全)

网络层安全并不只是指容器网络。容器网络相对要简单些,不过目前大多数公司的容器云平台都难以独立于传统网络。比如说多集群可能跨机房、跨网段,容器虚拟网络和公司物理网络相交叉,带来了网络管理和网络安全管理的复杂度。这可能需要结合传统网络安全手段和容器网络安全手段来实现网络安全。

 2)节点层(节点/主机安全)

容器节点层安全其实也等同于传统的主机安全,和网络安全紧密相关。容器以进程的方式运行在容器节点上,保障节点安全是容器安全的重要部分。节点运行时入侵检测、病毒防护、交互测试、系统漏洞修复、安全更新、版本升级等是节点安全的重要工作。

  3)容器层/应用服务实例层(容器安全、服务安全)

容器可以看作是一个轻量的操作系统内核,比传统应用管理多了一层封装。容器安全需要用到传统主机安全的技术和手段,比如入侵检测、病毒查杀等,同时由于容器中运行着应用服务实例,需要对运行中的服务实例进行实时的监控和检测,比如有新的漏洞出现,漏洞库更新,容器就可能面临着漏洞威胁。需要实现镜像安全扫描、容器漏洞检测、容器安全隔离、入侵阻断等能力。

  4)平台工具层(基础设施安全)

容器云平台实现容器的调度和管理、服务的治理和管控。可以利用Kubernetes的安全机制来扩展实现容器云平台的安全管控能力,比如Kubernetes的认证、授权、准入机制和容器云平台的认证、授权调度管控结合起来,不同租户不同用户对不同资源有不同的访问权限。扩展开来,可以和应用层的认证、权限管理、访问控制映射起来,使安全的访问控制成为一体多层。

  5)应用层(应用安全)

应用层安全需要从开发阶段代码安全检查开始,贯穿应用整个生命周期过程。开发阶段关注的是代码安全、镜像安全等,运行阶段关注的攻击防护、溯源分析等。和传统应用安全手段没什么区别。

容器云安全规划从纵向层次安全划分和横向生命周期阶段划分从而将安全问题网格化,缩小安全问题范围,可以有针对性地采取安全措施和手段来解决存在的问题。不过容器云平台依然有不少的问题需要解决,比如说新漏洞的修复。业务开发团队往往基于同一个基础镜像来构建应用服务镜像,如果基础镜像中发现新的漏洞,可能会影响到运行中的众多租户的众多容器和服务,需要重新构建镜像新版本,重新发布替换运行中的服务。这往往也是不可避免的日常运维工作。如果容器服务的量达到一定的程度,人工是难以处理,就需要自动化、自服务的机制来完成升级和漏洞修复。另外可能还有一些紧急的安全事项处理,比如说攻击事件,需要和安全团队能协同协作,对容器云平台应用运维、容器云平台运维和安全团队都需要做到可见、可管理。

  四、总结

总的来说,安全防护是一种被动的机制,难以确保万无一失,越来越需要在动态变化过程中实现安全防护能力,减小安全暴露面,有针对性地完善安全能力,提升安全防护效果。容器云安全的规划需要基于容器特点和传统网络安全能力来进行设计,尽可能消除安全隐患,提升安全能力。

声明:本站转载此文目的在于传递更多信息,并不代表赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容,本网站对此声明具有最终解释权。

编辑:admin,如若转载,请注明出处:https://www.yidongbangong.com/13768.html

(0)
上一篇 2022年9月5日 下午4:24
下一篇 2022年9月5日 下午6:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。