云原生技术带来巨大价值的同时,也带来了诸多基于云原生视角的新型安全挑战。为了让广大客户更加详细地了解云原生安全,默安科技推出“云原生安全之变”系列文章,为各位逐一介绍云原生技术各阶段所面临的风险挑战与解决方案。本篇文章主要针对云原生基础设施安全方面进行阐述。
一、云原生技术
云原生是当前云炙手可热的话题,以其敏捷的软件开发测试和交付方式、分布式应用架构与可编程的、弹性的基础设备等特性,已成为驱动业务增长的重要引擎,其技术领域已经融入至人工智能、大数据 、边缘计算、5G等各种新型业务领域。在国家的政策与业务双重驱动下,已经有大批的企业选择上云,根据Gartner的数据,未来云计算市场规模仍将保持20%以上的增长速度,到2025年,预计将有80%(2020年仅为10%)的企业会关掉自己的传统数据中心,转向云平台,到2023年,全球70%的企业都将在生产中运行三个或更多的容器化应用。据中国信息通信研究院统计,2019年43.9%的被访企业表示已使用容器技术部署业务应用,另外计划使用容器技术部署业务应用的企业占比为40.8%;28.9%的企业已使用微服务架构进行应用系统的开发,还有46.8%的企业计划使用微服务架构。
首先我们需要了解什么是云原生?云原生概念最早出现于2010年,Paul Fremantle的一篇博客中提及一种架构,其中包括:分布式、松散、自服务、持续部署与测试。2015年Pivotal公司的Matt Stine在《迁移至云原生应用架构》一书中又对云原生应用架构做了一些定义,如符合12因素应用、面向微服务架构、自服务敏捷架构 、基于API的协作与高脆弱性。2018云原生计算基金会CNCF正式对外公布了云原生的定义v1.0版本:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
云原生实质上是一种软件架构设计的思想,对应用架构进行变革,最大化的利用云提供的分布式、松耦合、弹性、敏捷、易扩展与可靠等能力。这种软件设计与应用架构的变革是指对开发、测试与交付方式的改变,把传统集中式的应用通过微服务技术进行拆分然后再进行重构,用声明式的方法对应用进行自动化的部署与运维,以应用为视角的开发与交付模式,同时企业中的IT决策者、架构师与开发运维人员也需要深刻理解云原生技术,选择最匹配的云原生技术与产品。
二、云原生基础设施
随着云计算的不断迭代,云计算资源的抽象颗粒度也越来越细化,从传统的以计算资源为视角的虚拟机技术发展为以应用为视角的容器和Serverless(无服务)虚拟化技术,相比VM的虚拟化技术,容器与Serverless的抽象级别粒度更细,以应用资源为单位进行全生命周期管理,从而提高了基础设施的敏捷、弹性、易扩展性、自动化与低成本等特性。从历经的基础设施的演变,大致有如下三个阶段或三大类:
1、IaaS:如OpenStack、Vmware与各公有云平台,是对硬件资源的抽象,实现种类硬件资源的抽象与统一管理,如计算、存储、网络等资源。在此模式中交付方式为虚拟机镜像与自动化运维脚本,启动时间为分种级别。
2、CaaS:如Kubernetes、OpenShift与各公有容器云平台,实现了操作系统的虚拟化技术,抽象了操作系统层,只需要聚焦于操作系统之上的应用或微服务,以应用或微服务为视角进行软件的开发、交付与部署,同时结合Istio来实现微服务之间的治理。在此模式中交付方式为容器镜像与自动化编排脚本,启动速度为秒级。
3、Serverless:如Kubernetes的Knative、AWS的Lambda、阿里的SAE与腾讯的云函数SCF,抽象了应用的每个操作,为每个应用服务编写一个函数,通过事件按需触发,通常为API,当一个事件触发结束后此服务过程也同时消失。因此Serverless也称为云函数或FaaS(函数即服务)。在此模式中交付方式为应用代码,启动速度为毫秒级。
通过总结这几种基础设施场景可以看到,计算的颗粒度越来越细化,同时也越来越多的企业选择本地数据中心+(私有云/Kubernetes)+(公有云/公有云容器云平台+公有分布式对象存储+大数据计算服务+x的这种混合云的架构来最大化利用云基础设施的能力来提供企业的竞争力,这也是云原生技术的魅力所在。
三、云原生基础设施安全挑战
云基础设施带来巨大价值的同时也产生了新型的基于云原生基础设施特性的安全挑战。这些安全风险也成了云原生技术推广的阻力,同时在近几年的攻防对抗演练中多次出现由于云原生基础设施的安全缺陷导致防守失陷的情况,如果此类安全事件发生在真实的生产环境中将产生巨大的经济损失。
3.1 云平台风险
云平台提供了大量的云服务,如VPC网络、RDS、OSS、IAM等服务,无论从这些服务的合规配合与最佳配置实践或是某些服务中是否存在敏感信息等视角来看,再结合很多场景下企业用户都采用了混合云构架都对我们提供出了更高的安全挑战,因为在这种复杂的环境下,错误的配置是在所难免的,一项目服务中的配置错误可能会带来严重的安全隐患。
3.2 云主机风险
几乎所有的云原生服务都是承载在云主机上的,应该说是云原生应用的底座,如果云主机出现一些安全问题,如内核漏洞、云主机的应用漏洞或是云主机的合规配置漏洞都可能产生主云主机的失陷的情况,严重的情况下甚至可能导致整个云平台的失陷。同时在混合云的场景下,对所有云主机的安全管理也将是我们需要面对的一个严峻挑战。
3.3 容器风险
容器已然成为云原生技术的标准基础设施,但由于容器的一些特性导致了诸多安全风险,如特权容器、容器逃逸、容器配置安全风险、容器的镜像漏洞、容器资源隔离等。哪一项安全问题产生的容器失陷都有可能威胁到所有其它容器,容器逃逸技术甚至可以直接入侵底层宿主机。
3.4 Serverless(无服务器)风险
Serverless作为一种新型的云原生技术有诸多优点但同时也存在不少安全风险。由于Serverless承载的应用,同样存在OWASP相应的安全风险,如注入攻击、跨站攻击与DDos等攻击。开发者在开始应用时也会使用第三方依赖库,此时就面临了第三方依赖库漏洞的风险。再如访问权限的风险,由于配置错误Serverless函数具有对数据读写访问权限,导致对数据库的攻击,甚至出现数据泄露的风险。
3.5 容器编排器风险
容器编排器同样存在特有的安全风险暴露面,如Kubernetes组件安全都可能由于组件漏洞或是合规配置问题产生新的风险点。如API Server暴露的API服务器允许控制K8S集群,Controller Manger可以通过端口暴露或使用可利用的条件直接访问主节点上的主机操作系统,etcd中获取的未加密的秘密、数据库凭证、API密钥或其它敏感信息,暴露的Kubelet允许控制工作节点,kube-proxy存在绕过认证的漏洞或匿名访问。
3.6 IaC(基础设施即代码)风险
IaC(基础设施即代码)利用DevOps流程为云原生应用版本控制、部署与迭代提供了一种便捷与敏捷的方案,甚至可以实现跨平台的应用一键部署,如Kubernetes的manifest文件,容器镜像的dockerfile文件,AWS里的Cloudformation,还有目前炙手可热的Terraform等,使开发与运营人员只需聚焦在应用的开发与部署上。IaC的错误配置就会存在严重安全风险,从而引发容器失陷、数据泄露等安全问题。如错误的IaC配置可以引发资产的错误网络暴露,资产可被公网或远程直接访问数据库,同时增加了云原生的攻击面。在IaC模板里引用了带有漏洞的基础镜像,可以直接被攻击者远程命令执行。甚至在一些IaC配置中直接存在一些敏感信息,如通过硬编码方面写入密钥与用户账号。未按国际标准推荐的最佳实践方式进行IaC的编写,如GDPR、HIPPA与PCI等。
四、 云原生基础设施安全解决方案
4.1 CSPM(云安全状态管理)& CWPP(云工作负载保护)
CSPM用于识别云上资产的错误配置和合规风险问题的安全产品,CWPP用于保护云上基础设施环境中的服务器工作负载安全。默安科技尚付 CNAPP云原生应用保护平台(以下简称“尚付CNAPP”)有机结合了CSPM与CWPP能力,实现跨云平台的统一数据平面与配平面面安全管控。
图源自:Gartner
尚付CNAPP中的CSPM(CSPM+KSPM)模块集成亚马逊云、阿里云、谷歌云、微软云、华为云、优刻得云、Kubernetes、OpenStack与VMware等各大云平台的API,通过统一的界面自动发现云上各类资产与资产的暴露面,如云主机、对象存储、网络策略、账号策略等,并根据对云上资产进行安全检测。
全面安全扫描与持续监控能力,基于国际或行业最佳实践与标准,如CIS、PCI、HIPAA、NIST多种合规基线基于内置与自定义基线模式对云上资产进行配置进行安全风险与错误配置检测。同时提供修复能力,以确保云上资产配置不会偏离安全基线。此基线应该包括两方面的基线,一是云平台与云平台上所提供服务的资产合规基线;二则是容器与容器编排器的合规基线。
云上资产合规配置基线:
容器云平台与容器合规配置基线:
CWPP:
尚付CNAPP中的CWPP模块以工作负载为中心的安全防护解决,主要保护对象为物理服务器、虚拟机、容器与Serverless,同时可以实现实跨平台的统一安全防护。并且与传统的主机安全防护产品不同的是CWPP对性能与稳定都有极高的要求,由于容器的工作负载粒度更细,并且只有极短的工作生命周期。此文中的CWPP是一个广义的概念,正如上文所述,除了可以实现云原生之上的容器与Serverless的安全防护,如合规风险检测、入侵检测与各类威胁检测外,对物理服务器与虚拟机的安全防护也极其重要,所有的容器云平台与容器都承载在物理服务或虚拟机上,这些资产可以说是云原生的底座,如果存在安全风险,将直接影响至上层的整个容器云平台。因此CSPM与CWPP的功能需要进行统一的融合,CNAPP解决方案已成为这两种解决方案的融合体。
4.2 Serverless安全
Serverless(无服务器)安全也属于工作负载保护的范畴,但此处单独拿来介绍的原因在于虽然工作负载保护中有单独的解决方案来做Serverless的安全防护,但由于此类服务的特殊性,需要基于多个视角来进行全方面的安全防护。大致可以分为以下几类方式:
1、比较常规的方式就是基于寄生模式,将安全防护组件嵌入至功能函数中,类似给安全函数配置一个waf功能来进行安全防护。
2、由于云函数也是基于代码编写,因此安全左移的方案同样适用,可以通过在DevSecOps过程来提高函数的安全健壮性,通过SCA解决方案对云函数依赖的第三方组件库进行安全检测,以此避免供应链安全导致的安全事件。
3、设置云函数的权限策略,基于RBAC策略的权限零信任机制,只给予其提供业务所需的最小权限与网络策略,此时当出现安全事件后由于权限与策略的限制也无法对其它资源发起攻击。
4、对整个FaaS的调用进行跟踪与日志分析,通过Prometheus等工具对函数的调用行为进行监控,分析整个调用过程,从中发现攻击痕迹。
5、启用API网关认证保证用户的合法性,通过证书签名确保数据不会被篡改。
4.3 IaC安全
实现对Manifest、dockerfile、Terraform和其它IaC模板中的错误配置,并提供修复方案。尚付CNAPP的IaC安全模块在整个开发测试与运营过程中对IaC模板的错误配置进行扫描,并能集成至CI/CD中,实现安全左移,尽早发现安全风险,并提供修复方案,防止应用带病上线。
基于CIS、PCI与源自社区方面的合规配置,大量的IaC模板实现开箱即用的功能,并支持基于场景的自定义IaC模板功能。与CI/CD的自动化集成,IaC扫描作为pipeline的一个环节实现持续集成持续交付,同时提供详细的修复建议可以让开发人员及时得到反馈并高效的进行风险修复,节省大量的时间聚焦于应用开发本身的工作中去。
同时在后续的文章还会介绍容器的准入安全,传统的准入安全都只是基于容器与容器镜像自身的安全为维度进行准入控制,如容器是否是特权容器,镜像是否存在高危漏洞等。但从云原生整个生命周期来看,IaC安全也是极其重要的一个环节,可能由于业务或其它方面的原因,在DevOps的IaC环节上跳过了安全卡点,致使带病业务强行上线,但在此环节依旧可以设置卡点,防止可能产生安全风险的资产上线,丰富了准入策略。
五、总结
为了实现应用的敏捷性,各行各业正逐渐采用新型的云原生架构,而云原生基础设施是整个云原生技术使用的底座,由于云基础设施的特殊性,特别在混合云架构的场景下增加了更多的暴露面,更容易遭受攻击,因此需要有一个安全的、健壮的、自动化、系统化的全方位安全防护平台。Gartner也推荐通过CNAPP对云平台、虚拟机、容器云平台、容器与Serverless等基础设施实现全面的安全防护。同时还需注意,部分企业在进行云原生与云原生安全建设时,依旧采用传统的技术或产品在云上进行一对一复制,如在云原生环境中部署负载均衡、防火墙与WAF等传统产品,但云原生的生命周期极短,此种方案很难融入云原生场景甚至不能归之于云原生技术,因此,对于企业中的IT决策者、架构师与开发运维人员来说,深刻理解云原生技术、选择最匹配的云原生技术与产品尤为重要。
默安科技尚付 CNAPP,从诞生之初,所努力的方向就是CNAPP平台。早在公司成立之初,默安科技就开始了DevSecOps、CWPP等能力的布局,经过多年沉淀,默安科技成为DevSecOps领域的国内优秀产品和方案提供商,加上公司对容器安全、CSPM等方面的产品创新,在2022年正式推出了“尚付 CNAPP云原生应用保护平台”,帮助客户打造完整、体系化的云原生安全解决方案。作为该领域国内领先的第三方供应商,默安科技希望对未来的一些预见,能够帮助广大政企客户建设更安全、更稳定的云原生体系。