云原生技术带来巨大价值的同时,也带来了诸多基于云原生视角的新型安全挑战。为了让广大客户更加详细地了解云原生安全,默安科技推出“云原生安全之变”系列文章,为各位逐一介绍云原生技术各阶段所面临的风险挑战与解决方案。本篇文章主要对云原生微服务安全进行阐述。
一、微服务简介
Gartner对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。”微服务是一种软件架构模式,把一个应用拆分成多个服务,每个服务间通过约定的API接口方式进行通信,从而形成一个整体的应用系统。这其中每个拆分的服务就是微服务,彼此之间都是松耦合的,甚至可以使用各研发人员擅长的不同开发语言进行编写。微服务经历了数次的迭代,丰富了技术框架可供技术人员根据自己擅长的技术栈进行选择,如早期的Dubbo框架或是SpringCloud框架,以及近几年比较火的ServiceMesh架构。
微服务的优势:
1、松耦合
各业务模块可以进行拆分独立进行研发,技术人员只需要聚焦于相应的业务模块上,同时也降低了复杂性。
2、应用迭代敏捷
由于每个业务模块可以独立更新,基于敏捷开发模式可以快速地对应用进行更新迭代。
3、弹性部署
基于云原生技术可以实现应用的滚动更新、灰度发布与回滚。
4、容错性强
应用基于声明式方式进行便捷的故障迁移,结合服务治理能力当某一应用(微服务)发生故障时通过限流、降级与熔断等技术保证业务的连接性。
相关行业报告显示微服务营收保持着20%+的增长趋势,2018至2023年全球微服务市场营收CAGR 22.4%,2023年预计达$1.8Billion,亚太区市场份额占35%,仅次于北美地区,从此来看微服务市场发展迅速,并且国内市场空间依然很大。
随着微服务架构演进,又出现了FaaS(函数即服务)与BaaS(后端即服务),让开发人员更聚焦于应用开发的自身工作而非架构的设计,进一步提升了研发的效率。
二、云原生技术促进了微服务的落地
传统的“上云”往往是新瓶装旧酒,只是把传统的方案复制到云上,大部分应用使用的技术和产品都是在进行一对一的替换,如传统的服务器变成云主机、私有局网变成VPC、负载均衡变成vSLB、任何传统工作负载都变成v(虚拟化)形式再迁移至云端。安全产品也是如此,如vFirewall、vWAF等。这些技术和产品只进行了少量改写来适配云平台,软件架构没有发生什么实质性的改变,只在软件运行的平台和运维的技术体系发生了变化。因此这些工作负载并不是真正为云设计的,虽然有云上独有的敏捷运营手段,但是工作负载依然很重,在弹性与敏捷方面依然难以适应云上以应用为中心的场景。
这些一对一复制的方案是为传统环境而设计的,适应不了现在的业务模式,因此出现了云原生,云原生对整体架构进行了重构,包括相应的技术栈、工具链、交付体系进行了改造,依托云技术栈将其重新部署、部分重构甚至全部改写,从而达到能够充分利用云计算的能力。
例如,传统的集中式应用架构在部署和运行时,需要单台服务器具有大量的内存和CPU等资源,对基础设施要求比较高。同时巨大的单体应用必须通过在多台服务上复制整个应用来实现横向扩展,因此其扩展能力极差;此外,这些应用又极其复杂各个功能组件之间的耦合度高,给运维也带来极大麻烦。在这种情况下要对单个功能进行迭代就会出现牵一发而动全身的困局,往往一次迭代都会以月为单位,甚至更长的时间。但通过微服务方式就可以很好地解决这些问题,把传统单体应用拆分为一个个小的微服务模块,这个微服务都提供不同的业务服务,并且这些微服务在代码编写时也没有语言的要求,可以根据需求使用最适合的语言进行开发,当要进行某一功能升级时只需求对相应的微服务模块进行改写即可。而对于微服务最好的载体就是容器,通过微服务的拆分部署在独立的容器中进行云原生应用的部署,并利用云原生提供的容器编排与微服务自治能力,如istio,结合DevOps就能提供快速、敏捷、弹性的云原生服务。
三、微服务所面临的安全挑战
随着微服务的大量使用,细粒度切分与架构固有的特性其规模化安全问题也日益凸显出来,给企业带来极大的安全挑战:
1、攻击面的增加
由于微服务拆分技术对整体的应用进行了细粒度的切分,每个微服务都是单一的组件,并且各组件之间都通过API进行远程调用,无形中增加了资产的暴露面,因此需要企业对每个微服务单独的入口做好安全防护。
2、微服务间的可信通信
每个微服务间的通信都需要授权或信任源,只有彼此之间互相信任的微服务才能发起远程调用,因此微服务间的访问控制策略也是个巨大挑战。
3、微服务间的访问难于溯源
由于企业中可能有数以百计甚至千计的微服务,微服务与微服务之间的访问无法溯源,包括访问日志、访问流量与访问时间。
4、无法实现微服务间的七层安全防护
虽然在云平台的VPC边界或是数据中心出口有WAF类产品进行七层安全防护,但是微服务之间依然缺乏此类的安全防护,例如某个微服务或所承载微服务的容器失陷很有可能通过横向方式对其它微服务或容器发起攻击,如注入、跨站、目录遍历与命令执行等应用层攻击。
5、API安全与数据泄露
微服务间的存在大量的横向API调用,传统的方案或是微隔离技术无法有效地进行API接口相关的安全检测与防护功能,从而引发API相关安全风险甚至出现数据泄露。
6、微服务框架安全
使用微服务后可能会引发新的微服务框架安全风险,如CVE-2021-30179反序列化漏洞,该漏洞由于Dubbo未对传入的反序列化数据进行严格的过滤,最终引发远程命令执行漏洞;再如前不久爆发的Spring Cloud Gateway核弹级漏洞CVE-2022-22946不安全的TrustManager漏洞与CVE-2022-22947代码注入漏洞。
7、微服务应用安全
微服务最终也是一个个独立的应用,也是通过代码方式进行编写的,因此在开发期间如果未做好安全开发管控与检测依然会引发相应的安全风险,如错误的编码方式、敏感信息硬编码或引用带有漏洞第三方组件等。
四、微服务安全解决方案
默安尚付CNAPP云原生保护平台(以下简称“尚付CNAPP”)经过多年沉淀与调研,针对于微服务的特性提供了全面的解决方案,包括微服务资产访问关系地图、基于微服务零信任接入与白名单机制、四层微隔离技术、行为基线学习与管控、基于七层的分布式WAF与API安全防护,同时基于DevSecOps视角从源头对微服务的安全进行治理实现微服务的安全左移。
1、微服务资产访问关系地图
容器作为微服务的默认标准载体,尚付CNAPP可实现跨集群观测学习所有微服务的流量访问关系,基于命名空间、应用名称与pod多维度视角生成微服务访问关系地图。通过此关系地图可以清晰地观测到微服务间的访问关系与发现存在的风险应用,同时提供风险资产的详细信息与一键处置手段。
2、微服务资产准入策略
尚付CNAPP提供了多维度的资产准入策略,传统的容器安全产品的准入策略几乎都是基于容器与容器镜像的安全视角进行策略控制,如是否使用特权容器、pod是否与宿主机共享命名空间或是镜像是否存在风险漏洞等策略,而云原生应用除了容器与镜像视角,还有devOps中产生的风险事件。如微服务在开发测试期间是否存在高危风险漏洞、是否使用了带有漏洞的第三方组件库或是使用了带有错误配置的IaC等等,这些在开发测试期间发现的安全风险都有可能致使微服务上线后产生安全风险,因此在此准入阶段需要再次做好安全卡点,防止微服务带病上线。
尚付CNAPP可以基于DevSecOps阶段SCA(软件成分分析)、IAST(交互式应用安全检测)与IaC(基础设施即代码)扫描发现的风险,结合传统的容器与容器镜像的风险基于云原生应用全生命周期视角进行安全准入控制。
3、基于零信任的微隔离技术
尚付CNAPP微隔离策略采用零信任理念,实现基于身份的微隔离,真正意义上实现基于微服务应用间的东西向隔离,同时基于Linxu内核版本可以灵活的选择iptables或高性能的eBPF技术实现来实现网络管控策略。
4、基于基线学习的白名单机制
通过白名单机制可以使应用的安全性得到质的提升,其实此技术在很多年前就已实现,如流量白名单、进程白名单,但一直都很难推行下去。原因就在于传统的物理服务或是虚拟机还是比较重,在其上承载了太多的应用,进程与流量极其复杂,纵使梳理出基线但出于业务稳定与连续性的要求也很难真正的落实下去,无法确保业务是否会有新的业务流量或进程产生。而在云原生的场景下,把复杂的应用拆分成单独的微服务后,每个微服务只负责单一的业务通过容器镜像方式进行交付,也就是基于不可变基础设施的方式进行应用交付,此时就容易实现流量与进程白名单机制,因为通过云原生架构可以很好地实现白名单机制的落地。
尚付CNAPP基于策略配置与自学习两种方式实现流量与进程白名单机制。自学习方式依据容器应用在一定时间内的流量与进程模型进行基线学习,基线模型学习完毕后则进入试运行阶段,在此阶段我们可以观测容器应用的运行是否有偏离基线,经过一段时间后的匹配如果所有应用都在基线范围内则可以直接启用白名单机制,对基线外的流程与进行进行阻断。通过这种自学习方式可以辅助企业更好的在云原生环境中落地白名单机制,使整个云原生应用安全得到更高一层次的提升。
流量白名单与流量自学习模式:
进程白名单与进程自学习模式:
5、声明式分布式WAF
作为云原生基础设施边界的七层安全防护的补充,尚付CNAPP可以实现微服务东西流量间的七层安全防护,通过声明式的方式在应用部署时即自动获得WAF防护策略,对常见的注入攻击、跨站脚本、目录遍历、组件漏洞、命令执行、恶意后门与非法上传等恶意应用层攻击进行有效的安全防护,当容器进行弹性扩容或飘移时也可以做的WAF策略随行,并支持istio场景。在后续的文章中将会有更详细的云原生分布式WAF的相关介绍。
6、API安全
尚付CNAPP支持自动发现微服务间所有被访问的API接口,并为这些爆发式增加的API接口提供了行之有效的安全检测与防护措施,如API的访问路径、调用接口、允许的HTTP调用方法、API访问频次、API接口与资产关联,并提供详细的防护策略。在后续的文章中将会有更详细的API与数据安全的相关介绍。
7、微服务框架与应用安全
微服务应用除了在准入与运行时可以通过相应的措施来进行安全检测与防护,但我们更希望的是可以实现安全左移,在DevOps阶段就能有更多的安全检测与处置手段。尚付CNAPP集成SCA、镜像扫描、IAST与IaC安全检测能力,通过CI/CD的集成形成云原生DevOps至DevSecOps的演进。通过SCA可以发现第三组件漏洞、软件许可与供应链等安全问题;通过镜像扫描对漏洞镜像或存在恶意代码的镜像进行安全检测,通过IAST可以对微服务与应用框架进行安全检测;IaC扫描可以识别Manifest、dockerfile与Terraform等IaC模板中错误配置。
尚付CNAPP通过多种DevSecOps工具的结合打通了DevOps和容器云平台,用户可以知道一个项目从编码、构建、分发、测试、部署、运行每个阶段的关键信息,如项目是在哪个代码仓库、最终运行在哪些POD或主机上;也可以支持可视化每个阶段的安全风险,如编码漏洞、镜像漏洞、IAST测试漏洞、部署合规性、运行时入侵事件等,提供前所未有的可见性。
要实现全面的微服务安全需要了解整个微服务的生命周期,基于这个视角在全生命周期的每个阶段进行相应的安全检测与管控,形成纵深防御体系。在开发测试阶段引入DevSecOps工具实现应用的安全左移,在分发与部署阶段通过镜像签名与准入控制设置安全的上线卡点,在运行阶段结合零信任白名单机制、微隔离技术、分布式WAF与API安全等措施实现常态化微服务的安全运营。
早在公司成立之初,默安科技就开始了DevSecOps、CWPP等能力的布局,经过多年沉淀,默安科技成为DevSecOps领域的国内优秀产品和方案提供商,加上公司对容器安全、CSPM等方面的产品创新,在2022年正式推出了“尚付 CNAPP云原生应用保护平台”,帮助客户打造完整、体系化的云原生安全解决方案。默安科技希望对未来的一些预见,能够帮助广大政企客户建设更安全、更稳定的云原生体系。