陈妍 博士
国家网络与信息系统安全产品质量检验检测中心
(公安部第三研究所)
云计算与公安大数据安全测评实验室负责人
01 云原生发展趋势
云原生的英文缩写“Cloud Native”是一个组合词,其中“云”表示应用程序运行于云计算环境中,“原生”表示应用程序在设计之初就充分考虑了云计算的弹性和分布式特性。云原生架构能够助力企业适应现代IT技术的发展变化,从而帮组织实现软件的快速迭代、敏捷开发,达到降低成本的效果。
2013年,Pivotal公司的Matt Stine首次提出云原生的概念,用于区分为云而设计的应用和云上部署的传统应用。
2015年,云原生计算基金会(CNCF)成立,旨在推动以容器为中心的云原生系统。其给出了目前被广泛接受的云原生的定义,即:“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。”
2017年,Matt Stine将云原生架构归为模块化、可观察、可部署、可测试、可替换、可处理6个特质;Pivotal最新官网对云原生概括为4个要点:微服务+DevOps+持续交付+容器。
微服务架构下,应用的各个服务可独立开发、部署、更新和扩容,更好地利用了云计算按需分配和弹性扩展的特性。
DevOps让开发、测试和运维相互融合,从而实现快速编译、自动化测试、部署、发布和回滚,为微服务架构提供技术支撑。
持续交付是指在DevOps的支撑下,更快更便捷地进行软件开发、测试、部署和升级,从而实现持续交付。
容器是一种轻量级的虚拟机,共享宿主操作系统的内核,具有轻量化的特点,其与编排系统一起实现了快速启动、按需服务、弹性扩展等,是微服务的底层基础设施。
随着技术的发展,为了更好地开展云原生治理和应用,又出现了服务网格、无服务器计算(Serverless Computing)的概念
02 云原生面临的安全问题
云原生已成为了云计算市场的宠儿,其解决了传统IT架构中部署困难、升级缓慢、架构复杂等问题,但也同样面临安全风险。特斯拉Kubernetes容器集群被黑事件、Docker Hub 中的容器镜像被投毒注入挖矿程序等一系列针对云原生的安全攻击事件发人深省,也让大家愈发关注云原生安全。
云原生安全包含两层意思:一是云原生环境的安全,二是利用云原生技术的安全。
云原生环境的安全是指采用相应的安全措施对云原生环境进行保护,这种安全措施有可能是使用传统的安全防护产品,也有可能是使用云原生技术的安全产品,也有可能是云原生环境自身的安全特性。
利用云原生技术的安全是指采用云原生的弹性扩展、按需分配等特点进行安全产品的设计和部署,这种安全产品能够部署在云原生环境中,当然也可以为传统IT架构提供安全防护。
未来,云原生环境必将与采用了云原生技术的安全相互融合,成为统一的整体;也就是说在云计算环境下的安全一般也是采用了云原生技术的安全,采用了云原生技术的安全也会为云计算环境安全添砖加瓦,从而实现持续交付、持续安全,达到业务与安全齐头并进。
本文我们重点讨论云原生环境的安全,依据其系统构成从容器、编排系统、微服务、服务网格、无服务器计算五个层面分析其安全风险。
1、在云原生环境下,容器作为微服务的主要载体,是底层基础设施,为适应应用的快速部署和迭代,容器具有数量庞大、生命周期短暂等特点,且在容器的新建和消失过程中用于标识容器IP地址 、名称等均将发生变化,这对于传统的基于IP的访问控制策略是一种极大的挑战。容器面临的主要安全挑战包括:容器镜像的安全性、容器间流量和访问控制的复杂性、共享操作系统内核情况下容器逃逸的安全风险、容器安全配置的复杂性、特权容器的权限控制等。
2、编排系统是容器的大脑,它可以提供用户所需的容器部署,管理和扩缩容等编排功能。比如,Kubernetes就是被最为广泛使用的容器编排系统。编排系统的安全问题同样对云原生环境影响深远,其需要考虑的问题主要包括不安全的配置、漏洞利用、敏感数据获取、横向移动、远程控制和持久化驻留等。
3、微服务就是将单体应用中的不同模块拆分成微服务,这些微服务都可以独立部署、运维、升级和扩展,微服务之间通过使用RESTful API进行通信。在云原生环境中,内外网边界模糊,更多的API会暴露在互联网上。随着API暴露面的增加,其被攻击的风险也大大增加,传统的南北向防护体系在云原生环境下显得力不从心。此外,微服务架构增加了服务间的访问和调用,给东西向流量控制带来了更大的挑战。
4、服务网格被认为是下一代的微服务架构,其主要对服务进程间的通信进行管理,是云原生的发展和延伸。比如Istio就是一款典型的微服务管理和服务网格框架项目。引入新的技术必然也会带来新的安全风险,服务网络面临的主要安全风险包括:不安全的通信导致的中间人攻击、东西向和南北向的认证授权和访问控制不当造成的越权攻击等。
5、无服务器计算是指在不考虑服务器的情况下构建并运行应用程序和服务,使开发者无需关注底层基础设施、设备的管理。无服务器计算并非指没有服务器,而是指使用者无需关注服务器,而由服务商来对服务器进行管理。Serverless 是新的云原生模式,当然同样面临安全问题,主要包括复杂和流动的攻击面、数据注入、非授权访问、操作不可见、无法溯源等。
云原生技术得到了广泛地应用,云原生系统也不断部署,这催生了诸如CASB(云访问安全代理),CSPM(云安全配置管理),CWPP(云工作负载安全防护平台),SASE (安全访问服务边缘模型)、容器安全(Container Security)等新兴云安全防护产品和解决方案,这些都能够为云原生环境的安全提供产品和技术支持。
03 云原生安全框架
基于以上云原生环境面临的安全问题,需要有一个完整的安全框架,用于明确云原生系统应具备的安全技术或能力。该框架中横轴是开发运营安全的维度,涉及需求设计(Plan)、开发(Dev)、运营阶段(Ops),细分为需求、设计、编码、测试、集成、交付、防护、检测、响应阶段,,但考虑到响应安全能力要求在不同云原生技术层差异性较大,本标准不涉及响应阶段。而纵轴则是按照云原生系统和技术的层次划分,包括容器基础设施安全、容器编排平台安全、微服务安全、服务网格安全、无服务器计算安全五个部分:
从云原生安全的视角,云原生系统各层所需的安全要求从容器基础设施安全直至无服务器计算安全,对应图中蓝色标注部分。
从DevSecOps的视角,涉及的能力范围几乎覆盖了横轴的各个阶段,对应参考图中紫色标注部分。
此外,云原生安全体系各层都有认证授权、监控追踪和日志审计等通用的安全要求,这些通用技术能力覆盖DevSecOps中Ops阶段,见图中黄色标注部分。
需要注意的是该安全框架是从DevSecOps的角度看云原生安全体系,如果从其它维度,则会有不同的安全架构。该框架下的各个层次的安全能力要求包括:
1) 容器基础设施安全能力要求主要包括:内核安全、容器安全配置核查、容器安全加固、容器运行时安全、镜像安全、镜像仓库安全、日志审计、监控追踪、认证授权等。
2) 容器编排平台安全能力要求主要包括:容器编排平台安全配置核查、容器编排平台安全加固、认证授权、密钥管理、网络安全、日志审计、监控追踪等。
3) 微服务安全能力要求主要包括:微服务API安全、微服务应用安全;其中微服务API安全主要包括云原生API网关、API脆弱性评估;微服务应用安全主要包括认证授权、API安全、通信安全、凭证管理、日志审计、监控追踪等。
4) 服务网格安全能力要求主要包括:认证授权、日志审计、监控追踪、配置核查等。
5) 无服务器计算安全能力要求主要包括:无服务器应用安全、无服务器平台安全;其中无服务器平台安全主要包括认证授权、日志审计、监控追踪、账户安全、函数应用安全等。
04 安全建议
云原生作为云计算深入发展的产物,已在5G、人工智能、大数据等领域得到了广泛应用,以容器、编排系统、微服务为关键技术的云原生系统也因为具有快速迭代、敏捷开发、降低成本等特点被大量部署。然而,断发生的针对云原生安全攻击事件也让大家对于云原生安全倍加关注,因此需要对云原生系统进行整体安全评估,从而给用户建立信心。
我中心立项了公安行业标准《信息安全技术 容器安全监测产品安全技术要求》,该标准主要从容器镜像安全、容器运行时安全、编排组件安全和自身安全4个方面对容器安全监测产品提出相关的安全功能要求和安全保障要求,目前该标准尚处于编制阶段。此外,我中心与国际云安全联盟CSA、云计算厂商和安全厂商等一起编制了《云原生安全技术规范》,建立了云原生安全架构,从开发运营安全(DevSecOps)和云化系统安全两个维度考虑安全机制,提出了容器基础设施安全、容器编排平台安全、微服务安全、服务网格安全、无服务器计算安全五个部分的安全要求,为云原生类产品厂商或甲方构建安全的云原生类产品和系统提供参考和指导。
转载自国家网安检测中心服务号