概述
数字化转型已经成为当今最流行的话题之一,大部分企业已经开启自身的数字化转型之旅,在未来企业只有数字化企业和非数字化企业之分。通过数字经济的加速发展,可以有效推动企业数字化转型的步伐。云计算作为数字化转型的底座和重要的载体,在企业中大规模的部署。
随着云计算市场规模的不断扩大,应用场景越发丰富,云计算技术也在逐年成熟和优化。从以资源为中心的云计算 1.0 时代,已跨越到了以应用为中心的云计算 2.0 时代,即云原生时代。云原生作为数字化转型的基石得到了广泛的应用,随之也带来了诸多新型安全的挑战,本文将重点介绍在云原生时代下,该注意哪些安全风险,如何进行安全体系的优化。
什么是云原生?
云原生是一种新型的云计算技术体系,也是云计算技术发展的成果和未来的趋势,不仅包括构建和运行应用程序的方法,还提供了一套技术体系和方法论。正如"原生"两字所描述的,应用程序从设计之初就考虑到了云的环境,原生为云而设计,在云上以最佳姿态运行,充分利用了云的优点,使我们的应用更灵活,更敏捷、更稳定。
图 1-IT 应用服务器发展进程
云原生带来的变化
并不是我们常说的将传统应用迁移上云,就是云原生了。而是应用都是专门针对云环境而设计开发的,能够充分利用和发挥云平台的各种优势,如敏捷、弹性扩展、高可用等。云原生包括的技术很多,如容器技术、 Devops 、微服务等技术,这也是云原生常说的三驾马车。并且支持私有云、公有云和混合云等各种环境,具备端到端、基于策略控制和工作负载可移植等能力。
云原生技术给企业数字化转型带来巨大的技术支撑契机,助推企业更好的构建数字化的底座,支撑数字化业务的发展。从最初的上云到用好云、管好云。目前云原生技术无处不在,从互联网企业到传统企业都在积极部署和实践。它的应用,直接改变了企业的开发方式、运营方式和管理模式,对企业的组织与协作方式产生了重大的影响。
图 2- 云生四要素及设计理念
云原生时代下的安全
随着云原生的快速发展与广泛应用,新的技术被引入到企业的技术架构中,如容器技术、微服务、 DevOps 、 Serverless 等。之前传统的安全防御体系已经无法适应,导致云原生应用程序面临着极大的安全风险。
云原生安全面临的挑战
首先我们要先搞清楚一个概念,传统环境下的安全问题在云原生环境下依然是存在的,比如 DDOS 攻击、数据泄露、越权、数据篡改、漏洞攻击等。但由于云原生架构可以使应用充分利用云计算的特性,传统的防御手段就显得有些捉襟见肘。因为传统安全更重视边界防护,而云原生安全更重视内在的持续安全,所以云原生环境面临的安全挑战也逐渐显现:
- 镜像安全风险:
容器作为云原生的三驾马车之一,是虚拟化的主力军,业务平台的基石。通过容器我们可以轻松实现"一次构建,随处运行"。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件。镜像本身就是一个只读的模版,包含独立的文件系统和预置的应用,可以方便的、批量的创建容器。
目前企业中应用的容器大部分是来自第三方的镜像库,比如 Docker hub 。因为他们很多是定制的、开源的,所以很大可能存在漏洞,或者被提前嵌入恶意代码。随着导入生产环境运行,就很可能成为攻击者的"跳板机",对内部环境发起攻击。
- 运行时安全风险:
在云原生架构中,一个容器内只有一个应用,简单来说就是为每个业务创建单独的容器环境,这些应用可独立地进行开发、管理,互不影响。多个容器之间进行通过 API 进行通信,导致调用关系较为复杂,资源调整较为动态,给运行时安全检测和防护带来了挑战。逃逸漏洞就是最典型的一个漏洞,黑客利用某些漏洞或者管理员的配置问题,从容器环境中跳出而获得宿主机权限。因此,一旦单个容器环境存在逃逸漏洞,可能就会导致整个集群沦陷。针对容器运行时安全的防护,同样值得安全人员警惕。
- 配置错误风险:
如果与云相关的系统、工具或资产配置有误,就会出现配置错误,进而危及系统,使其面临攻击或数据泄漏隐患。根据《 2020 年云安全报告》,配置错误是云的头号威胁, 68% 的公司表示配置错误是他们最担心的问题(高于上一年的 62% )。其次是未经授权的访问 (58%) 。如使用默认密码或无密码访问管理控制台,这一比例高达 30% 。虽然"默认密码或无密码访问"这一现象仅凭常识就可以避免,但要确保整个云基础设施都能正确配置则较为复杂。
- 应用安全风险:
众所周知,云原生的应用也源自于传统的应用,所以传统的应用风险自然也被继承了下来,如失效的对象级授权、失效的用户身份认证、注入攻击、过度的数据暴露、使用含有已知漏洞的组件、不足的日志记录和监控等风险,只是云原生更加云化,使用了大量的开源组件。从某些应用中,黑客可以找到公布的或者未公布的多个漏洞进行利用,所以说开源组件代码漏洞正在成为云原生环境中常见的风险,由此为云原生应用的安全带来了更多不确定性。
典型的攻击场景
通过上文大家对云原生和云原生安全有了一个基本认识,本章将通过两个简单的攻击场景案例对云原生安全领域场景攻击技术进行分析,帮助读者理解和提高防御能力。
镜像攻击场景
由于容器都是由镜像创建,所以镜像的所有特征均会被容器继承,如恶意代码、恶意软件、错误的配置甚至应用漏洞等。所以通过此案例,读者可以了解到镜像安全的重要性。
2021 年 6 月某单位云平台运维人员编制一段代码,用于远程调用查询服务。上线在即,镜像被批量部署。由于没有做权限方面的限制,导致数据被恶意查询。关闭关键应用后,并没有完全杜绝,通过开发分析,查到镜像自身代码原因,修改并替换容器后,漏洞被修复。
容器逃逸攻击场景
像前文所述,容器逃逸造成的安全风险和后果是非常大的,甚至可以造成整个集群的瘫痪。相比之前的虚拟机而言,容器攻击主要在隔离性上,也就是容器逃逸,从容器环境逃逸到宿主机的攻击。
CVE-2019-5736 是 2019 年 2 月 11 日在 OSS-Security 邮件列表披露的 runc 容器逃逸漏洞。在 Docker18.09.2 之前的版本中使用的 runc 版本小于 1.0-rc6 ,因此,攻击者可以重写宿主机上的 runc 二进制文件,从而以 root 的身份执行命令,获得宿主机的 root 权限。(此案例来自于某知名杂志)
通过此漏洞,攻击者就可以绕过容器直接对宿主机进行相关指令的执行,对宿主机甚至集群造成极大影响。
云原生安全架构设计
云原生技术的发展趋势越发突出,面对云原生环境中存在的一系列安全挑战和风险,各企业急需构建一套适应自身企业发展的、基于云原生全生命周期的安全防护体系架构,从而提升安全防护能力,实现业务的连续性、可靠性和稳定性运行。
云原生安全不是某一个软件、某一个系统,而是一个体系。从开发、编译、构建、运行时到运营整个环节,在宿主机、编排平台、虚拟化、应用程序等多个角度提供了全面的安全保护能力。
图 3- 云原生安全架构
云原生环境的稳定运行离不开云原生安全所倡导的体系架构,利用此架构从整个应用的生命周期中持续整合安全性的实践,确保安全性是应用程序的核心部分,最大限度地减少安全漏洞并提高合规性。
设计的原则
在云原生安全防护体系的建设过程中,需要从多个方面进行安全提升,正如云原生安全架构所示,建议遵循零信任、安全左移、持续监控 & 响应、工作负载可观测四个安全原则进行建设。
- 零信任
零信任应该是当下安全圈最火热的代名词之一,很多安全公司都在零信任方面进行研究和探索。其核心思想是"永远信任、持续认证",要求所有用户,无论是在组织内部还是外部,在被授予或保留对应用程序和数据的访问权限之前,都必须对安全配置和状态进行身份验证、授权和持续验证,杜绝了传统安全思想中,只要进入内网,再东西向访问都是安全、可信的行为,所以说它是一个保护基础设施和数据的框架。
零信任主要关注三个关键的原则:一是持续认证,始终验证所有资源的访问权限;二是限制访问的范围和影响,将影响范围降到可控范围内;三是自动收集上下文,整合安全用户访问行为,从多层面预防和简化颗粒度来确保云原生环境安全。鉴于此,企业在构建云原生安全架构的时候,一定要考虑和融入零信任体质,充分利用零信任的优势提高整体架构的安全性、降低安全复杂性和降低运行开销成本等。
- 安全左移
传统的安全防御体系更多的关注在交付运维后,当发现安全漏洞和问题,再修复的过程是很痛苦的,而且成本也较高。所以,在云原生的安全架构中更强调"早发现、早预防、早处理"。从应用的开发阶段,安全就要介入,也就是所谓的"安全左移"。在 DevSecOps 组织模式中,左移意味着在软件开发生命周期的传统线性流程中将安全流程向左移动。最常见的就是测试左移和安全左移。
通过左移,摒弃了传统上待应用开发完成后,安全团队才进行各种测试的场景。这样在应用程序开发周期中就可以更早的发现问题和修复漏洞,从而缩短开发周期,提高交付质量。安全左移,意味着在整个开发生命周期内实施安全措施,而不是在周期结束后才实施。其目标就是设计具有内生安全最佳实践的软件,并在开发过程中今早检测和修复潜在的安全问题和漏洞,从而更容易、更快速、更经济地解决安全问题。
- 持续监控 & 响应
众所周知, DevOps 是云原生的三驾马车之一,其重要性不言而喻。它是一个自动化流程,可以有效地融合开发、质量和运维三个团队的协作,加速应用程序的迭代。随着部署在云上的应用程序逐渐增多,安全问题也备受关注。
所以需要通过持续监控 & 响应的机制来跟踪和定位安全问题,给安全人员提供处理问题的必要数据,并提供有关问题的反馈,辅助安全人员分析并及时采取行动来发现安全问题。这对于实施和优化各种安全措施尤为重要,如安全事件的响应、威胁评估、数据库取证以及根本原因分析等。
- 工作负载可观测
在云原生的环境内,运行着多种软件应用、 web 服务数据库等,复杂程度不言而喻。所以梳理好云原生环境工作负载有助于安全人员了解运行的各种应用和数据库,将工作负载之间的访问关系可视化有助于进一步了解业务之间的调用关系。最终通过这样的安全观测,可以为开发和安全团队提供统一的上下文可见性,使其安全地构建、部署和运行现代动态环境中的可扩展应用程序。
云原生安全发展趋势
企业的数字化转型热度逐渐升温,是推动企业发展的重要手段,云计算技术作为数字化转型的基石和底座,得到了广泛的应用。随着技术的变更和升级,云计算已经进入 2.0 时代,即云原生时代。不得不说,云原生的发展加速了企业的数字化转型步伐,促进了企业 IT 架构及组织的变革。
云原生应用的发展和迅速普及,给云原生安全带来挑战的同时,也带来了机遇,其重要性也越来越突出。在未来,云原生的发展趋势包括以下几个方面:
- 云原生安全技术发展
云原生应用的普及已经成为趋势,越来越多的企业开始实践基于云原生的应用,在容器、微服务、 Serverless 、 DevOps 、服务网格等多种新技术的加持下,充分享受云原生带来的红利。自然云原生安全技术也就必须进行相应的升级或优化,符合新技术的发展要求。比如 5G 场景、边缘计算场景下如何确保容器的安全、镜像的安全、应用的安全等。
- 云原生安全人才培养
云原生技术对于很多公司的 IT 从业者而言还可能是个新的概念,尤其是传统企业,还需要更多的学习和认识。为了更好的运营云原生的技术平台,确保云原生应用的安全,在未来急需培养一批具有开源思想、安全运营理念的云原生安全专业人员。否则安全将成为企业推广云原生技术的一个绊脚石。
- 云原生安全标准建立
企业各自发展历史的不同,在安全方面的积淀也是有所差异。很多企业根据ISO27001 已经制定了自己的信息安全管理体系,根据等保构建了符合企业安全需要的安全风险防御体系。在云原生环境下,新的资源开始由资产变为服务,对现有的 IT 架构和安全标准提出了挑战。所以未来标准定制团队,必须根据业务的实际发展和安全的发展趋势,重新定制或升级现有的安全标准,以满足业务的连续性、稳定性运行的要求。
- 云原生安全运营
无论是云计算 1.0 还是 2.0 ,技术一直在更新,只有运营理念不变,就是 "三分建设、七分运营" 。建设仅仅是满足了有还是没有,只有运营才能解决是否有用的问题。随着各个企业在安全建设方面的投资增加,安全设备和防御能力逐渐完善,就需要安全团队将更多的能量和精力用于信息安全运营。
不得不说一下,云原生安全运营与传统的安全运营还是有一定区别的,云原生环境的不可变基础设施的属性,觉得了安全必须要具备敏捷性、灵活性的特点,不可能缝缝补补。所以在安全方面一定要参考上文所讲的架构设计原则进行合理的安全运营安排,确保安全运营工作可以更好的推动业务的落地和发展。
结束语
文章针对云原生的概念,给企业带来的变化及给云原生的安全带来的挑战和安全的架构设计进行了简单的介绍与普及。同时也阐述了云原生安全的未来发展趋势和方向。安全问题在任何时代都会有,企业需要在不同的阶段应用不同的安全方案对业务进行保护。采取有效的措施来管理和保护云环境中的应用和数据的安全。文章多次强调云原生安全是未来云安全的发展方向之一,企业 IT 必须重视并加强对其技术的研究和实践,从而确保企业应用在云环境下的安全。