都说国内需求离容器化还远,更谈不上关注安全,喊的热闹而落地困难。但总得有些声音面向未来向前看。
在2020年Forrester IaaS安全评测中,阿里云容器安全和谷歌并列满分,技术能力领跑市场。阿里云在云计算各领域技术一直领先一步,包括云原生安全,和作为其重要组成的容器安全。
本文总结了阿里云容器安全的治理能力和经验,呈现云原生时代容器安全涌现的新特点。帮助未来的你全面理解容器安全,保护生产环境安全。
随着阿里云前进的脚印,我们首先来理解容器是什么,以及容器和云原生的关系。
理解容器第一步:云原生”大楼“的底座
2010年,云原生的概念第一次在WSO2的首席技术官Paul Fremantle的博客中被提及,其后经历了Pivotal、CNCF等机构的补充,加入了DevOps、持续交付、微服务、容器、服务网格(Service Mesh)、不可改变的基础设施、声明式API等技术,通过这些技术可以构建出高弹性、高虚拟化、高容错性、自恢复、易管理的分布式架构系统。
但随着云原生所包含的概念越来越广,任何对其的定义似乎都有管中窥豹的嫌疑。与其纠结定义的完整性,我们不妨把目光转向云原生给企业带来的好处和改变。
总结精炼四个关键词:低成本、高可用、高安全、高效率。
- 低成本
企业服务器成本和虚拟损耗大幅减少。从物理主机,到虚拟化,再到容器化,客户不必再进行线下机房管理、使用资源占用量高的虚拟机,大大节约成本。
- 高可用
优雅地解决高并发场景下容量问题。在云原生容器化时代,不封装操作系统的容器,直接运行于主机内核之上,对系统资源的占用更少。加之镜像封装的技术,可以实现其大规模自动化部署,配合分布式架构,弹性扩容能力极强。
- 高安全
攻击面减少。IDC时代,所有的应用、进程都在一台服务器上运行,一旦某个进程被恶意突破,整个主机都面临巨大的风险。而在容器架构中,单个容器中可能只有一个进程,就算被攻击突破,对主机的影响也有限。
- 高效率
云原生倡导DevSecOps理念,而容器化使得在开发过程中使用CI/CD(快速集成和快速部署)成为可能,极大地提升了应用开发和程序运行的效率。
我们不难发现,云原生和容器之间的紧密关系。可以说,容器彻底改变了企业IT基础设施的架构方式,是搭建云原生的关键。
如果说云原生是一栋高楼大厦,那么容器化便是这座大楼的底座,向上支撑分布式架构、微服务和不同工作负载,向下封装基础设施,屏蔽了底层架构的差异性,以自身镜像封装、内核共享、便利扩容等特性,构建了一栋云原生大厦。
随着企业上云率不断提升,越来越多的企业选择在生产环境中使用容器架构。
CNCF 2020年发布的报告中显示,在生产中应用容器的企业比例从去年的84%增长到今年的92%。艾瑞咨询在《中国容器云市场研究报告》中显示,2020年有84.7%的中国企业已经&计划使用容器。
但历史的经验告诉我们,所有繁荣景象之上,都悬着一把达摩克里斯之剑,Tripwire 2019年对311位IT安全专业人员进行了调研,发现60%的组织都遭遇过容器安全事故,容器的背后存在着巨大的安全隐患。
理解容器风险第二步:运输中的“集装箱”
既然容器构成了云原生这座大厦的基座,那么防护容器安全就不仅仅是防护容器的安全这么简单。
如果我们把容器看成一个个封装好的集装箱,想要让箱内的货物顺利配送到客户手上,那么从集装箱的制作、安装、打包、到运输箱子的货轮、快递配送员的安全,都需要考虑在内。
也就是说,我们需要在整体的DevSecOps的开发流程中,考虑容器的安全:
根据上图我们可以看到,在容器的全生命周期中,涉及到四个部分的安全风险:
- 基础设施
容器构建于云平台/服务器之上,硬件设施、内核、云平台的安全是容器安全的基础,基础设施安全是容器安全的第一步。
- 供应链
当基础平台安全后,开发者可以在云上建立一整套DevOps的开发流程,通过容器化来提升交付效率,那么首先需要完成容器的构建和部署。
容器内部一般分为三层,底层为BootFS文件系统,中层为镜像层,上层为可改写的容器层:
容器内部层次
容器的构建依赖于镜像,镜像由镜像库管理。在构建容器过程中只需要从镜像库中调取镜像即可。如果由于镜像库管理不当,混入了恶意镜像,或者镜像遭到损坏,有漏洞的镜像没有及时更新,镜像的认证和授权限制不足等,会给容器带来巨大的安全隐患。
容器构建完成之后,还需要对其进行正确的部署,拿容器网络来举例,在默认的-host的网络配置下,容器运行时默认可以通过网络访问其他容器及主机操作系统,一旦单个容器被入侵就可能影响到宿主机上部署的所有容器。根据StackRox的报告,配置错误恰恰是企业对于容器安全最担忧的部分。
- 容器运行时
容器构建完毕之后,依赖Cgroup、Namespace、Capability等功能在内核上实现互相隔离,并使用编排工具和容器运行时组件进行批量化管理和使用。
而编排平台,如Kubernetes、OpenShift等,存在不少高危漏洞,根据NVD(National Vulnerablity Database)的数据统计,光是K8S平台被找到的CVE漏洞就有109个,其中严重(Critical)的漏洞有10个,高危(High)的漏洞有39个,一旦使用者没有及时修复相关漏洞,就有可能被攻击者利用,威胁容器安全。
- 应用安全
当我们顺藤摸瓜一步步往上走,从基础设施层到网络层,最终到达处于最上层的应用层,也就是容器这条船上承载的一个个“货物”,较为容易遭受DDoS攻击、账号盗用、数据泄露等攻击。
除了在整体开发流程中理解容器安全外,容器本身的特性也给安全防护带去了不一样的侧重点:
1、容器隔离性差
和虚拟机基于系统的隔离不同,容器是基于进程的隔离,没有明确的安全边界, 更容易发生容器逃逸、宿主机内核遭受攻击的问题。
2、容器存活时间短
和传统的虚拟机相比,容器具有轻量级的优势,可以快速部署,快速迭代,这也意味着单个容器的存活时间也急速变短。据Datadog的数据统计,传统云虚拟机的平均生存周期是23天,而容器只有2.5天,极短的存活期导致在运行时对它进行保护变得更加困难,所以在供应链侧就要保证容器的安全。
此外,容器的更新速度也对镜像库的更新速度有了更高的要求。
3、容器部署密度高
由于大规模部署,对容器的批量化管理必然需要使用编排工具,对于编排工具、镜像库、镜像的安全保障就变得更为重要。
理解容器安全第三步:动态防护全生命周期
在对容器的生命周期进行梳理之后,我们会发现防护容器安全,其实就是防护生产环境的安全。那么在整个链路中,容器最常遭受的攻击是什么,企业应该如何防护?
阿里云从2011年即开启了探索的脚步,推进容器化的技术改造和落地,推进云原生技术,2020年完成了核心系统全面云原生化,积累了大量的实践经验,同步发布了国内首个云原生容器安全ATT&CK攻防矩阵。
汇合多年的技术积累和实战经验,为了更好地应对容器化进程中的安全挑战,阿里云认为企业的容器安全应当做到动态防护,覆盖容器全生命周期。
- 基础设施安全
大部分企业会选择在云平台上搭建容器,或直接使用容器运营商的容器服务,为了保障容器底层基础设施的安全,企业在选择云服务商时需要格外关注其安全能力:
1、云平台是否安全合规
一方面是云平台自身的安全,是否是可信的云环境;另一方是云平台合规安全,云服务商需要基于业界通用的安全合规标准,保证服务组件配置的默认安全性。
2、云平台安全能力是否强大
云平台的基础安全能力,例如主机/VM的防护、SLB访问控制、DDoS、WAF能力、CWPP/CSPM功能等。
3、云平台管理能力
版本更新和漏洞补丁的安装能力也是保证基础设施安全的基本防护措施,需要云厂商具备漏洞分级响应机制和版本升级能力。
阿里云的云平台防护能力毋庸置疑:· 通过可信芯片提供芯片级别的防护能力,保证服务器-云平台-虚拟机/容器环境的整体环境可信,实现当前技术发展阶段下最高等级安全;
· 2020年发布的108项自带安全能力的云产品,提供强大的平台安全防护能力;
· 亚太地区获得权威合规资质最多的云厂家,为客户解决云上合规问题。
- 软件供应链动态防护:采集、可视、关联分析和响应的全流程建设
由于容器的存活时间短,运行时安全防护困难增大,所以需要在供应链侧,也就是容器构建时即将安全纳入考虑范畴,实现安全左移,将DevSecOps观念纳入交付流程。
在考虑容器供应链安全时,动态思维极为关键。就容器生成的核心:镜像而言,如果存在恶意镜像或镜像漏洞没有得到及时更新,可能会造成大批量的入侵。据Prevasio 对于托管在 Docker Hub 上 400 万个容器镜像的调查统计,有 51% 的镜像存在高危漏洞;另外有 6432 个镜像被检测出包含恶意木马或挖矿程序,这些恶意镜像就已经被累计下载了 3 亿次。
为了应对供应链中的安全挑战,安全厂商需要提供实时动态的防护能力:
1、实时漏洞扫描:对镜像进行多维度深度扫描,检测CVE漏洞、SCA中间件、WebShell恶意脚本、确保镜像无漏洞;
2、镜像资产管理:获取主机镜像信息,对镜像资产进行梳理,关联镜像、仓库、主机节点,便于对镜像资产进行快速检索;
3、镜像扫描、验证:除了漏扫以外,还需对镜像的配置、CIS静态基线等内容,减少镜像配置错误;同时建立镜像加签规则,确保进入镜像库的镜像安全、无误,分发和部署中的镜像不被篡改。
4、镜像修复:目前市面上还没有较为成熟的拥有自动镜像修复能力的厂商,大部分服务商仅提供修复建议。
阿里云的安全防护能力覆盖供应链全周期。在扫描能力上,提供专人管理和维护的庞大数据库,收录10w+安全漏洞,拥有最新突发漏洞的检测能力,支持多操作系统下的漏洞扫描。同时检测时间极快,基本可以达到1min出结果。在漏洞修复能力上,提供在OS下的镜像自动修复能力,让漏洞修复更简单,降低运维人员压力。在CIS基线管理上,阿里云容器服务提交的 CIS Kubernetes benchmark for ACK 正式通过 CIS 社区组织的认证审核,成为国内首家发布 CIS Kubernetes 国际安全标准基线的云服务商。
- 运行时安全
容器运行时是用于运行容器的每个主机操作系统对应的二进制文件,用于建立和维护每个容器环境。容器进行时协调多个操作系统组件,隔离资源和资源使用量,并通过操作系统与宿主机进行交互,可以说是容器运行的保障,在这个阶段,企业需要关注:
1、容器运行时漏洞、威胁扫描
2、容器运行时网络可视化
3、容器运行时配置合规安全
阿里云对容器运行时提供两大安全保障,一个是实时威胁检测,防止容器逃逸。通过200+安全监测模型能无死角实现逃逸检测,有效监控容器运行时攻击、配置错误、AK泄露等问题;另一个是漏洞管理,全面覆盖系统漏洞、应用漏洞、应急0Day漏洞,同时SCA漏洞检测能力还覆盖生态及开源软件漏洞检查,有效降低漏洞入侵风险。
此外,阿里云安全还提供容器运行时网络连接可视化,通过Agent采集数据,实现东西、南北向网络可视化,轻松识别网络连接安全风险,同时进行配置合规检查,保证容器运行时的配置安全。
随着云原生对于计算机基础设施和应用架构的重新定义,原生安全也在进一步迭代。Gartner在其Marktet Trends中提到建设云原生安全生态,安全从原来单点式的防护开始向集成化、内生化发展。容器技术和生态的成熟,使得新的容器使用场景也在涌现,边缘计算、机器学习、大数据分析、aPaaS正在成为容器安全的新关键词。
阿里云安全也在进行容器与安全服务一站式深度整合,通过集成云安全中心、密钥管理、日志管理等安全服务,构建原生的安全能力,在DevOps流程中默认植入安全,提升整体持续集成和持续交付(CI/CD)流水线的安全和防御能力。
在云原生的挑战下,阿里云容器服务也会走在技术前线,在容器安全领域保持世界级的竞争力,为客户的应用安全保驾护航。