乐趣区

关于kubernetes:企业如何应对云原生时代的安全挑战

本文整顿自 SUSE 平安产品策略副总裁黄飞在 SUSECON 北京 2022 开源技术峰会上的主题演讲。

一直放大的平安“边界”

应用软件倒退平台倒退线路很清晰,从最早的物理机倒退到起初的虚拟机,能够运行多个操作系统在物理机上;2014 年开始,以 Docker 为首的容器厂商把容器技术推向公众,也带动了微服务的高速倒退;到明天越来越多的企业客户甚至政府机关,开始在多云环境下部署分布式的集群服务。

从平安角度来看。在物理机时代咱们爱护一些平安的边界,这个边界能够是一个网关,能够是一个笔记本电脑,能够是个台式机,能够是个数据库,咱们在入口地位部署相应的平安性能,基本上能满足平安的需要。

在虚拟机时代,原来基于物理机的平安计划已无奈满足需要,虚拟机的平安技术计划应运而出,包含虚构网络、负载平衡、数据中心的平安、虚拟存储的平安。

微服务的呈现让平安零碎再一次面临新的挑战。具备代表性的是容器网络的扭转。容器网络是在传统的虚构网络上又加了一层虚构的容器网络,等于是网络屡次虚拟化;同时所有原来基于过程之间的通信逐步变成了所谓的服务,服务组件变成了网络上的一个节点。同时微服务节点之间的通信,甚至呈现了 sidecar 这种比拟高级的微服务利用,它的内部通信、外部通信,包含所有的数据服务都变成了一些被虚拟化了的数据服务。

一些新技术层出不穷,比方服务网格技术、多集群之间的通信、多云和混合云的技术、甚至 Serverless,这些都对平安边界提出了越来越多的要求。

我集体认为平安的边界其实是逐步减小的,从原来爱护一个微小的物理机到爱护一个虚拟机,到爱护一个小小的容器,再到爱护一个 serveless function,平安边界越来越小,甚至会逐步消失掉。

云原生环境下的平安挑战

云原生环境下的平安挑战体现在 3 个方面:

容器环境的疾速倒退。容器变动十分快,K8s、Docker 等很多容器的生命周期可能只有几十分钟甚至几分钟工夫,这段时间之内它的版本 1 的容器要不要爱护?怎么爱护?如果依然用传统办法爱护,还没有来得及制订好策略,新版本就迭代下来了。这是一个很大的平安挑战:它太快了!

传统平安工具无奈适应新的云环境。例如,有的网络防火墙架在端口地位,它无奈了解如果跨集群、跨云,所有的通信曾经加密,在底层网关节点上齐全没有方法无效感知到任何的 contacts,没法无效地爱护它。

另外传统的一些 agent based solution 会在所有节点上装 agent,然而咱们已经也看到有的厂商试图把 agent 装到所有的容器里,这仿佛是能够实现一些平安性能,然而容器作为微服务,装 agent 就与主机没有差异了。这个齐全跟容器倒退、微服务的倒退南辕北辙,从技术角度来看,我认为这是一个谬误的零碎构架。

K8s 大量采纳虚拟化技术,把数据、网络、计算全副虚拟化之后,对应用程序层来讲十分好用。基本上放一个容器下来,不须要关怀底层的构架和平台网络,就全副能够主动跑起来。然而对于平安人员的挑战就是没有可见性,不晓得这个容器到底是不是在做它应该做的事件,即虚拟化技术自身对平安管控造成了肯定的屏障。

基于 CNCF 云原生零碎构架剖析平安性能的构建

CNCF 把云原生零碎分为三大块:

  • 底层根底层,是整个云的根底构架,包含 compute resource、存储、网络、底层的操作系统和编排零碎,底层零碎当初曾经有十分成熟的平安解决方案。
  • 应用程序生命周期。当初云原生应用程序基本上从开发到提交代码、到流程管道里会主动进行代码查看、测试、包装,包装成容器而后公布,到最初的安全策略造成,整个一套是全自动化的,这个应用程序的生命周期须要有很强的平安管控。例如所谓的 supply chain,很重要的一块就是管道平安,所有安全检查须要产生在生命周期里,每个环节都要有肯定的性能。
  • 运行时的平安。咱们把应用程序和数据生产化了当前,才是真正面对挑战的时候。此时,因为程序曾经在私有云、公有云上跑了,端口曾经关上,这就意味着曾经公布于众。所有好的、坏的连贯就会产生,首先是从网络层面会试图攻打你的端口扫描、网络端口,试着去取得非法受权,试着去攻打整个云环境,试着管制运行时的容器。一旦取得了某些提权之后,就可能有一些非法拜访,比方挖矿。在云环境下,如果没有很好的运行时的监控和阻挡办法,会造成十分重大的损失,这样的例子不可胜数。

CNCF 把运行时的环境画的非常复杂,每一层都由非常复杂的模块组成,包含整个云的环境、整个云的配置。各个方面都须要做到安全检查,比如说一些 Access、存储系统的加密、明码权限要切分得十分清晰、云节点之间的安全策略、节点和节点之间的网络安全策略。

在这之上有 workload orchestration,比方 K8s 平台、Rancher 平台,这个平台应用大量的技术和性能。怎么保障你拉下来的镜像是平安的,是通过安全检查的?

再往上是应用层。云厂商没有方法治理,因为这些利用和服务是你本人开发的,或者是第三方开发的,须要你本人去治理、去运行,它是你整个企业业务最重要的服务工具,它的数据也是企业最重要的资产。云平台被攻克了还能够疾速复原,然而本人的数据被锁死、加密了,损失是十分大的。所以基本上分成这三层来构架。

平安模式的进化——零信赖

私有云疾速倒退,大家始终在探讨平安的界线到底在哪里,谁应该负责哪一块的平安。一开始,很多客户认为私有云的平安应该交给供私有云厂商,然而真实情况并非如此。

这是 AWS 对外颁布的 Security Responsibility Model,即私有云厂商只提供根底服务,只保障在它下面的数据全副加密,保障保留好所有平台的日志,以供剖析,然而并不保障你的应用程序和数据安全。

这个应用程序和数据是指应用层的。私有云为你架构了一个销售零碎,这个销售零碎里会存储所有客户信息和数据库,但 AWS 是不会负责任何平安的,它也做不到,也不了解。这就是说应用程序级别的平安是必须由各个企业用户本人负责。

这就促生了过来五六年、七八年以来平安畛域很重要的模式的进化。在传统平安计划里,咱们基本上是基于所谓的信赖、非信赖的区域管控来做平安。举个例子,你新拿到一个笔记本电脑,这个笔记本电脑就是你的平安边界,我只有在笔记本电脑上装一个杀毒软件,做定期每天中午的扫描,就认为是平安的了,这就是我信赖它扫描过的我的硬盘和软件。

然而随着云技术的深刻倒退,终端逐步变成显示配备,真正最重要的数据、流程、管道基本上都是在云那边作为服务的形式存在的,并不存在本地机器上。这就带动了 整个平安模式的进化,咱们传统的叫做被动式平安模式,新一代的叫主动式的零信赖平安模式。也就是说缺省状况下我并不信赖任何外部内部的通信和外部内部的存取,我须要有肯定的办法可能保障即便是外部过去的通信,也不是一个歹意存取,这就是所谓主动式的平安模式。

被动式平安模式策略往往基于黑名单。例如传统的防火墙,能够定义端口到端口,哪个 IP 地址能够通信,必须手动定义好,否则防火墙就不晓得怎么解决了。主动式的环境下咱们用白名单的办法。比方在容器环境下有一个数据库容器,缺省化就应该只跟外部的 web server 通信,他们之间应用了一个 certificate,能够相互认证,这就是被动平安模式,我就规定了只有领有 SCR certificate 的服务器节点可能跟我通信。

从防火墙策略的角度来讲,怎么定义这件事?在新一代的平安模式下,咱们用一种能够形容的语言,例如 K8s CRD,能够把它形容成我这个容器能够跟谁通信,所有不能认证的节点,通通回绝。这很重要,因为黑客往往攻打到运行时的容器环境时,会以某一个节点作为桥头堡,试着攻打其余的节点,他们可能共享在同一个物理机、虚拟机、平台上,他们有机会看到其余在跑的容器,因为容器网络整个是平面化的。

即便你可能攻入到某个容器或节点,也不能无效地在外部进行打探,这就是零信赖平安的基本要素。

这外面还有很多,包含 CICD 管道平安也是其中的一部分,这就引申到欧美十分火的一个概念,即 supply chain security。因为在整个应用程序的倒退周期里,在编译、制作软件的时候不可避免地须要应用到很多的开源软件包、第三方的包。怎么保障其中没有嵌入恶意程序?这就是管道 supply chain 的平安管控问题,它也是零信赖的一部分。我不置信任何从第三方拉取的、甚至本人开发人员开发的软件,我都要在肯定的安全检查之后能力认证是可用的,模块是能够被编译的,这也是一个零信赖的平安概念。

所以有很多出名剖析机构把 零信赖平安演绎为 7 个因素,基本上这 7 个因素涵盖了大中小企业甚至政府机关所须要爱护的基本要素:用户、设施、网络和环境、应用程序和服务、可视化信息收集和剖析、自动化治理和编排、数据。

如何更无效地爱护这 7 个因素?简略来说有四个要点:

  • 最小化被攻打界面。被攻打界面越大,被攻陷的可能性越大,零信赖平安是减小攻打界面十分无效的伎俩之一。
  • 实时检测和阻挡。很多安全软件能够检测到一些歹意事件的产生,检测到有人想偷取你的数据,但这些往往都是从日志里发现的,这曾经晚了,数据曾经被偷走了。须要强调的是,你要有一个平安计划可能在攻打产生的时候立即检测到,并且阻断、报警,这才是最强的爱护办法。
  • 不间断的可视化治理和合规查看。合规查看应该是全自动的,有一套零碎在管道里不停地做合规查看,产生任何事件都能在第一工夫告诉和修复。
  • 平安应该具备肯定的透明性和易用性。云原生的零碎构架非常复杂,是基于一层一层各种各样的简单的零碎构建起来的,但这并不意味着平安须要很简单。如果平安很简单、易用性越来越差,就没法适应容器技术的倒退。如果明天部署 K8s 只有几秒钟,那么平安就不能用几个小时甚至几天才部署起来、用起来,因为这个过程无奈匹配,所以平安零碎的自身要有透明性和易用性。

实现零信赖平安的四个阶段

能够理解一下 SUSE NeuVector 和 SUSE Open Zero Trust。SUSE 把整个云原生零信赖平安划分成四个阶段,并不一定要颠覆你所有的平安投资和配置,其实能够从某一个单点开始染指和部署,逐步深入,有了足够的信念和教训其实能够很快部署一套云原生环境的平安计划进去。

退出移动版